我正在尝试测试GOLD Parser网站上提供的ANSI-C语法。 我似乎无法完全解析最小的C文件。
示例:
int test_inc1(void)
{
int t;
t = 2 + 2;
return 0;
}
它将int作为一个类型,然后将test_inc1作为Id,然后正确地进行parantheses但是在第二个之后),它期待a;代替 {。所以它会引发语法错误。 我对所有这些语法的时髦性都很陌生。我只想将我的代码解析为AST:(
答案 0 :(得分:1)
根据语法,第一行可以是<Func Proto>
,如果它以分号结束:
<Func Proto> ::= <Func ID> '(' <Types> ')' ';'
| <Func ID> '(' <Params> ')' ';'
| <Func ID> '(' ')' ';'
对于解析函数声明,引用语法中的这个生成应该与括号之间的部分匹配:
<Param> ::= const <Type> ID
| <Type> ID
void
对<Type>
没问题,但语法要求的ID
不存在。
但语法也包含这个提示:
! Note: This is an ad hoc version of the language. If there are any flaws,
! please visit the contact page and tell me.
因此不应该过于认真。