Интерпретатор JavaScript-подобного языка
Захотелось вот для собственного развития написать интерпретатор JavaScript-подобного языка на C#. Начал писать лексический анализатор. Вроде пока ничего сложного, т.к. разобрать текст с программой на лексеммы - это маленькая толика всего что разделяет текст от исполняемой части. Не мог бы кто помочь в поиске доступно написанной теории написания лексических и синтаксических анализаторов?
|
Ответ: Интерпретатор JavaScript-подобного языка
|
Ответ: Интерпретатор JavaScript-подобного языка
Вложений: 2
Пока частично написал лексический анализ, в приложении есть тест. Находит числа, строки, операторы, комментарии, скобки, идентификаторы. (приложение требует наличия NetFramework 3.5)
На самом деле я уже писал интерпретатор языка, чем-то похожего на бэйсик (ссылка), но он не поддерживал области видимости и много чего еще. С новой попытки я хочу написать интерпретатор с меньшим числом недостатков. И возможностью гибкой интеграции в существующие приложения. |
Ответ: Интерпретатор JavaScript-подобного языка
По идее на endline не нужно обращать внимания.
Вернее правильно его заменять на пробел перед разбором. Допустим: PHP код:
|
Ответ: Интерпретатор JavaScript-подобного языка
Цитата:
upd: вспоминая о minified версиях js-скриптов получается что точно не нужно обращать внимания. Спасибо за совет. А заменять на пробел нет необходимости. Пробелы, табуляции и перевод каретки игнорируются. Будут игнорироваться и переводы строк :) Меня вот больше всего пугает семантический анализ. И думаю стоит ли его делать... возможно будет правильным в интерпретаторе эту функцию возложить на операторы, при выполнении которых будет выполняться проверка... Кстати есть у кого идеи по поводу того, в какой момент ловить операцию смены знака (там где унарный оператор "-"). Я раньше получая формулу просматривал все операторы "-" и менял их на "±" если перед ними стояла открывающая скобка/другой оператор, разделитель и т.д. Может есть другие способы это определить. PS: для разбора формул использую ОПН. Кстати подумалось о других унарных операторах... надо бы какой-то метод надежный для их определения... и еще не знаю как реализовать ++i и i++ |
Ответ: Интерпретатор JavaScript-подобного языка
Нечайно наткнулся на такую ссылку http://jint.codeplex.com/
Чувствую буду его исходники разбирать... |
Часовой пояс GMT +4, время: 20:54. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot