]> git.mdlowis.com Git - proto/sclpl.git/commitdiff
removed old flex based lexer
authorMichael D. Lowis <mike.lowis@gentex.com>
Mon, 25 Mar 2019 20:08:52 +0000 (16:08 -0400)
committerMichael D. Lowis <mike.lowis@gentex.com>
Mon, 25 Mar 2019 20:08:52 +0000 (16:08 -0400)
source/lexer.l [deleted file]

diff --git a/source/lexer.l b/source/lexer.l
deleted file mode 100644 (file)
index 4958cb4..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-%{
-#include <sclpl.h>
-
-static union {
-    char* text;
-    long long integer;
-    double floating;
-} Value;
-
-static char* dupstring(const char* old) {
-    size_t length = strlen(old);
-    char* str = emalloc(length+1);
-    memcpy(str, old, length);
-    str[length] = '\0';
-    return str;
-}
-
-%}
-
-DIGIT   [0-9]
-ALPHA   [a-zA_Z]
-ALPHA_  [a-zA_Z_]
-ALNUM_  [a-zA-Z0-9_]
-SPACE   [ \t\r\n]
-NOSPACE [^ \t\r\n]
-
-%option noyywrap
-
-%%
-
-"\r\n"    { yylineno++; }
-"\n"      { yylineno++; }
-#.*[\r\n] { yylineno++; }
-[ \t]     { /* whitespace is insignificant */ }
-
-"require" { return T_REQUIRES; }
-"provide" { return T_PROVIDES; }
-"let"     { return T_LET;      }
-"var"     { return T_VAR;      }
-"fun"     { return T_FUN;      }
-"type"    { return T_TYPE;     }
-"struct"  { return T_STRUCT;   }
-"union"   { return T_UNION;    }
-"return"  { return T_RETURN;   }
-"if"      { return T_IF;       }
-"else"    { return T_ELSE;     }
-
-"("    { return '(';    }
-")"    { return ')';    }
-"["    { return '[';    }
-"]"    { return ']';    }
-"{"    { return '{';    }
-"}"    { return '}';    }
-"."    { return '.';    }
-","    { return ',';    }
-"'"    { return '\'';   }
-":"    { return ':';    }
-"&"    { return '&';    }
-"="    { return '=';    }
-";"    { return ';';    }
-"*"    { return '*';    }
-
-\\.       { Value.integer = yytext[1];    return T_CHAR; }
-\\space   { Value.integer = ' ';          return T_CHAR; }
-\\newline { Value.integer = '\n';         return T_CHAR; }
-\\return  { Value.integer = '\r';         return T_CHAR; }
-\\tab     { Value.integer = '\t';         return T_CHAR; }
-\\vtab    { Value.integer = '\v';         return T_CHAR; }
-
-0b[01]+ {
-    Value.integer = strtol(&yytext[2], NULL, 2);
-    return T_INT;
-}
-
-0o[0-7]+ {
-    Value.integer = strtol(&yytext[2], NULL, 8);
-    return T_INT;
-}
-
-0d[0-9]+ {
-    Value.integer = strtol(&yytext[2], NULL, 10);
-    return T_INT;
-}
-
-0h[0-9a-fA-F]+ {
-    Value.integer = strtol(&yytext[2], NULL, 16);
-    return T_INT;
-}
-
-[+-]?[0-9]+ {
-    Value.integer = strtol(&yytext[0], NULL, 10);
-    return T_INT;
-}
-
-[+-]?[0-9]+\.[0-9]+(e[+-]?[0-9]+)? {
-    Value.floating = strtod(yytext, NULL);
-    return T_FLOAT;
-}
-
-\"([^"]|\\\")*\" {
-    size_t len = strlen(&yytext[1]);
-    Value.text = dupstring(&yytext[1]);
-    Value.text[len-1] = '\0';
-    return T_STRING;
-}
-
-true  {
-    Value.integer = 1;
-    return T_BOOL;
-}
-
-false {
-    Value.integer = 0;
-    return T_BOOL;
-}
-
-[a-zA-Z_][a-zA-Z0-9_]* {
-    Value.text = dupstring(yytext);
-    return T_ID;
-}
-
-<<EOF>> { return T_END_FILE; }
-. { return T_ERROR; }
-
-%%
-
-void gettoken(Parser* ctx) {
-    ctx->tok.line = yylineno;
-    ctx->tok.type = yylex();
-    if (ctx->tok.type != T_END_FILE)
-        memcpy(&(ctx->tok.value), &Value, sizeof(Value));
-}