Сообщение от Randomize
По идее на endline не нужно обращать внимания.
Вернее правильно его заменять на пробел перед разбором.
Допустим:
/*немного магии*/ x=(x + y); y=(x - y); x=(x - y);
|
Ну такой код будет правильно разобран при нахождении ";". Вообще подумаю, первый мой недоинтерпретатор был с немного бэйсикоподобным синтаксисом. Пока да, не могу придумать примера, в котором необходимо знать о конце строки. Убрать всегда можно
upd: вспоминая о minified версиях js-скриптов получается что точно не нужно обращать внимания. Спасибо за совет. А заменять на пробел нет необходимости. Пробелы, табуляции и перевод каретки игнорируются. Будут игнорироваться и переводы строк
Меня вот больше всего пугает семантический анализ. И думаю стоит ли его делать... возможно будет правильным в интерпретаторе эту функцию возложить на операторы, при выполнении которых будет выполняться проверка...
Кстати есть у кого идеи по поводу того, в какой момент ловить операцию смены знака (там где унарный оператор "-"). Я раньше получая формулу просматривал все операторы "-" и менял их на "±" если перед ними стояла открывающая скобка/другой оператор, разделитель и т.д. Может есть другие способы это определить.
PS: для разбора формул использую ОПН. Кстати подумалось о других унарных операторах... надо бы какой-то метод надежный для их определения... и еще не знаю как реализовать ++i и i++