[Ometa] matching parameter values as literals
Mark J. Nelson
mnelson at cc.gatech.edu
Wed Aug 4 16:53:48 PDT 2010
This might be something obvious I'm overlooking, but I wasn't able to
figure out how to do it:
Is there a way for a rule to take a parameter and match its value
against the input stream? I know apply(param) will take the parameter
and match the rule *named* param, but how do I match the actual value of
param as if it were a literal?
For example, take the following contrived rule schema:
num42toA = 42 -> 'A'
num43toB = 43 -> 'B'
If some function literal(x) existed, one might generalize a higher-order
num integer:x char:result = literal(x) -> result
Of course, this particular example could be rewritten in more of a
generate-and-test style, with a match against integer:y followed by ?(y
== x), but I'm wondering if there's a way to do it directly. The
built-in 'token' function looks like it must do this for strings, but
If my literal() function existed, I'd imagine 'token' would be defined as:
token string:t = spaces* literal(t) -> t
Does such a function exist and I'm just missing it? Or am I on the wrong
P.S. - Apart from still working out all the details, and attempting to
get somewhat proficient at debugging grammars (i.e. more proficient than
not at all), I'm quite liking OMeta so far.
Mark J. Nelson | http://www.cc.gatech.edu/~mnelson/
Researcher, Expressive Intelligence Studio, UC Santa Cruz
PhD student, School of Interactive Computing, Georgia Tech
More information about the OMeta