我要求 gplex ,但可能是这种情况,问题的解决方案适用于其他lex派生工具。
我写了所有规则,一切都很好,有一个例外。生成的扫描程序的scan
方法的类型是int
,我想成为MySymbol
(其中包含令牌的ID - INT,STR,PLUS,所以on,它的值,以及文件中的可能位置。)
我检查了样本(不是很多),但它们非常简单,只是写出事实规则是匹配的,我已阅读手册,但它从解析器的角度出发,现在我有点迷失
我在lex
档案中的一条规则:
while { return new MySymbol(MyTokens.WHILE); }
我现在所有的都是扫描阶段,我必须完成它,然后我会考虑解析器。
答案 0 :(得分:0)
Yacc和类似Yacc的工具(这里是GPLex)依赖于副作用。通常你可以考虑返回数据,但是这里你要返回令牌id,任何额外的数据都必须通过yyval
之类的特殊变量“传递”。