описание моей проблемы заключается в создании:
- Парсер С#
- составить дерево AST из проанализированного входного файла .cs
- создать представление CIL/байт-кода программы
- создать виртуальную машину
- выполнить код, хранящийся как "байт-код" - заставить работать проанализированную программу
Так что в основном мне нужно написать свой собственный язык со всеми «вещами».
Я напишу пример программы, которую хочу запустить. Я знаю, как создать синтаксический анализатор C# для обработки этой программы и составления дерева AST.
Я также нашел ссылку на CIL http://en.csharp-online.net/CIL_Instruction_Set, поэтому Я могу сохранить свой AST как код CIL (надеюсь, проблем не будет). Но мой вопрос в том, как я могу протестировать этот CIL, прежде чем у меня будет моя виртуальная машина? Могу ли я использовать С# CLR? И как?
Как я могу создать виртуальную машину, выполняющую инструкции CIL на C#? Могу ли я «заставить» программу С# запускать инструкции CIL?
Верна ли моя идея, шаги? Следует ли мне избегать записи AST в байт-код с использованием инструкций CIL?
Мои идеи были вдохновлены .NET http://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/CLR_diag.svg/400px-CLR_diag.svg.png
Спасибо за любые ответы, которые помогут мне найти правильный способ решения этой проблемы.
P.S. Мне нужно реализовать все самому
ИЗМЕНИТЬ
Я нашел это: http://msdn.microsoft.com/en-us/magazine/cc136756.aspx
http://www.codeproject.com/Articles/3778/Introduction-to-IL-Assembly-Language
http://www.codeguru.com/csharp/.net/net_general/il/article.php/c4635#Array1
Это может решить мою проблему. Я попробую.