我正在使用 Yacc 编写编译器,但无法弄清楚如何编写产品来匹配函数。在我的语言中,函数是这样定义的:
function foo(a, b, c);
我创建了 lex 模式以将单词 function 与 FUNC 匹配,并将任何 C 样式名称与 NAME 匹配。
理想情况下,我想要这样的东西:
FUNC NAME OBRACKET NAME (COMMA NAME)* CBRACKET
这将允许在 NAME 和 CBRACKET 之间存在一些未知数量的 COMMA NAME 对。
另外,我怎么知道它找到了多少?