summaryrefslogtreecommitdiff
path: root/tools/d2c/tokens.l
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2016-01-28 23:32:25 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2016-01-28 23:32:25 (GMT)
commit16e0fd9d89ef433848678dfc8dd20426844a2868 (patch)
tree79075ae02c133cea21ffb555b1086aae833b3aac /tools/d2c/tokens.l
parent66c99d59d6a6d533de0bb65488de8243213bcdea (diff)
Cleaned, rewritten and improved the whole code of the compiler.
Diffstat (limited to 'tools/d2c/tokens.l')
-rw-r--r--tools/d2c/tokens.l132
1 files changed, 132 insertions, 0 deletions
diff --git a/tools/d2c/tokens.l b/tools/d2c/tokens.l
new file mode 100644
index 0000000..e48d079
--- /dev/null
+++ b/tools/d2c/tokens.l
@@ -0,0 +1,132 @@
+
+%top {
+
+#include "grammar.h"
+
+}
+
+
+
+%{
+
+ //typedef struct _rented_coder rented_coder;
+
+
+//#include "d2c-d2c_gram.h"
+
+#include <ctype.h>
+#include <string.h>
+
+
+#include "manual.h"
+
+
+
+%}
+
+%option noyywrap
+%option nounput
+ //%option noinput
+%option yylineno
+%option stack
+%option noyy_top_state
+
+ //%option reentrant
+ //%option bison-bridge
+
+/* %option bison-bridge */
+/* %option bison-locations */
+/* %option ecs */
+/* %option nodefault */
+/* %option noyywrap */
+/* %option reentrant */
+
+
+%x comments
+
+%x ins_name try_details ins_details
+%x encoding encoding_type encoding_content
+
+%x encoding_bits encoding_bits_size
+
+%x raw_line
+
+
+
+%%
+
+
+[ \t\n]+ { }
+
+"/*" { BEGIN(comments); }
+<comments>"*/" { BEGIN(INITIAL); }
+<comments>[^*\n] { }
+<comments>"Copyright"[^\n]* { yylvalp->string = strdup(yytext); return COPYRIGHT; }
+<comments>"*" { }
+<comments>"\n" { }
+
+
+"@title" { BEGIN(ins_name); return TITLE; }
+
+<ins_name>[ ][A-Za-z-]+ { yylvalp->string = strdup(yytext + 1); BEGIN(try_details); return INS_NAME; }
+<try_details>[ ,/] { BEGIN(ins_details); }
+<try_details>[\n] { BEGIN(INITIAL); }
+
+<ins_details>[^\n]* { yylvalp->cstring = yytext; return INS_DETAILS; }
+<ins_details>[\n] { BEGIN(INITIAL); }
+
+
+
+"@encoding" { BEGIN(encoding); return ENCODING; }
+
+<encoding>[ ] { }
+<encoding>"(" { BEGIN(encoding_type); }
+
+<encoding_type>[A-Za-z] { yylvalp->string = strdup(yytext); return TYPE; }
+<encoding_type>[0-9]+ { yylvalp->integer = atoi(yytext); return NUMBER; }
+<encoding_type>")" { BEGIN(encoding); }
+
+<encoding>"{" { BEGIN(encoding_content); }
+<encoding_content>[ \t\n]+ { }
+<encoding_content>"}" { BEGIN(INITIAL); }
+
+
+
+<encoding_content>"@half " { yy_push_state(raw_line); return HALF; }
+<encoding_content>"@word " { yy_push_state(raw_line); return WORD; }
+
+
+<raw_line>[^\n]+ { yylvalp->cstring = yytext; return RAW_LINE; }
+<raw_line>"\n" { yy_pop_state(); }
+
+
+
+
+<encoding_content>"@syntax " { yy_push_state(raw_line); return SYNTAX; }
+
+
+
+
+
+<encoding_content>"@conv" { return CONV; }
+
+
+
+
+<encoding_content>"{" {
+ read_block(temp);
+ yylvalp->cstring = temp; return RAW_BLOCK;
+ }
+
+
+
+
+
+
+
+<encoding_content>"@hooks" { return HOOKS; }
+
+<encoding_content>"@rules" { return RULES; }
+
+
+%%