我正在尝试为利用关键字对(由空格分隔)的文件类型编写解析器,并且正在以正确的方式挣扎。令牌的一些例子可能是:确定lex中的关键字对
angle spring
angle dampen
angle collision
也有结束该块,例如块定义和标记:
dynamics
angle spring 1.0
angle dampen 0.0
angle collision 0.0
some 1 2 3
more ['stuff' 'here']
tokens "values can be strings, paths, etc"
end dynamics
换行似乎是显著,我一直在使用它来确定如果我正在查看关键字或只是一个普通的旧字符串(关键字应该是每行中的第一个标记)。我以正确的方式接近这个吗?我是否应该在yacc阶段将所有内容标记为一对并更严格地定义配对?
谢谢你的时间!
我不明白问题在哪里。标记时只需使用正则表达式'angle \ spring',并且解析器不需要知道它实际上使用了空格。如果间距可以是任意的,你可以使用像'angle \ s + spring'这样的正则表达式来定义关键词标记。如果这不是你想要的,你应该用一个例子来澄清你的意思。 – Bakuriu 2014-10-27 20:22:23
我遵循ply文档(http://www.dabeaz.com/ply/ply.html,4.3标记规范)中描述的保留关键字示例,该示例在决定它是只是一个字符串。我想为所有使用空格的令牌创建特殊规则? – spencewah 2014-10-27 20:26:02