Лексический анализ

Лексический анализ делает функция 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 - недопустимый символ.

Наверх

Hosted by uCoz