|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Разбор порядка примитивных Математических Действий заданного языка
Изначально на вход подается файл с строками программного кода, в котором используются переменные (заданны по стандартным правилам), константы (в виде римских чисел), математические действия (+ - * /), скобки, знак прерывания строк, знак присваивания.
Текст программы может содержать комментарии. (//текст комментария). Необходимо создать лексический анализатор кода, а на его основе произвести синтаксический анализ кода. В виде синтаксического анализа представляется проверка правильности записи выражения, разбиение выражения на действия с соблюдением порядка действий. Результат анализа предоставляется в виде дерева. Надеюсь кому-то поможет. Сам найти примитивное не смог, поэтому решил сам написать. Последний раз редактировалось Тираэль, 12.12.2012 в 01:43. Причина: Добавление в статью файла. |
#2
|
|||
|
|||
Вот скрин работы программы.
|
#3
|
||||
|
||||
а чем IScriptControl не угодил? гораздо функциональнее. к тому же после "небольших допиливаний" его можно заставить работать и с VCL объектами программы: читать/писать значения и создавать TWinControl (TForm, TEdit, TMemo, TListBox TComboBox и т.д.), TControl (TLabel и т.д.). быть обработчиком событий TButton, TTimer. читать/писать файлы, работать с интернет. вообщем функционал программы легко расширяется без перекомпилирования exe.
Пишу программы за еду. __________________ |
#4
|
|||
|
|||
Ну мне так проще было.
|
#5
|
||||
|
||||
да уж куда проще:
Код:
var ScriptControl: IScriptControl; begin ScriptControl:=CreateComObject(CLASS_ScriptControl) as IScriptControl; ScriptControl.Language:='javascript'; Memo1.Lines.Add(ScriptControl.Eval('(2*5+90+Math.abs(-900))/10')); end; Пишу программы за еду. __________________ |