1 /******************************************************************************
2 *
3 * Copyright (C) 2006, The Gentee Group. All rights reserved.
4 * This file is part of the Gentee open source project - http://www.gentee.com.
5 *
6 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT").
7 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS
8 * ACCEPTANCE OF THE AGREEMENT.
9 *
10 * ID: lextbl 18.10.06 0.0.A.
11 *
12 * Author: Alexey Krivonogov ( gentee )
13 *
14 * Summary: Развертывание таблицы переходов из краткой формы записи
15 *
16 ******************************************************************************/
17
18 #ifndef _LEXTBL_
19 #define _LEXTBL_
20
21 #ifdef __cplusplus
22 extern "C" {
23 #endif // __cplusplus
24
25 #include "lex.h"
26
27 /*
28 Описание краткой формы записи
29 0 uint - количество состояний
30 Каждая строка начинается с количества описаний.
31 0 uint количество описаний помимо default.
32
33 1 uint default value
34
35 По умолчанию 0 является признаком остановки LEX_STOP
36
37 Значение элементов описывается следующим образом. Оно состоит из пар uint
38 1 uint - указываем диапазон или отдельные символы
39 1 byte - номер начального
40 2 byte - номер конечного
41 3 byte - the first additional character
42 4 byte - the second additional character
43 2 uint - значение таблицы переходов
44
45 Предопределенные диапазоны
46 0x3000 - Цифры и 0x4100
47 0x4100 - '_', 'A'-'Z', 'a'-'z' и больше или равно 128
48 0x5800 - Цифры и 'A'-'F' и 'a'-'f'
49
50 0 byte - количество блоков ключевых слов
51 0 byte - флаги
52 0x0001 ignore case.
53 каждый блок состоит из
54 1 uint - начальное значение первого ключевого слова
55 Строки с ключевыми словами
56 Заканчивается двойным нулем
57 */
58
59 //--------------------------------------------------------------------------
60 // output - результирующая таблица переходов
61 uint STDCALL lex_tbl( plex pl, puint input );
62
63 //--------------------------------------------------------------------------
64
65 #ifdef __cplusplus
66 }
67 #endif // __cplusplus
68
69 #endif // _LEXTBL_
70
71