Как мне реализовать синтаксический анализ, используя приоритет оператора? - PullRequest
2 голосов
/ 12 ноября 2010

Я хочу реализовать синтаксический анализ, используя приоритет оператора.Я реализовал +, -, * и /.Как бы я реализовал отдых без использования какой-либо грамматики?Это проект колледжа, и якк или бизон не допускаются.

Ответы [ 3 ]

2 голосов
/ 12 ноября 2010

Вам нужен парсер рекурсивного спуска (потому что это единственный парсер, который можно легко написать вручную).Подробности смотрите в Википедии, это довольно просто.

Итак, чтобы правильно определить приоритет оператора, вы можете сделать что-то вроде этого:

term = number
unary = ('-' | '+')* term
multiplication = unary ('*' | '/' unary)*
addition = multiplication ('+' | '-' multiplication)*
expression = addition

Где 'выражение' - это ваше начальное правило.

1 голос
/ 12 ноября 2010

Так как вам не разрешено использовать генератор парсеров. Я бы порекомендовал прочитать про парсер рекурсивного спуска . Очень хорошее введение включено в Книгу Дракона

0 голосов
/ 18 января 2011

Если вам нужно быстрое исправление:

http://www.codecodex.com/wiki/index.php?title=Recursive_descent_parsing

более подробное чтение:

Базовая конструкция компилятора

GLHF!

...