Я пишу синтаксический анализатор, чем может анализировать выражения типа 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
?
Если я хочу разрешить пустые параметры, добавлю ли строки params :: = SEPARATOR? – chiborg