Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 10.09.2010, 14:54   #1
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Интерпретатор JavaScript-подобного языка

Захотелось вот для собственного развития написать интерпретатор JavaScript-подобного языка на C#. Начал писать лексический анализатор. Вроде пока ничего сложного, т.к. разобрать текст с программой на лексеммы - это маленькая толика всего что разделяет текст от исполняемой части. Не мог бы кто помочь в поиске доступно написанной теории написания лексических и синтаксических анализаторов?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 10.09.2010, 20:42   #2
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Интерпретатор JavaScript-подобного языка

http://www.gamedev.ru/code/articles/?id=4245
http://www.gamedev.ru/code/articles/?id=4245&page=2
Тоже поможет:
http://www.gamedev.ru/articles/?id=70104
http://isir.ras.ru/ph/0005/NOV8QCSR.pdf
http://algolang.da.ru/
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
DeeJex (12.09.2010), pax (10.09.2010)
Старый 11.09.2010, 11:39   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Интерпретатор JavaScript-подобного языка

Пока частично написал лексический анализ, в приложении есть тест. Находит числа, строки, операторы, комментарии, скобки, идентификаторы. (приложение требует наличия NetFramework 3.5)

На самом деле я уже писал интерпретатор языка, чем-то похожего на бэйсик (ссылка), но он не поддерживал области видимости и много чего еще. С новой попытки я хочу написать интерпретатор с меньшим числом недостатков. И возможностью гибкой интеграции в существующие приложения.
Миниатюры
Нажмите на изображение для увеличения
Название: screenshot.png
Просмотров: 1286
Размер:	26.3 Кб
ID:	11205  
Вложения
Тип файла: zip Interpretator.zip (9.3 Кб, 543 просмотров)
__________________
Blitz3d to Unity Wiki

Последний раз редактировалось pax, 23.09.2010 в 15:02.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
impersonalis (06.10.2010), Randomize (23.09.2010)
Старый 23.09.2010, 05:35   #4
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Интерпретатор JavaScript-подобного языка

По идее на endline не нужно обращать внимания.
Вернее правильно его заменять на пробел перед разбором.
Допустим:
/*немного магии*/ x=(y); y=(y); x=(y); 
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (23.09.2010)
Старый 23.09.2010, 14:35   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Интерпретатор JavaScript-подобного языка

Сообщение от Randomize Посмотреть сообщение
По идее на endline не нужно обращать внимания.
Вернее правильно его заменять на пробел перед разбором.
Допустим:
/*немного магии*/ x=(y); y=(y); x=(y); 
Ну такой код будет правильно разобран при нахождении ";". Вообще подумаю, первый мой недоинтерпретатор был с немного бэйсикоподобным синтаксисом. Пока да, не могу придумать примера, в котором необходимо знать о конце строки. Убрать всегда можно

upd: вспоминая о minified версиях js-скриптов получается что точно не нужно обращать внимания. Спасибо за совет. А заменять на пробел нет необходимости. Пробелы, табуляции и перевод каретки игнорируются. Будут игнорироваться и переводы строк

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

Кстати есть у кого идеи по поводу того, в какой момент ловить операцию смены знака (там где унарный оператор "-"). Я раньше получая формулу просматривал все операторы "-" и менял их на "±" если перед ними стояла открывающая скобка/другой оператор, разделитель и т.д. Может есть другие способы это определить.

PS: для разбора формул использую ОПН. Кстати подумалось о других унарных операторах... надо бы какой-то метод надежный для их определения... и еще не знаю как реализовать ++i и i++
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 06.10.2010, 16:30   #6
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Интерпретатор JavaScript-подобного языка

Нечайно наткнулся на такую ссылку http://jint.codeplex.com/
Чувствую буду его исходники разбирать...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
h1dd3n (06.10.2010), Randomize (08.10.2010)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 20:12.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com