我正在用Yacc編寫一個編譯器,並且很難弄清楚如何編寫生成以匹配函數。在我的語言,函數的定義是這樣的:Yacc - 用於匹配函數的生成
function foo(a, b, c);
我創建的lex模式來匹配單詞功能FUNC,和任何C風格的名字來命名。
理想情況下,我想是這樣的:
FUNC NAME OBRACKET NAME (COMMA NAME)* CBRACKET
這將允許在名稱和CBRACKET之間的一些數目不詳的雙逗號NAME的。
此外,我怎麼知道它找到了多少?
我們可以用正確的術語請。 '生產',而不是'模式'。 – EJP