据我所知:
我即将为我正在研究的简单解析器生成器实现词法分析器。我会这样建立词法分析器:
然后如果词法分析器即将lex一个令牌,实现将:
(并将包含匹配字符串的feed终端提供给解析器)。
当语言相交时至少定义了两个终端时,问题就出现了。考虑以下终端:
Name = [a-z0-9]+
Number = [0-9]+
因此number
的语言实际上是name
的子语言。
如果词法分析器即将分析字符串123
,则下一个标记可以是名称或一个数字。
我的设计出了什么问题?或者是否需要为解析器提供多个可能的终端?