Я пишу парсер, который может анализировать выражения типа myfunc1()
, myfunc2(param1)
и myfunc3(param1, param2)
(с неизвестным количеством параметров).Теперь я пытаюсь получить правильные выражения синтаксического анализа.Я использую Lemon Parser Generator .Вот что я придумал:
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
?