Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1846 yogev_ezra 1
//===== Глобальные константы
2
#define STD_INPUT_HANDLE	-10
3
#define STD_OUTPUT_HANDLE	-11
4
#define STD_ERROR_HANDLE	-12
5
#define CREATE_NEW		1
6
#define CREATE_ALWAYS 		2
7
#define OPEN_EXISTING 		3
8
#define OPEN_ALWAYS 		4
9
#define TRUNCATE_EXISTING 	5
10
// ----
11
#define GENERIC_READ	0x80000000
12
#define GENERIC_WRITE	0x40000000
13
#define GENERIC_EXECUTE 0x20000000
14
#define GENERIC_ALL	0x10000000
15
// ---- Константы компилятора
16
#define _END	0x1B
17
#define FILENAMESIZE 80
18
#define IDLENGTH 65 // Длина имени идентификатора, включая NULL-терминатор
19
#define MAXDATA 512000	// Размер буферов под код и данные
20
#define MAXDBGS 50000 // Размер буферов под отладочну  информацию
21
#define MAXDLLS 100
22
#define MAXINPUT 512000 // Максимальны	размер входного файла
23
#define MAXMDL	100	// Максимальное число includes
24
#define MAXPOSTS 150000 // Размер буферов под POST обработку
25
#define NULL	0
26
#define SORTSIZE 20
27
#define STRLEN 1000 // Длина буфера под token
28
// ------------------------------------------
29
//===== Нумерованные константы
30
// ---- Коды возврата
31
enum{ e_ok, e_outofmemory, e_cannotopeninput, e_toomanyerrors,
32
	e_internalerror, e_noinputspecified, e_unknowncommandline,
33
	e_extract, e_cannotopenmapfile, e_someerrors };
34
// ---- Коды tokens tk_xxxx
35
enum{
36
tk_eof,tk_number,tk_string,tk_var,
37
tk_id,
38
tk_db,tk_dw,tk_dd,tk_dq,	// Типы переменных
39
tk_byte,tk_char,tk_word,tk_short,
40
tk_dword,tk_int,
41
tk_enum,			// Нумерованные константы
42
tk_struc, 	// Определение структуры
43
tk_if,tk_else,tk_endif, // Условная компиляция
44
tk_include,tk_define, // Включение фа ла//Определение константы
45
tk_import,		// Импорт из DLL
46
tk_map, 		// Генерация MAP-файла
47
tk_debug, 	// Генерация отладочной информации
48
tk_list,		// Выдача ASM-листинга
49
tk_dll, 		// Генерация DLL-файла
50
tk_loop,tk_return,tk_do,
51
tk_while,tk_void,
52
tk_continue,tk_break,
53
tk_docase,tk_case,tk_default,
54
tk_carryflag,tk_extract,tk_FALSE,tk_from,
55
tk_notcarryflag,tk_notoverflow,tk_overflow,tk_TRUE,
56
tk_zeroflag,tk_notzeroflag,
57
tk_assign,tk_swap,
58
tk_minus,tk_plus,
59
tk_minusminus,tk_plusplus,tk_mult,tk_div,tk_mod,
60
tk_multminus,tk_divminus,tk_modminus,tk_rr,tk_ll,
61
tk_rrminus,
62
tk_llminus,
63
tk_minusequals,tk_plusequals,tk_rrequals,tk_llequals,
64
tk_or,tk_and,tk_xor,tk_not,
65
tk_orminus,
66
tk_andminus,tk_xorminus,
67
tk_orequals,tk_andequals,tk_xorequals,
68
tk_equalto,
69
tk_notequal,tk_greater,tk_greaterequal,tk_less,
70
tk_lessequal,
71
tk_oror,tk_andand,tk_openbrace,tk_closebrace,
72
tk_openbracket,tk_closebracket,tk_openblock,tk_closeblock,
73
tk_colon,tk_semicolon,tk_comma,tk_period,
74
tk_dollar,tk_question,tk_tilda,
75
tk_reg,tk_controlreg,tk_debugreg,tk_testreg,tk_seg,
76
tk_undefproc,tk_proc,
77
tk_postnumber,
78
tk_local,tk_locallabel,tk_param,tk_locnumber,
79
tk_DLL,tk_API,tk_directive,tk_command,tk_mnemonics,
80
tokens
81
};
82
// ---- Кодировка типа процедур
83
enum{ cpt_near, cpt_far };
84
// ---- Кодировка POST записей
85
enum { POST_CALL=1, POST_API, POST_DATA, POST_LOC, POST_STR };
86
// ---- Описание структуры в dbginfo: dbg_...
87
enum{ dbg_mod=0,	// Номер модуля
88
	dbg_line=4, // Номер строк	в модуле
89
	dbg_loc=8,	// Позиция в EXE-файле
90
	dbg_size=12}; // размер структуры
91
// ---- Описание структуры idrec
92
enum{ left=0, 	// Указатель на idrec
93
	right=4,		// Указатель на idrec
94
	recid=8,		// Имя идентификатора
95
	newid=recid+4,	// Указатель на алиас для recid
96
	rectok=newid+4, // Номер token
97
	rectype=rectok+4, // Тип token: void, byte, char, word, ...
98
	recsrc=rectype+4, // Исходный текст
99
	recpost=recsrc+4, // Флаг POST переменной
100
	recnumber=recpost+4, // Значение или offset в recsrc
101
	recmodline=recnumber+4,// Номер модуля и строки
102
	recsize=recnumber+4};// размер структуры
103
// ---- Описание структуры localrec
104
enum{ localnext=0,		// Указатель на следующую localrec
105
	localid=4,		// Имя локально  переменной
106
	localtok=localid+IDLENGTH,// Значение token
107
	localtype=localtok+4, // тип переменной
108
	localnumber=localtype+4,	// Позиция в стеке
109
	local_size=localnumber+4};	// Размер структуры