Пытаюсь написать парсер - PullRequest
       35

Пытаюсь написать парсер

1 голос
/ 27 февраля 2011

Я пытаюсь разобрать синтаксис, используя алгоритм Shunting Yard (SY).Синтаксис включает в себя следующие команды (хотя они и многие другие!)

a + b // a and b are numbers
setxy c d //c,d can be numbers
setxy c+d b+a //all numbers

По сути, setxy - это функция, но она не ожидает никаких разделителей аргументов функции.Это делает его очень трудным (невозможным?) Через SY из-за отсутствия паренов и разделителей аргументов функции.

Любая идея, можно ли использовать SY для разбора функции без разделителей в скобках / функции-разделителя без функцииили я должен перейти к другому алгоритму разбора?Если да, какой из них вы бы порекомендовали?

Спасибо!djs22

Ответы [ 2 ]

2 голосов
/ 27 февраля 2011

Определив правильную грамматику, вы можете http://www.antlr.org/ сгенерировать парсер для вас. Будет ли это подходящее решение, зависит от ваших "домашних требований".

По крайней мере, вы можете сгенерировать его и заглянуть внутрь для некоторых подсказок.

0 голосов
/ 27 февраля 2011

Я не совсем понимаю, что вы пытаетесь сделать, но, возможно, вы могли бы использовать некоторые регулярные выражения? что вы пытаетесь сделать написать простую программу командной строки?

...