我正在尝试测试GOLD解析器网站上提供的ANSI-C语法。我似乎甚至不能完整地解析最小的C文件。
示例:
int test_inc1(void)
{
int t;
t = 2 + 2;
return 0;
}它查找int作为类型,然后test_inc1作为Id,然后正确组合,但在第二个之后),它期望的是;而不是{。所以它抛出了一个语法错误。我对这些语法新奇的东西还很陌生。我只想把我的代码解析成一个AST :(
发布于 2011-10-19 05:08:06
根据语法,第一行可以是<Func Proto>,如果它以分号结尾:
<Func Proto> ::= <Func ID> '(' <Types> ')' ';'
| <Func ID> '(' <Params> ')' ';'
| <Func ID> '(' ')' ';'对于解析函数声明,引用的语法的结果应该与括号之间的部分匹配:
<Param> ::= const <Type> ID
| <Type> ID对于<Type>来说,void是可以的,但是语法所要求的ID并不存在。
但是语法也包含这样的提示:
! Note: This is an ad hoc version of the language. If there are any flaws,
! please visit the contact page and tell me.因此,可能不应该太认真地对待它。
https://stackoverflow.com/questions/7040377
复制相似问题