标签: java parsing parser-combinators jparsec
我有一个语言解析器,如下所示:
[nodeType OPTIONAL STUFF]
有一些节点类型,例如“ask”和“set”,因此目前ask和set被定义为关键字。这会导致解析器的其他部分出现问题。
ask
set
有没有办法定义只接受包含特定文本的令牌的令牌解析器?
答案 0 :(得分:0)
是。您可以查看Terminals类,Tutorial中也对此进行了解释。
实际上,jparsec结合了传统上用lex和yacc分隔的两个解析过程:词法分析阶段(例如Terminals)解析String并返回{{1}的流} s,句法分析(其他Token实例)解析Parser s的流并解释它们,通常构建AST或直接嵌入语义。
Terminals
String
Token
Parser