flush
[m6w6/ext-psi] / idl / parser.re
diff --git a/idl/parser.re b/idl/parser.re
deleted file mode 100644 (file)
index 5a06023..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-#include <stdio.h>
-#include <assert.h>
-
-#include "parser.h"
-#include "parser_proc.h"
-
-void *PSI_ParserProcAlloc(void*(unsigned long));
-void PSI_ParserProcFree(void*, void(*)(void*));
-void PSI_ParserProc(void *, token_t, PSI_Token *, PSI_Parser *);
-
-PSI_Parser *PSI_ParserInit(PSI_Parser *P, const char *filename)
-{
-       FILE *fp;
-
-       if (!P) {
-               P = malloc(sizeof(*P));
-       }
-       memset(P, 0, sizeof(*P));
-
-       fp = fopen(filename, "r");
-
-       if (!fp) {
-               perror(filename);
-               return NULL;
-       }
-
-       if (!P) {
-               P = malloc(sizeof(*P));
-       }
-       memset(P, 0, sizeof(*P));
-
-       P->fp = fp;
-       P->fn = strdup(filename);
-       P->line = 1;
-
-       P->proc = PSI_ParserProcAlloc(malloc);
-
-       PSI_ParserFill(P, 0);
-
-       return P;
-}
-
-size_t PSI_ParserFill(PSI_Parser *P, size_t n)
-{
-       // printf("+ Fill: n=%zu\n", n);
-       if (!n) {
-               P->cur = P->tok = P->lim = P->mrk = P->buf;
-               P->eof = NULL;
-       }
-
-       if (!P->eof) {
-               size_t consumed = P->tok - P->buf;
-               size_t reserved = P->lim - P->tok;
-               size_t available = BSIZE - reserved;
-               size_t didread;
-
-               if (consumed) {
-                       memmove(P->buf, P->tok, reserved);
-                       P->tok -= consumed;
-                       P->cur -= consumed;
-                       P->lim -= consumed;
-                       P->mrk -= consumed;
-               }
-
-               didread = fread(P->lim, 1, available, P->fp);
-               P->lim += didread;
-               if (didread < available) {
-                       P->eof = P->lim;
-               }
-
-               // printf("+ Fill: consumed=%zu reserved=%zu available=%zu didread=%zu\n",
-                       // consumed, reserved, available, didread);
-       }
-       // printf("+ Fill: avail=%zu\n", P->lim - P->cur);
-       return P->lim - P->cur;
-}
-
-void PSI_ParserParse(PSI_Parser *P, PSI_Token *T)
-{
-       if (T) {
-               PSI_ParserProc(P->proc, T->type, T, P);
-       } else {
-               PSI_ParserProc(P->proc, 0, NULL, P);
-       }
-}
-
-void PSI_ParserDtor(PSI_Parser *P)
-{
-       PSI_ParserProcFree(P->proc, free);
-
-       if (P->fp) {
-               fclose(P->fp);
-       }
-
-       PSI_DataDtor((PSI_Data *) P);
-
-       memset(P, 0, sizeof(*P));
-}
-
-void PSI_ParserFree(PSI_Parser **P)
-{
-       if (*P) {
-               PSI_ParserDtor(*P);
-               free(*P);
-               *P = NULL;
-       }
-}
-
-/*!max:re2c*/
-#define BSIZE 256
-
-#if BSIZE < YYMAXFILL
-# error BSIZE must be greater than YYMAXFILL
-#endif
-
-#define RETURN(t) do { \
-       P->num = t; \
-       return t; \
-} while(1)
-
-token_t PSI_ParserScan(PSI_Parser *P)
-{
-       for (;;) {
-               P->tok = P->cur;
-               /*!re2c
-               re2c:indent:top = 2;
-               re2c:define:YYCTYPE = "unsigned char";
-               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:yyfill:parameter = 0;
-
-               B = [^a-zA-Z0-9_];
-               W = [a-zA-Z0-9_];
-               NAME = W+;
-               NSNAME = (NAME)? ("\\" NAME)+;
-               QUOTED_STRING = "\"" ([^\"])+ "\"";
-               NULL = 'NULL';
-               MIXED = 'mixed';
-               VOID = 'void';
-               BOOL = 'bool';
-               INT = 'int';
-               FLOAT = 'float';
-               DOUBLE = 'double';
-               SINT8 = 'sint8';
-               UINT8 = 'uint8';
-               SINT16 = 'sint16';
-               UINT16 = 'uint16';
-               SINT32 = 'sint32';
-               UINT32 = 'uint32';
-               SINT64 = 'sint64';
-               UINT64 = 'uint64';
-               STRING = 'string';
-               ARRAY = 'array';
-               FUNCTION = 'function';
-               TYPEDEF = 'typedef';
-               LIB = 'lib';
-               LET = 'let';
-               SET = 'set';
-               RET = 'ret';
-               STRVAL = 'strval';
-               INTVAL = 'intval';
-               FLOATVAL = 'floatval';
-               BOOLVAL = 'boolval';
-               TO_STRING = 'to_string';
-               TO_INT = 'to_int';
-               TO_FLOAT = 'to_float';
-               TO_BOOL = 'to_bool';
-
-               "#" .* "\n" { ++P->line; RETURN(PSI_T_COMMENT);}
-               "(" {RETURN(PSI_T_LPAREN);}
-               ")" {RETURN(PSI_T_RPAREN);}
-               ";" {RETURN(PSI_T_EOS);}
-               "," {RETURN(PSI_T_COMMA);}
-               ":" {RETURN(PSI_T_COLON);}
-               "{" {RETURN(PSI_T_LBRACE);}
-               "}" {RETURN(PSI_T_RBRACE);}
-               "." {RETURN(PSI_T_DOT);}
-               "=" {RETURN(PSI_T_EQUALS);}
-               "$" {RETURN(PSI_T_DOLLAR);}
-               "*" {RETURN(PSI_T_POINTER);}
-               "&" {RETURN(PSI_T_REFERENCE);}
-               [\r\n] { ++P->line; continue; }
-               [\t ]+ { continue; }
-               NULL {RETURN(PSI_T_NULL);}
-               MIXED {RETURN(PSI_T_MIXED);}
-               VOID {RETURN(PSI_T_VOID);}
-               BOOL {RETURN(PSI_T_BOOL);}
-               INT {RETURN(PSI_T_INT);}
-               FLOAT {RETURN(PSI_T_FLOAT);}
-               DOUBLE {RETURN(PSI_T_DOUBLE);}
-               SINT8 {RETURN(PSI_T_SINT8);}
-               UINT8 {RETURN(PSI_T_UINT8);}
-               SINT16 {RETURN(PSI_T_SINT16);}
-               UINT16 {RETURN(PSI_T_UINT16);}
-               SINT32 {RETURN(PSI_T_SINT32);}
-               UINT32 {RETURN(PSI_T_UINT32);}
-               SINT64 {RETURN(PSI_T_SINT64);}
-               UINT64 {RETURN(PSI_T_UINT64);}
-               STRING {RETURN(PSI_T_STRING);}
-               ARRAY {RETURN(PSI_T_ARRAY);}
-               FUNCTION {RETURN(PSI_T_FUNCTION);}
-               TYPEDEF {RETURN(PSI_T_TYPEDEF);}
-               LIB {RETURN(PSI_T_LIB);}
-               LET {RETURN(PSI_T_LET);}
-               SET {RETURN(PSI_T_SET);}
-               RET {RETURN(PSI_T_RET);}
-               STRVAL {RETURN(PSI_T_STRVAL);}
-               INTVAL {RETURN(PSI_T_INTVAL);}
-               FLOATVAL {RETURN(PSI_T_FLOATVAL);}
-               BOOLVAL {RETURN(PSI_T_BOOLVAL);}
-               TO_STRING {RETURN(PSI_T_TO_STRING);}
-               TO_INT {RETURN(PSI_T_TO_INT);}
-               TO_FLOAT {RETURN(PSI_T_TO_FLOAT);}
-               TO_BOOL {RETURN(PSI_T_TO_BOOL);}
-               [0-9] {RETURN(PSI_T_DIGIT);}
-               NAME {RETURN(PSI_T_NAME);}
-               NSNAME {RETURN(PSI_T_NSNAME);}
-               QUOTED_STRING {RETURN(PSI_T_QUOTED_STRING);}
-               */
-       }
-       return -1;
-}