2009-11-22 4 views
0

Я уже пытался разработать языки с использованием C и C++, но как я могу создать интерпретируемый язык с помощью C#? Благодарю.Как создать интерпретируемый язык с помощью C#?

PS: Я хочу создать его для работы на устройствах Windows Mobile.

+1

Вы уже указали на http://stackoverflow.com/questions/1669/learning-to-write-a-compiler, в своем предыдущем вопросе здесь: http://stackoverflow.com/questions/1694565/ это-там любой путь-к-Create-A-истолковано язык-замкнутые. Вы действительно думаете, что язык реализации имеет большое значение для ответа? – dmckee

ответ

2

Вы, кажется, знакомы со строительством компилятором, так что я буду просто указать на инструменты: MPLEX и MPPG соответственно сканер и парсер генераторы, которые генерируют много, что вам нужно, чтобы построить компилятор или интерпретатор, использующий язык C#.

Кажется, что больше документации можно найти в .NET SDK, но у меня ее нет под рукой, поэтому я просто оставлю указатель на MSDN.

+0

Большое спасибо за ваши показания! –

3

Ну ... что вы пробовали в C и C++?

Разработка языка - это не совсем детская игра. Вы понимаете лексический анализ? Вы понимаете разные типы парсеров? Где парсер LR может быть более подходящим, чем парсер LALR? Или наоборот? Вы понимаете контекстно-свободные грамматики? Обычные выражения?

Это даже не начинает охватывать генерацию кода, оптимизацию и т. Д. (Что может не все относиться к интерпретируемому языку, но вы все равно захотите узнать что-то о них до вас нырнуть в).

+0

Я хочу создать его для работы на устройствах Windows Mobile, затем я хочу знать о парсерах и лексическом анализе. –

+2

Я думаю, вы должны сначала узнать о лексическом анализе и парсерах, прежде чем беспокоиться о части Windows Mobile. Это основы. Вам нужно знать их, если вы собираетесь подготовить хорошего переводчика. –

+0

Спасибо за советы, я собираюсь это сделать;) –

2

Если вы хотите, чтобы интерпретируемый язык, развивающий его для C#, ничем не отличался от его разработки на C или C++.

Если вы хотите скомпилировать (.Net) скомпилированный язык, тогда .Net предлагает множество возможностей через System.Reflection.Emit.

+0

Reflection.Emit не существует в COmpact Framework. – ctacke

Смежные вопросы