get rid of weird lemon symbols
[m6w6/ext-psi] / src / parser.re
index b64eacc5a533d403f703758095c7038e3629266d..b56385d49e0f42c5e7a4d4ed32b6485f9eeb6c22 100644 (file)
@@ -4,10 +4,10 @@
 
 #include "parser.h"
 
-void *psi_parser_proc_Alloc(void*(unsigned long));
-void psi_parser_proc_Free(void*, void(*)(void*));
-void psi_parser_proc_(void *, token_t, struct psi_token *, struct psi_parser *);
-void psi_parser_proc_Trace(FILE *, const char*);
+void *psi_parser_proc_init(void);
+void psi_parser_proc_free(void **parser_proc);
+void psi_parser_proc_parse(void *parser_proc, token_t r, struct psi_token *token, struct psi_parser *parser);
+void psi_parser_proc_trace(FILE *out, char *prefix);
 
 struct psi_parser *psi_parser_init(struct psi_parser *P, psi_error_cb error, unsigned flags)
 {
@@ -20,10 +20,10 @@ struct psi_parser *psi_parser_init(struct psi_parser *P, psi_error_cb error, uns
 
        P->col = 1;
        P->line = 1;
-       P->proc = psi_parser_proc_Alloc(malloc);
+       P->proc = psi_parser_proc_init();
 
        if (flags & PSI_DEBUG) {
-               psi_parser_proc_Trace(stderr, "PSI> ");
+               psi_parser_proc_trace(stderr, "PSI> ");
        }
 
        return P;
@@ -86,7 +86,7 @@ bool psi_parser_open_string(struct psi_parser *P, const char *string, size_t len
 
 static ssize_t psi_parser_fill(struct psi_parser *P, size_t n)
 {
-       PSI_DEBUG_PRINT(P, "PSI> Fill: n=%zu (input.type=%d)\n", n, P->input.type);
+       PSI_DEBUG_PRINT(P, "PSI< Fill: n=%zu (input.type=%d)\n", n, P->input.type);
 
        /* init if n==0 */
        if (!n) {
@@ -109,7 +109,7 @@ static ssize_t psi_parser_fill(struct psi_parser *P, size_t n)
                        break;
                }
 
-               PSI_DEBUG_PRINT(P, "PSI> Fill: cur=%p lim=%p eof=%p\n", P->cur, P->lim, P->eof);
+               PSI_DEBUG_PRINT(P, "PSI< Fill: cur=%p lim=%p eof=%p\n", P->cur, P->lim, P->eof);
        }
 
        switch (P->input.type) {
@@ -137,14 +137,14 @@ static ssize_t psi_parser_fill(struct psi_parser *P, size_t n)
                        if (didread < available) {
                                P->eof = P->lim;
                        }
-                       PSI_DEBUG_PRINT(P, "PSI> Fill: consumed=%zu reserved=%zu available=%zu didread=%zu\n",
+                       PSI_DEBUG_PRINT(P, "PSI< Fill: consumed=%zu reserved=%zu available=%zu didread=%zu\n",
                                        consumed, reserved, available, didread);
                }
 #endif
                break;
        }
 
-       PSI_DEBUG_PRINT(P, "PSI> Fill: avail=%td\n", P->lim - P->cur);
+       PSI_DEBUG_PRINT(P, "PSI< Fill: avail=%td\n", P->lim - P->cur);
 
        return P->lim - P->cur;
 }
@@ -152,15 +152,15 @@ static ssize_t psi_parser_fill(struct psi_parser *P, size_t n)
 void psi_parser_parse(struct psi_parser *P, struct psi_token *T)
 {
        if (T) {
-               psi_parser_proc_(P->proc, T->type, T, P);
+               psi_parser_proc_parse(P->proc, T->type, T, P);
        } else {
-               psi_parser_proc_(P->proc, 0, NULL, P);
+               psi_parser_proc_parse(P->proc, 0, NULL, P);
        }
 }
 
 void psi_parser_dtor(struct psi_parser *P)
 {
-       psi_parser_proc_Free(P->proc, free);
+       psi_parser_proc_free(&P->proc);
 
        switch (P->input.type) {
        case PSI_PARSE_FILE:
@@ -204,7 +204,7 @@ void psi_parser_free(struct psi_parser **P)
 
 #define RETURN(t) do { \
        P->num = t; \
-       PSI_DEBUG_PRINT(P, "PSI> TOKEN: %d %.*s (EOF=%d %s:%u:%u)\n", \
+       PSI_DEBUG_PRINT(P, "PSI< TOKEN: %d %.*s (EOF=%d %s:%u:%u)\n", \
                                P->num, (int) (P->cur-P->tok), P->tok, P->num == PSI_T_EOF, \
                                P->file.fn, P->line, P->col); \
        return t; \
@@ -257,6 +257,9 @@ token_t psi_parser_scan(struct psi_parser *P)
                "]" {RETURN(PSI_T_RBRACKET);}
                "=" {RETURN(PSI_T_EQUALS);}
                "*" {RETURN(PSI_T_ASTERISK);}
+               "~" {RETURN(PSI_T_TILDE);}
+               "!" {RETURN(PSI_T_NOT);}
+               "%" {RETURN(PSI_T_MODULO);}
                "&" {RETURN(PSI_T_AMPERSAND);}
                "+" {RETURN(PSI_T_PLUS);}
                "-" {RETURN(PSI_T_MINUS);}