我正在尝试为 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
因此,问题在于标识符规则......
树顶的版本:1.5.3 和 Ruby 2.1.1
任何想法 ?