Parser Как в .NET

Я хотел бы понять, как построить парсер в .NET для обработки исходных файлов. Например, может быть, я мог бы начать с изучения того, как анализировать SQL или HTML или CSS, а затем действовать по результатам, чтобы иметь возможность форматировать их для чтения или что-то подобное.

Где я могу узнать, как это сделать? Есть ли конкретные книги, на которые я могу ссылаться? Мне нужно узнать о lexers/parsers?

В частности, для платформы .NET, так как мне удобно в С#.

Ответ 1

Я лично нашел эту статью, Грамматики и парсинг с С# 2.0, отличное введение при написании лексеров/парсеров, примеры которых относятся к С#.

Я недавно написал короткое сообщение в блоге об этом, хвалить. Приятно, что он очень нацелен на то, чтобы начинающие анализировали теорию (она дает основание для теории, а также ее реализацию), и она принимает решения постепенно. Конечно, если вы хотите продолжить изучение более продвинутых идей в этой области, вам понадобятся различные другие ресурсы, но я думаю, что это отличная основа.

Ответ 2

Если вы хотите научиться писать парсер, это может быть не ваш ответ, но если вы просто хотите проанализировать и работать с результатами анализа, вы должны окончательно взглянуть на Irony.net. Это инструментарий, который помогает реализовать языки (с .NET).

Ответ 3

ANTLR:)

его хороший способ узнать о грамматистах и ​​парсерах

Ответ 4

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

Вот учебник о том, как создать интерпретатор в С# 4.0 на CodeProject.com.

Ответ 5

даже жесткий, это может выглядеть немного слишком продвинутым, взгляните на монодичный комбинатор парсеров. Там отличный блог на LukeH WebLog здесь:

http://blogs.msdn.com/lukeh/archive/2007/08/19/monadic-parser-combinators-using-c-3-0.aspx

Как только вы освоите основы, он сделает очень четкие определения парсера.

Ответ 6

Лучшая книга, которую я прочитал для изучения идиом разбора, - "Маленькие Языки"

Маленькие Языки на Амазонке

Если вы можете получить исходный код .NET для System.Text.RegularExpressions, вы также увидите реалистичную реализацию создания парсера в реальном мире.

У Джастина Роджерса есть отличные статьи о том, как создавать общие парсеры в своем блоге:

Блог Justin

И, наконец, если вы хотите войти в новый мир парсеров и грамматик, вам действительно нужно читать "Осло" и как использовать язык M и MGrammar. Они принесут вам большую гибкость при анализе и преобразовании полученного графа объекта в другие используемые формы.

Статьи Justin, вероятно, самые простые и простые, чтобы встать и работать с сырым парсером, который построен поверх .NET.