2008-09-29 16 views
3

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

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

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

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

ответ

3

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

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

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

Там есть большое разнообразие методов синтаксического анализа там, так что трудно дать вам одну конкретную ссылку, которая расскажет вам, что вам нужно знать ... В общем, вы должны понимать разницу между top-down parsing и bottom-up parsing ,Но вот обзор нескольких распространенных методов, используемых синтаксических анализаторов генераторов в случае, если вы заинтересованы:

EDIT: Я прошу прощения за то натыкаясь на этот вопрос еще раз, я только что произошло через два превосходных сообщений, описывающих отношения между regular languages and finite automata, context-free languages and push-down automata. Может быть интересно для людей, которые находят этот вопрос.

+0

Действительно, ваш ответ намного полезнее. – 2011-04-25 21:14:25

0

попробовать amazon

компиляторов только один хороший пример

10

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

0

Отметьте «Brinch Hansen on Pascal Compilers» .. он был написан в 1985 году, но я использовал его в прошлом году для курса по компиляторам (по словам Пер Бринча Хансена). Он нашел его очень кратким и полезным для разработки компилятора.

1

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

+0

FSM может распознавать обычный язык, но вам нужен КПК для распознавания контекстно-ориентированного языка. Кроме того, автоматы только * распознают * строку на языке, который он не переводит * в дерево синтаксиса. – 2011-04-22 20:34:21