Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как понять синтаксический анализатор?

Евгения Ученик (103), закрыт 4 года назад
У меня есть язык программирования ("выдуманный"), необходимо реализовать синтаксический анализатор с помощью LL(2) грамматики (лексический анализ проведен). Не понимаю что должен делать синтаксический анализатор с грамматикой и суть синтаксического анализа. Есть ли хорошая литература с описанием, примерами или простыми словами объясните, пожалуйста ?
Лучший ответ
Лапушка Искусственный Интеллект (122855) 4 года назад
Анализатор пунктуации и синтаксиса.
Остальные ответы
Алексей Кузьминов Мудрец (11132) 4 года назад
Синтаксический анализ это:
- создание некоторых структур внутри программы, которые отражают анализируемый текст.
- определение наличия ошибки в тексте, конкретизация ошибки и определение места, на которое эта ошибка влияет, чтобы вывести внятное сообщение и продолжить со следующего места.

Например тест "1 + 2 * 3" может преобразоваться в список 2 | 3 | '*' | 1 | '+' . Здесь числа просто помещаются в стек, а '+' и '*' снимают 2 числа со стека, складывают/умножают и кладут результат на стек.

Писать синтаксические анализаторы самому при наличии средств типа YACC, который достаточно подробно и доступно описан в сети, - разновидность мазохизма.
TimKruzМастер (2341) 4 года назад
> при наличии средств типа YACC
YACC же генерирует код на C, а если компилятор пишется не на C-подобном ЯП?
Всё равно придётся вручную переписывать генерированный код на свой ЯП...
TimKruz Мастер (2341) Я хочу сказать, если планируется производить раскрутку компилятора, то ни о каких кодогенераторах на Си можно не мечтать, потому что придётся переписывать всё с нуля на своём же языке. И ещё вопрос, будет ли проще переписывать сгенерированный код или писать самостоятельно...
Niis Просветленный (39554) 4 года назад
Должен построить синтаксическое дерево (или какое-то другое представление) написанной программы в соответствии с твоей грамматикой. По сути, определить чем является тот или иной набор токенов (объявление переменной, выражение, вызов функции, еще что-то). После по этому промежуточному представлению генерируется код.
Похожие вопросы