Лексический анализ
Лексический анализ делает функция lex_analyse:
enum LexReturn
{
lr_ok,
lr_bad_bin,
lr_bad_hex,
lr_bad_num,
lr_no_quote1,
lr_no_quote2,
lr_open_comment,
lr_unknown_character,
};
struct Token
{
TokenType type;
const unsigned char * text;
int size;
};
LexReturn lex_analyse ( nat32 size, const char8 * source, Suite<Token> & result );
Входными параметрами являются: size - длина исходного текста и source - указатель на начало исходного текста.
Результат лексического анализа записывается в специальный массив result.
Данные о каждой лексеме записываются в структуре Token: type - тип лексемы, text - указатель на начало лексемы,
size - количество литер в лексеме. Функция возвращает значение типа LexReturn, которые имеет следующие варианты:
lr_ok - ошибок не обнаружено, lr_bad_bin - неправильное двоичное число, lr_bad_hex - неправильное шестнадцатиричное число,
lr_bad_num - неправильная запись числа, lr_no_quote1 - не найдена парная одинарная кавычка,
lr_no_quote2 - не найдена парная двойная кавычка,
lr_open_comment - не закрыт комментарий начинающийся с /*,
lr_unknown_character - недопустимый символ.
Наверх