Учебник по информатике способ выполнения синтаксического анализа текста / xml / чего угодно

StackOverflow https://stackoverflow.com/questions/150937

Вопрос

Это уже некоторое время вертится у меня в голове.

У меня было некоторое исследование по компиляторам / Flex / Byson и прочему, но я так и не нашел хорошей ссылки, в которой подробно рассказывалось бы о "стеке синтаксического анализа" или о том, как его реализовать.

Кто-нибудь знает хорошие рекомендации, по которым я мог бы наверстать упущенное?

Редактировать:Я действительно ценю все ссылки на компилятор, и я собираюсь привести некоторые из перечисленных книг, но мое основное внимание было сосредоточено на самом синтаксическом анализе, а не на том, что вы делаете с ним после.

Это было полезно?

Решение

Это в ответ на ответ Димы, который вы приняли за правильный.Хотя утверждение о том, что синтаксический анализ связан с теорией автоматов, является неплохим ответом, я чувствую, что здесь есть некоторое недоразумение.

  • Во-первых, конечные автоматы способны распознавать только обычные языки (например,регулярные выражения).Для распознавания контекстно-свободных языков вам необходимо нажимные автоматы, который является более мощным.Видишь http://en.wikipedia.org/wiki/Automata_theory#Classes_of_automata подробнее об автоматах и их связи с различными классами языков.

  • Во - вторых, синтаксический анализ отличается от распознавание.Распознавание строки только говорит вам, написана ли эта строка на языке, сгенерированном вашей грамматикой.Целью синтаксического анализатора является создание конкретного синтаксического дерева, которое является одновременно более сложным и в целом более полезным.

Существует большое разнообразие методов синтаксического анализа, поэтому трудно дать вам одну конкретную ссылку, которая расскажет вам то, что вам нужно знать...В общем, вы должны понимать разницу между синтаксический анализ сверху вниз и анализ снизу вверх.Но вот обзор нескольких распространенных методов, используемых генераторами синтаксических анализаторов, на случай, если вам интересно:

Редактировать: Я прошу прощения за то, что снова задаю этот вопрос, я только что случайно наткнулся на два отличных поста, описывающих взаимосвязь между регулярные языки и конечные автоматы, контекстно-свободные языки и нажимные автоматы.Может быть интересно людям, которым интересен этот вопрос.

Другие советы

Тот Самый Книга дракона!Я использовал его совсем недавно, чтобы написать компилятор (на PHP!) для языка обработки файлов шаблонов, написанных в RTF...

Синтаксический анализатор - это, по сути, конечный автомат, он же конечный автомат.Вам следует найти книгу по теории вычислений, в которой обсуждаются конечные автоматы и такие вещи, как обычные языки, контекстно-свободные языки и т.д.

попробуй амазонка

Построение компилятора это всего лишь один хороший пример

Ознакомьтесь с "Бринч Хансен о компиляторах Pascal"..она была написана в 1985 году, но я использовал ее в прошлом году для курса по компиляторам (конечно, Пера Бринча Хансена.) и нашел ее очень краткой и полезной для разработки компилятора.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top