![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |