[erlang-questions] Question of yecc
Solomon
solomon.wzs@REDACTED
Thu Nov 15 08:10:49 CET 2012
I want to write a parser to parse the string like this:
a.id = b.id
a.id = 10
My yrl file like this:
*Nonterminals
val expr alias field.
Terminals
'=' '>' '>=' '<=' '<' '!=' '.' 'atom'
'num'.
Rootsymbol
expr.
expr->val '=' val:['$1', '$3', {'opt', '='}].
expr->val '>' val:['$1', '$3', {'opt', '>'}].
expr->val '>=' val:['$1', '$3', {'opt', '>='}].
expr->val '<' val:['$1', '$3', {'opt', '<'}].
expr->val '<=' val:['$1', '$3', {'opt', '<='}].
expr->val '!=' val:['$1', '$3', {'opt', '!='}].
val->alias '.' field:{'$1', '$3'}.
val->num:{'num', '$1'}.
alias->atom:{'alias', '$1'}.
field->atom:{'field', '$1'}.*
it is ok for "a.id=b.id":
*{ok,[{{alias,{atom,1,a}},{field,{atom,1,id}}},
{{alias,{atom,1,b}},{field,{atom,1,id}}},
{opt,'='}]}*
and it is ok for "a.id=b":*
{ok,[{{alias,{atom,1,a}},{field,{atom,1,id}}},
{num,{atom,1,a}},
{opt,'='}]}*
but it error for "a.id=12":
*{error,{1,my_parser,["syntax error before: ","12"]}}*
what is wrong with my yrl file?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20121115/1cbe2d62/attachment.htm>
More information about the erlang-questions
mailing list