X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Fparser.re;h=48e90ed9f6ba648fb33ef145a8afa27b74ac5806;hb=5e240548ba570610ce0dbc248a2b7654a0e080fa;hp=3cfe130f8a0b8b9a4795dbb5f4389e01110c31d4;hpb=5359ad5c181e5772f350fe1cba060cbed3a05b91;p=m6w6%2Fext-psi diff --git a/src/parser.re b/src/parser.re index 3cfe130..48e90ed 100644 --- a/src/parser.re +++ b/src/parser.re @@ -55,7 +55,7 @@ struct psi_parser *psi_parser_init(struct psi_parser *P, const char *filename, p return P; } -size_t psi_parser_fill(struct psi_parser *P, size_t n) +ssize_t psi_parser_fill(struct psi_parser *P, size_t n) { if (P->flags & PSI_PARSER_DEBUG) { fprintf(stderr, "PSI> Fill: n=%zu\n", n); @@ -91,7 +91,7 @@ size_t psi_parser_fill(struct psi_parser *P, size_t n) } } if (P->flags & PSI_PARSER_DEBUG) { - fprintf(stderr, "PSI> Fill: avail=%zu\n", P->lim - P->cur); + fprintf(stderr, "PSI> Fill: avail=%td\n", P->lim - P->cur); } return P->lim - P->cur; } @@ -171,7 +171,7 @@ token_t psi_parser_scan(struct psi_parser *P) W = [a-zA-Z0-9_]; NAME = [a-zA-Z_]W*; NSNAME = (NAME)? ("\\" NAME)+; - DOLLAR_NAME = '$' NAME; + DOLLAR_NAME = '$' W+; QUOTED_STRING = "\"" ([^\"])+ "\""; NUMBER = [+-]? [0-9]* "."? [0-9]+ ([eE] [+-]? [0-9]+)?; @@ -243,6 +243,7 @@ token_t psi_parser_scan(struct psi_parser *P) 'ARRVAL' {RETURN(PSI_T_ARRVAL);} 'OBJVAL' {RETURN(PSI_T_OBJVAL);} 'ZVAL' {RETURN(PSI_T_ZVAL);} + 'COUNT' {RETURN(PSI_T_COUNT);} 'CALLOC' {RETURN(PSI_T_CALLOC);} 'TO_OBJECT' {RETURN(PSI_T_TO_OBJECT);} 'TO_ARRAY' {RETURN(PSI_T_TO_ARRAY);}