如何在词法分析器中生成自定义符号流而不是int?

时间:2012-10-25 17:48:45

标签: lex symbols

我要求 gplex ,但可能是这种情况,问题的解决方案适用于其他lex派生工具。

我写了所有规则,一切都很好,有一个例外。生成的扫描程序的scan方法的类型是int,我想成为MySymbol(其中包含令牌的ID - INT,STR,PLUS,所以on,它的值,以及文件中的可能位置。)

我检查了样本(不是很多),但它们非常简单,只是写出事实规则是匹配的,我已阅读手册,但它从解析器的角度出发,现在我有点迷失

我在lex档案中的一条规则:

while { return new MySymbol(MyTokens.WHILE); }

我现在所有的都是扫描阶段,我必须完成它,然后我会考虑解析器。

1 个答案:

答案 0 :(得分:0)

Yacc和类似Yacc的工具(这里是GPLex)依赖于副作用。通常你可以考虑返回数据,但是这里你要返回令牌id,任何额外的数据都必须通过yyval之类的特殊变量“传递”。