Lex / Yacc для C #? - PullRequest
       103

Lex / Yacc для C #?

20 голосов
/ 12 февраля 2009

На самом деле, возможно, не полноценный Лекс / Як. Я реализую интерфейс интерпретатора команд для администрирования веб-приложения. Я ищу что-то, что возьмет определение грамматики и превратит его в парсер, который напрямую вызывает методы для моего объекта. Аналогично тому, как ASP.NET MVC может выяснить, какой метод контроллера вызывать и как определить аргументы.

Итак, если пользователь вводит «create foo» в моей командной строке, он должен прозрачно вызвать метод:

private void Create(string id) { /* ... */ }

О, и если бы он мог генерировать текст справки из (например) атрибутов этих методов контроллера, это тоже было бы здорово.

Ответы [ 12 ]

1 голос
/ 13 декабря 2012

Только для записи, реализация лексера и парсера LALR в C # для C #:

http://code.google.com/p/naive-language-tools/

Он должен быть похож на использование с Lex / Yacc, однако эти инструменты (NLT) не являются генераторами! Таким образом, забудьте о скорости.

1 голос
/ 12 февраля 2009

Как сказал Антон, PowerShell - это, вероятно, верный путь. Если вам нужна реализация lex / yacc, тогда Malcolm Crowe имеет хороший набор.

Редактировать: Прямая ссылка на инструменты компилятора

...