Генераторы C # /. NET Lexer - PullRequest
       43

Генераторы C # /. NET Lexer

11 голосов
/ 05 октября 2008

Я ищу достойный генератор лексического сканера для C # / .NET - что-то, что поддерживает символьные категории Unicode и генерирует несколько читаемый и эффективный код. Кто-нибудь знает один?


РЕДАКТИРОВАТЬ: I необходимо поддержка категорий Unicode , а не только символы Unicode. В настоящее время в одной только категории Lu (Letter, Uppercase) содержится 1421 символ, и мне нужно очень точно сопоставить множество различных категорий, и я бы не стал писать от руки наборы символов, необходимые для этого.

Кроме того, фактический код должен - это исключает вещи, которые генерируют двоичный файл, который затем используется с драйвером (т. Е. GOLD)


EDIT: ANTLR пока не поддерживает категории Unicode. Тем не менее, существует открытый выпуск , поэтому он может когда-нибудь соответствовать моим потребностям.

Ответы [ 4 ]

8 голосов
/ 05 октября 2008

GPLEX, кажется, поддерживает ваши требования.

1 голос
/ 05 октября 2008

Я согласен с @David Robbins, ANTLR, вероятно, ваш лучший выбор. Однако сгенерированному коду ANTLR действительно нужна отдельная библиотека времени выполнения, чтобы использовать сгенерированный код, потому что есть некоторый разбор строк и другие общности библиотек, на которые опирается сгенерированный код. ANTLR генерирует лексер и парсер.

На примечании стороны: ANTLR великолепен ... Я написал 400+ строковую грамматику для генерации более 10 тыс. Кодов или кода C # для эффективного синтаксического анализа языка. Это включало встроенную проверку ошибок для каждой возможной вещи, которая могла пойти не так при синтаксическом анализе языка. Попробуйте сделать это вручную, и вы никогда не будете отставать от ошибок.

1 голос
/ 05 октября 2008

На ум приходят два решения: ANTLR и Золото . ANTLR имеет основанный на графическом интерфейсе конструктор грамматики, и отличный пример проекта на C # можно найти здесь .

0 голосов
/ 11 июня 2011

Я только что нашел это

http://www.seclab.tuwien.ac.at/projects/cuplex/lex.htm

Это говорит о том, что он достаточно настраиваем для поддержки юникода; -).

Herber

...