我花了几个小时尽力为解析简单的“hello + world”的柠檬解析器(分别是 PEAR 的 PHP_LexerGenerator)创建一个 y 文件。
我使用了这个(德语)教程,是的,有一个计算器教程很好,但最后,我想解析一些更复杂的东西(使用“变量”)。
这种“语言”解析/标记“hello + world”的定义是什么?
这是我尝试过的许多其他事情之一:
/* %name, %declare_class, %token_prefix, %syntax_error, .. removed */
%left S.
%left PLUS MINUS.
%right IDENT.
start(res) ::= expression(expr). { res = expr; }
/* The common stuff */
expression(res) ::= expression(e1) PLUS expression(t2). { res = e1+t2; }
expression(res) ::= expression(e1) MINUS expression(t2). { res = e1-t2; }
expression(res) ::= NUMBER(n). { res = n; }
expression(res) ::= IDENT(n). { res = (n * 0) + 99; }
除了 IDENT,我还尝试了 VALUE、string、... 甚至SQLite/parser.y 文件都没有帮助我。
谢谢你的帮助。