-
Notifications
You must be signed in to change notification settings - Fork 2
/
cparse.l
75 lines (64 loc) · 1.75 KB
/
cparse.l
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
67
68
69
70
71
72
73
74
%{
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "lexglb.h"
#include "cdata.h"
#include "cparse.h"
%}
%%
"void" { return(VOID); }
"char" { return(CHAR); }
"int" { return(INTEGER); }
"long" { return(LONG); }
"short" { return(SHORT); }
"float" { return(FLOAT); }
"double" { return(DOUBLE); }
"const" { return(CONST); }
"register" { return(REGISTER); }
"signed" { return(SIGNED); }
"unsigned" { return(UNSIGNED); }
"static" { return(STATIC); }
"volatile" { return(VOLATILE); }
"inline" { return(INLINE); }
"struct" { return(STRUCT); }
"union" { return(UNION); }
"function" { return(FUNCTION); }
"u8" { return(UINT8); }
"uint8_t" { return(UINT8); }
"u16" { return(UINT16); }
"uint16_t" { return(UINT16); }
"u32" { return(UINT32); }
"uint32_t" { return(UINT32); }
"u64" { return(UINT64); }
"uint64_t" { return(UINT64); }
"__attribute__" { return(ATTRIBUTE); }
"__stdcall" { return(STDCALL); }
"__ccall" { return(CCALL); }
"{" { return(OBRACE); }
"}" { return(EBRACE); }
"[" { return(LBRACKET); }
"]" { return(RBRACKET); }
"(" { return(LPARENT); }
")" { return(RPARENT); }
";" { return(SEMICOLON); }
"," { return(COMMA); }
[ \t\v\n\f] { }
[a-zA-Z_][a-zA-Z0-9_]* {
yylval.sval = strdup(yytext);
return(IDENTIFIER); }
[0-9]* {
yylval.dval = atoi(yytext);
return(NUMBER);
}
\/\/.*[\n] { /* remove comments */ }
\/\*[\n.]*\*\/ { /* remove comments */ }
\/\*([^\*]|\*[^/])*\*\/ { /* remove multiline comments */ }
. { /* ignore bad characters */ }
%%
void yyerror(char *s) {
printf("Error is %s\n", s);
}
int yywrap(void) {
return (1);
}