myfunc1()、、myfunc2(param1)およびmyfunc3(param1, param2)(パラメーターの量が不明な)などの式を解析できるパーサーを作成しています。今、私は自分の解析式を正しくしようとしています。レモンパーサージェネレーターを使用しています。これが私が思いついたものです:
application(res) ::= APPLICATIONNAME(a) BRACE_OPEN params BRACE_CLOSE. {res = a;}
application(res) ::= APPLICATIONNAME(a) BRACE_OPEN BRACE_CLOSE. {res = a;}
params ::= PARAM(p). {res = p;}
params ::= SEPARATOR.
今のところ、中括弧の内容は気にしないでください。定義では、空のparamsパラメータ(次々にいくつかの区切り文字)が許可されていますが、現時点では問題ありません。しかし、空でないパラメーターを強制するために定義を変更する必要がありますが、それでもすべてのパラメーターはSEPARATORトークンで区切られていますか?