Компилятор компилятора в C#

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

кроме того, если Ваше определение класса достаточно долго для упорядочивания объектов для имения значение очень, это, вероятно, запах кода указание, что класс является слишком большим и сложным, и необходимо осуществить рефакторинг.

8
задан 14 July 2009 в 10:23
поделиться

7 ответов

I like ANTLR, it supports C# as well as Java, Python, C, etc etc. The pros of using ANTLR arethe very good documentation (examples, books, tutorials, etc) and wide usage.

6
ответ дан 5 December 2019 в 08:00
поделиться

Это Ирония . Обязательно прочтите обсуждение, потому что там много всего происходит. Используйте старую ноябрьскую версию или самую последнюю, но затем убедитесь, что вы понимаете, что в этом выпуске, а что нет.

Для большинства вещей ноябрьский выпуск должен работать хорошо (используя его в домашнем проекте).

Irony позволяет построить абстрактное синтаксическое дерево (AST) из любой грамматики, которую вы можете определить непосредственно в коде C #. Он также поддерживает оценку (то есть интерпретацию кода), и из него даже не сложно построить код. Или, ну, преобразовать его в DLR (динамическая среда выполнения) AST.

8
ответ дан 5 December 2019 в 08:00
поделиться

Вот несколько вещей, которые вы, возможно, захотите использовать:

8
ответ дан 5 December 2019 в 08:00
поделиться

Из здесь :

LINQPad использует ряд сторонних компоненты в пользовательском интерфейсе. Запрос редактор использует SyntaxEditor от Actipro контроль (очень отполированный продукт); то Функции "IntelliSense" полагаются на сочетание библиотек от Actipro Программное обеспечение и ICSharpCode (из SharpDevelop project).

Я не использовал ни один из продуктов, упомянутых в этом отрывке (кроме LINQPad - который я настоятельно рекомендую!), Но подумал, что это может привести вас в правильном направлении.

0
ответ дан 5 December 2019 в 08:00
поделиться

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

Если ваш ввод представляет собой фрагмент сложного языка (например, вы хотите принять строку кода C #), вам понадобится более надежный синтаксический анализатор, и рекомендуется генератор синтаксического анализатора.

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

0
ответ дан 5 December 2019 в 08:00
поделиться

Я использовал QWhale .NET Editor. Это не бесплатно, но неплохо.

-1
ответ дан 5 December 2019 в 08:00
поделиться

Я использую парсер рекурсивного спуска, который объединяет синтаксический анализ и лексирование, которые я написал с нуля на C # в моем собственном языковом проекте. Я обнаружил, что с ним относительно легко писать правила грамматики. См. здесь для примера грамматики и см. здесь для модульных тестов .

0
ответ дан 5 December 2019 в 08:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: