-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscaner.h
66 lines (58 loc) · 1.75 KB
/
scaner.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// scaner.h
//pomocne definice:
#define MIN_ARR 10
#define NAS_DEL 2
#define KONEC_OK 0
#define KONEC_CHYBA 1
//vyctovy typ se vsemi stavy automatu
typedef enum {
INIT, Int, Des, Exp, Exp2, ExpPlusMinus, Literal,
Escape, Minus, Kom, KomBlok, KomBlok2, KomBlokK,
KomRadk, Tecka, Konkatenace, RovnaSe, Vetsitko,
VetsitkoKonec, Mensitko, MensiRovno, Vlnovka, Id,
} STAVY;
//tokeny - konecne stavy
typedef enum {
CHYBA, //vrati v pripade chybove situace
//standartni tokeny
INTKONEC, // integer cislo
DESKONEC, // desetinne cislo
EXPKONEC, // cislo s 'e' nebo 'E'
RETEZEC, // retezec
CARKA, // ,
ZAVLEVA, // (
ZAVPRAVA, // )
STREDNIK, // ;
PLUS, // +
KRAT, // *
DELENO, // :
KONKATENACE, // ..
POROVNANI, // ==
MOCNINA, // ^
ROVNASEKONEC, // = //15
VETSIROVNO, // >=
VETSITKOKONEC, // >
MENSIROVNO, // <=
MENSITKOKONEC, // <
NEROVNASE, // ~=
IDKONEC, // identifikator
MINUSKONEC, // -
MYIDKONEC, // pomocny identifikator pro Martinu
ENDOFFILE, // EOF //24
//klicova slova
TNDO, TNELSE, TNEND, TNFALSE, TNFUNCTION, TNIF, TNLOCAL,
TNNIL, TNREAD, TNRETURN, TNTHEN, TNTRUE, TNWHILE, TNWRITE,
//rezervovana slova
RSAND, RSBREAK, RSELSEIF, RSFOR, RSIN, RSNOT, RSOR,
RSREPEAT, RSUNTIL, RSSORT, RSFIND, RSTYPE, RSSUBSTR,RSMAIN,
} TOKENY;
// struktura tokenu
typedef struct stTToken {
int typ; //typ tokenu
char *data; //data tokenu
int delka; //delka retezce
} TToken, *UkTToken;
// FUNKCE:
int token_alokuj(UkTToken *strukt);
void token_uvolni(UkTToken strukt);
int ziskej_dalsi_token(FILE *f, UkTToken strukt);