GOLD Parser:ANSI-C语法实际上没有解析ANSI-C?

时间:2011-08-12 12:54:56

标签: grammar gold-parser

我正在尝试测试GOLD Parser网站上提供的ANSI-C语法。 我似乎无法完全解析最小的C文件。

示例:

int test_inc1(void)
{
  int t;
  t = 2 + 2;
  return 0;
}

它将int作为一个类型,然后将test_inc1作为Id,然后正确地进行parantheses但是在第二个之后),它期待a;代替 {。所以它会引发语法错误。 我对所有这些语法的时髦性都很陌生。我只想将我的代码解析为AST:(

1 个答案:

答案 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.

因此不应该过于认真。