Copyright
(C) 1998-2005 MKTMK Moscow, Russia
http://www.mktmk.narod.ru.
e-mail:
mktmk<at>narod.ru
This
document write in WIN1251 code (Russian).
1.
enum typeload{OVERLAY,NOOVERLAY}; перечисление определяет тип загрузки.
Используется в методе “load” и методе “clrtabl” в качестве аргумента.
При typeload==NOOVERLAY при загрузке происходит очистка всех таблиц
интерпретатора, кроме таблицы пользовательских функций.
При typeload==OVERLAY при загрузке происходит очистка всех таблиц
интерпретатора, кроме таблицы пользовательских функций, таблицы переменных и
таблицы массивов.
2.
enum step{NOSTEP,STEP}; перечисление определяет тип запуска.
При step==STEP метод “run” завершается с кодом завершения EOLEND после
выполнения каждой строки *.bas-программы.
При step==NOSTEP метод “run” не завершается после выполнения каждой строки *.bas-программы.
3.
enum typeend{DUMMYEND,ENDFILEEND,ENDOPERATORDETECT,EOLEND,BREAKPOINTEND,NOLOADEND,BREAKBEFOREOPERATOR,BREAKAFTEROPERATOR}; перечисление определяет код завершения
метода “run”.
-
typeend=DUMMYEND - при нормальной работе никогда не
возвращается методом “run”. Используется для внутренних переходов.
-
typeend=ENDFILEEND метод “run” окончился из-за исчерпания
входного потока. Это нормальное завершение *.bas-программы
-
typeend=ENDOPERATORDETECT метод “run” окончился при
обнаружении оператора END. Это нормальное завершение *.bas-программы
-
typeend=EOLEND метод “run” окончился после исполнения
очередной строки, т.к. был установлен флаг step=STEP методом “setstep”
-
typeend=BREAKPOINTEND метод “run” окончился после считывания
символа '@', который является символом точки останова для Open Basic
-
typeend=NOLOADEND метод “run” окончился т.к. не был
выполнен метод “load” и входной поток не открыт
-
typeend=BREAKBEFOREOPERATOR - метод “run” окончился перед
выполнением какого-то оператора OB
-
typeend=BREAKAFTEROPERATOR - метод “run” окончился после
выполнения какого-то оператора OB
4.
enum ob_type_ident {OB_IDENTFLO,OB_IDENTINT,OB_IDENTSTR,OB_NOIDENT}; перечисление определяет тип переменной Open Basic. Перечисление
не является членом класса ob_obasic.
1. ob_obasic(istream*
i=OB_NULL,ostream* o=&cout,istream* read=&cin);
Конструктор интерпретатора.
Параметры:
-
i – входной
поток. В нем содержится *.bas программа. Должен быть открыт в режиме ios::binary
-
o – выходной
поток оператора PRINT. Должен быть
открыт в режиме ios::text
-
read - входной поток оператора INPUT. Должен быть открыт в режиме ios::binary
2. Метод static const
ob_type_char* about()
Возвращает строку about. Строка может содержать символы перевода
строки.
3. Метод void load(istream*
i,typeload a=ob_obasic::NOOVERLAY);
Загружает *.bas-программу в интерпретатор.
4. Метод typeend run();
Запускает загруженную *.bas-программу.
5. Метод void setstep(step ts)
Устанавливает режим пошагового выполнения *.bas-программы.
6. Метод step getstep() const
Возвращает текущий режим пошагового выполнения.
7. Метод ob_type_ident
typevar(ob_type_char* name)
Возвращает тип переменной с именем “name”.
8. Метод ob_type_ident
typearray(ob_type_char* name)
Возвращает тип массива с именем “name”.
9. Метод void
createvar(ob_type_char* name)
Создает переменную с именем “name” в таблице переменных.
10.Метод
void
createarray(ob_type_char* name,ob_type_arraydimension kr,ob_type_arraysize* as)
Создает массив с именем “name” в таблице массивов.
11.Метод
ob_type_ident
strlenvar(ob_type_char* name,ob_type_stringsize* len,ob_type_arraysize*
as=OB_NULL)
Определяет длину строковой переменной или элемента
строкового массива.
12.Методы
bool
writevar(ob_type_char*
name,ob_type_flo val,ob_type_arraysize* as=OB_NULL)
bool
writevar(ob_type_char*
name,ob_type_int val,ob_type_arraysize* as=OB_NULL)
bool
writevar(ob_type_char*
name,ob_type_char* val,ob_type_arraysize* as=OB_NULL)
Присваивают переменным или элементам массивов с именем “name” значение “val”.
13.Методы
bool
readvar(ob_type_char*
name,ob_type_flo* val,ob_type_arraysize* as=OB_NULL)
bool
readvar(ob_type_char*
name,ob_type_int* val,ob_type_arraysize* as=OB_NULL)
bool
readvar(ob_type_char*
name,ob_type_char* val,ob_type_arraysize* as=OB_NULL)
Читают значения из переменных или элементам массивов с
именем “name” и
присваивают эти значения “val”.
14.Метод const
ob_type_arraysize* getarraysize(ob_type_char* name,ob_type_arraydimension* kr)
Позволяет определить количество измерений и величину
каждого измерения массива с именем “name”.
15.Методы
bool
setfun(ob_type_char* name,ob_type_flofun f)
bool
setfun(ob_type_char* name,ob_type_intfun f)
bool
setfun(ob_type_char* name,ob_type_charfun f,ob_type_del dt)
Подключают пользовательскую функцию с именем “name” к
исполняющей системе интерпретатора Open Basic.
16.Метод bool
delfun(ob_type_char* name)
Отключает пользовательскую функцию с именем “name” от
исполняющей системе интерпретатора Open Basic.
17.Метод static const
ob_type_serialnum serial_number()
Возвращает номер экземпляра программы.
18.Метод static const
ob_type_int version()
Возвращает номер версии программы умноженный на 100. Для
версии 1.50 возвращает число 150.
19.Метод void clrtabl(typeload
a=NOOVERLAY)
Очищает все таблицы интерпретатора, кроме таблицы
пользовательских функций.
20.Метод void clrtablfun()
Очищает таблицу пользовательских функций интерпретатора.
21.Метод
bool
setoperatorbreak(char* name,ob_operator::flbreak b,ob_operator::flbreak a);
Устанавливает режим окончания метода “run” до или после
выполнения оператора с именем “name”. Используется для сопряжения операторов ввода-вывода PRINT и INPUT с
операционной системой.
22.Метод ob_type_char*
getcurrentoperatorname()
Возвращает имя последнего выполненного оператора.
23.Метод void setout(ostream* o)
Устанавливает новый поток вывода, взамен заданного в
конструкторе. Поток должен быть открыт в режиме ios::text. Используется для сопряжения операторов ввода-вывода PRINT и INPUT с
операционной системой.
24.Метод void setin(istream* i)
Устанавливает новый поток ввода, взамен заданного в
конструкторе. Поток должен быть открыт в режиме ios::binary. Используется для сопряжения операторов ввода-вывода PRINT и INPUT с
операционной системой.
25.Метод ob_lex::typelex
gettypenextlex()
Возвращает следующую лексему из входного потока.
Используется для сопряжения операторов ввода-вывода PRINT и INPUT с операционной системой. После применения метода
состояние потока должно быть восстановлено методом restoreinputpointer().
26.Метод void
restoreinputpointer()
Используется для восстановления состояния входного потока
после применения метода gettypenextlex().