projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
fix num exp
[m6w6/ext-psi]
/
src
/
parser.re
diff --git
a/src/parser.re
b/src/parser.re
index 81005f2c07acd238bcecd8fde42742ab6f83000b..d5a0f8e0205824d32aaf0134341fb6d8e5c10f7c 100644
(file)
--- a/
src/parser.re
+++ b/
src/parser.re
@@
-141,6
+141,9
@@
void PSI_ParserFree(PSI_Parser **P)
#define RETURN(t) do { \
P->num = t; \
#define RETURN(t) do { \
P->num = t; \
+ if (P->flags & PSI_PARSER_DEBUG) { \
+ fprintf(stderr, "PSI> TOKEN: %d %.*s (EOF=%d)\n", P->num, (int) (P->cur-P->tok), P->tok, P->num == PSI_T_EOF); \
+ } \
return t; \
} while(1)
return t; \
} while(1)
@@
-154,7
+157,7
@@
token_t PSI_ParserScan(PSI_Parser *P)
re2c:define:YYCURSOR = P->cur;
re2c:define:YYLIMIT = P->lim;
re2c:define:YYMARKER = P->mrk;
re2c:define:YYCURSOR = P->cur;
re2c:define:YYLIMIT = P->lim;
re2c:define:YYMARKER = P->mrk;
- re2c:define:YYFILL = "{ if (!PSI_ParserFill(P,@@)) RETURN(
-1
); }";
+ re2c:define:YYFILL = "{ if (!PSI_ParserFill(P,@@)) RETURN(
PSI_T_EOF
); }";
re2c:yyfill:parameter = 0;
B = [^a-zA-Z0-9_];
re2c:yyfill:parameter = 0;
B = [^a-zA-Z0-9_];
@@
-176,8
+179,11
@@
token_t PSI_ParserScan(PSI_Parser *P)
"]" {RETURN(PSI_T_RBRACKET);}
"=" {RETURN(PSI_T_EQUALS);}
"$" {RETURN(PSI_T_DOLLAR);}
"]" {RETURN(PSI_T_RBRACKET);}
"=" {RETURN(PSI_T_EQUALS);}
"$" {RETURN(PSI_T_DOLLAR);}
- "*" {RETURN(PSI_T_POINTER);}
- "&" {RETURN(PSI_T_REFERENCE);}
+ "*" {RETURN(PSI_T_ASTERISK);}
+ "&" {RETURN(PSI_T_AMPERSAND);}
+ "+" {RETURN(PSI_T_PLUS);}
+ "-" {RETURN(PSI_T_MINUS);}
+ "/" {RETURN(PSI_T_SLASH);}
[\r\n] { ++P->line; continue; }
[\t ]+ { continue; }
'TRUE' {RETURN(PSI_T_TRUE);}
[\r\n] { ++P->line; continue; }
[\t ]+ { continue; }
'TRUE' {RETURN(PSI_T_TRUE);}
@@
-197,8
+203,10
@@
token_t PSI_ParserScan(PSI_Parser *P)
'UINT32_T' {RETURN(PSI_T_UINT32);}
'INT64_T' {RETURN(PSI_T_INT64);}
'UINT64_T' {RETURN(PSI_T_UINT64);}
'UINT32_T' {RETURN(PSI_T_UINT32);}
'INT64_T' {RETURN(PSI_T_INT64);}
'UINT64_T' {RETURN(PSI_T_UINT64);}
+ 'UNSIGNED' {RETURN(PSI_T_UNSIGNED);}
'STRING' {RETURN(PSI_T_STRING);}
'ARRAY' {RETURN(PSI_T_ARRAY);}
'STRING' {RETURN(PSI_T_STRING);}
'ARRAY' {RETURN(PSI_T_ARRAY);}
+ 'OBJECT' {RETURN(PSI_T_OBJECT);}
'FUNCTION' {RETURN(PSI_T_FUNCTION);}
'TYPEDEF' {RETURN(PSI_T_TYPEDEF);}
'STRUCT' {RETURN(PSI_T_STRUCT);}
'FUNCTION' {RETURN(PSI_T_FUNCTION);}
'TYPEDEF' {RETURN(PSI_T_TYPEDEF);}
'STRUCT' {RETURN(PSI_T_STRUCT);}
@@
-210,11
+218,14
@@
token_t PSI_ParserScan(PSI_Parser *P)
'FREE' {RETURN(PSI_T_FREE);}
'STRLEN' {RETURN(PSI_T_STRLEN);}
'STRVAL' {RETURN(PSI_T_STRVAL);}
'FREE' {RETURN(PSI_T_FREE);}
'STRLEN' {RETURN(PSI_T_STRLEN);}
'STRVAL' {RETURN(PSI_T_STRVAL);}
+ 'PATHVAL' {RETURN(PSI_T_PATHVAL);}
'INTVAL' {RETURN(PSI_T_INTVAL);}
'FLOATVAL' {RETURN(PSI_T_FLOATVAL);}
'BOOLVAL' {RETURN(PSI_T_BOOLVAL);}
'ARRVAL' {RETURN(PSI_T_ARRVAL);}
'INTVAL' {RETURN(PSI_T_INTVAL);}
'FLOATVAL' {RETURN(PSI_T_FLOATVAL);}
'BOOLVAL' {RETURN(PSI_T_BOOLVAL);}
'ARRVAL' {RETURN(PSI_T_ARRVAL);}
+ 'OBJVAL' {RETURN(PSI_T_OBJVAL);}
'CALLOC' {RETURN(PSI_T_CALLOC);}
'CALLOC' {RETURN(PSI_T_CALLOC);}
+ 'TO_OBJECT' {RETURN(PSI_T_TO_OBJECT);}
'TO_ARRAY' {RETURN(PSI_T_TO_ARRAY);}
'TO_STRING' {RETURN(PSI_T_TO_STRING);}
'TO_INT' {RETURN(PSI_T_TO_INT);}
'TO_ARRAY' {RETURN(PSI_T_TO_ARRAY);}
'TO_STRING' {RETURN(PSI_T_TO_STRING);}
'TO_INT' {RETURN(PSI_T_TO_INT);}