【发布时间】:2014-07-10 13:25:17
【问题描述】:
我正在尝试为 C 的子集编写解析器。
在这种简单(进一步简化)的语法上很难分析树顶的行为。
grammar Shyc
rule functionDef
type space identifier '(' ')' bloc
end
rule type
'int'
end
rule bloc
'{' '}'
end
rule identifier
[a-zA-Z] [a-zA-Z_]*
end
rule space
[\s]+
end
end
我的测试用例是“int main(){}”
而树顶的错误信息是:
error at line 1, column 9
failure reason : Expected [a-zA-Z_] at line 1, column 9 (byte 9) after
compiler.rb:25:in `parse': Parse error (RuntimeError)
from compiler.rb:73:in `<main>'enter
因此问题在于标识符规则...
treetop 的版本:1.5.3 和 Ruby 2.1.1
有什么想法吗?
【问题讨论】:
-
这对我有用(tt 1.4.10,ruby 2.0.0p353)。也许你有一个剩余的 tt 编译的 .rb 文件阻止你加载最新的 .treetop 文件?我以前也被它咬过。
-
也适用于我,可能是您的文件设置方式有问题。