Реферат: Интерпретатор 2
}
}
void LabelPush(int n)// Добавить метку в стек
{
LabelStack[LabelCnt++]=n;
}
int LabelPop(void)// Извлечь метку из стека
{
LabelCnt--;
return LabelStack[LabelCnt];
}
int match(int t)//процедура переходит к следующему входному токену, если ее аргумент t совпадает со сканируемым символом.
{
if(lookahead==t)// Если t совпадает со сканируемым словом, то
lookahead=lexan();// Считать следующее слово
else error("syntax error");// Иначе - вывод ошибки, выход
return 0;
}
symbol.c
#include "global.h"
#defineSTRMAX 1000 /* Размер массива лексем */
#define SYMMAX 1000 /* Размер таблицы символов */
#define CODEMAX 1000/* Размер таблицы кодов */
char lexemes[STRMAX];
int lastchar = -1; /* Последняя использованная позиция в lexemes */
struct entry symtable[SYMMAX];
int lastentry = 0; // Последняя использованная позиция в таблице символов
char lexgen[STRMAX];
int lastlexgen = -1;
struct code codetable[CODEMAX];