flex如何处理模糊的模式

时间:2016-11-08 10:44:01

标签: flex-lexer lex

我想用flex来处理模式。在这种情况下,常量和函数名称都是以大写字母开头的字母字符串。 例如,在 Mother(Liz, Bob),我如何区分MotherLiz? 我希望(成为单个令牌,因此我不能将Mother(视为模式。

1 个答案:

答案 0 :(得分:1)

通常,不必为不同类型的标识符生成不同的令牌类型。如果可以在语法上区分不同的用途,则解析器不应该需要区分。 (如果你需要语义信息来区分,如果没有这些信息,句子可能是模糊的,那么你可能需要语义反馈,但这似乎不是这里的情况。)

如果您没有解析器,则需要进行一些语法分析。例如,假设函数名称​​始终后跟( - 这意味着您的语言不允许更高阶函数。然后你可以在yylex周围编写一个包装器,它会提前读取一个令牌并发出FUNCTION_NAMECONSTANT_NAME,具体取决于以下令牌。