[Ometa] matching parameter values as literals
Alessandro Warth
alexwarth at gmail.com
Wed Aug 4 19:26:14 PDT 2010
Hi Mark,
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 t=
he
> rule *named* param, but how do I match the actual value of param as if it
> were a literal?
>
Yep, that's what the "exactly" rule is for. For example, exactly(5) will
succeed if the next object on the input stream is a 5, and fail otherwise.
> For example, take the following contrived rule schema:
> num42toA =3D 42 -> 'A'
> num43toB =3D 43 -> 'B'
>
> If some function literal(x) existed, one might generalize a higher-order
> rule:
> num integer:x char:result =3D literal(x) -> result
>
That's just right, except you should use "exactly" instead of "literal".
> 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 =
=3D=3D
> 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 alas, it's
> hand-coded in Javascript in parser.js, not in OMeta syntax.
>
> If my literal() function existed, I'd imagine 'token' would be defined as:
> token string:t =3D spaces* literal(t) -> t
>
Not quite. This would match a string on the input stream, but what you want
in this case is to match a sequence of characters, So "token" is actually
implemented like this:
token :x =3D spaces seq(x)
(BTW, "spaces" is already equivalent to space*, so it shouldn't be followed
by a Kleene-*)
Cheers,
Alex
Does such a function exist and I'm just missing it? Or am I on the wrong
> track here?
>
> Thanks,
> Mark
>
> 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
>
>
> _______________________________________________
> OMeta mailing list
> OMeta at vpri.org
> http://vpri.org/mailman/listinfo/ometa
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://vpri.org/pipermail/ometa/attachments/20100804/bd887e5a/attachme=
nt.htm
More information about the OMeta
mailing list