From 3b2b070b7700554cb5e2fe92765c740e5540e1c0 Mon Sep 17 00:00:00 2001 From: Jordan Date: Wed, 19 Oct 2016 12:38:16 -0700 Subject: [PATCH] lexer_lex statemachine lexes correctly --- org/schedule.org | 48 ++++++++++++++++++++++++++++++++++++++++++++ src/apc/lexer_lex.rl | 17 ++++++++-------- 2 files changed, 57 insertions(+), 8 deletions(-) diff --git a/org/schedule.org b/org/schedule.org index b398d1a..6beac70 100644 --- a/org/schedule.org +++ b/org/schedule.org @@ -5,6 +5,53 @@ :PROPERTIES: :ATTACH_DIR: ~/proj/the_march/src/apc :END: +**** TODO Directory Structure for assets + CLOCK: [2016-10-16 Sun 11:43]--[2016-10-16 Sun 11:45] => 0:02 +#+BEGIN: clocktable :maxlevel 2 :scope subtree +#+CAPTION: Clock summary at [2016-10-16 Sun 11:45] +| Headline | Time | +|--------------+--------| +| *Total time* | *0:02* | +|--------------+--------| +#+END: + +**** TODO File syntax for directories + CLOCK: [2016-10-18 Tue 9:30]--[2016-10-18 Tue 10:21] => 0:51 + +#+BEGIN: clocktable :maxlevel 2 :scope subtree +#+CAPTION: Clock summary at [2016-10-16 Sun 11:46] +| Headline | Time | +|--------------+--------| +| *Total time* | *0:01* | +|--------------+--------| +#+END: + +env_assets +env/cityblock/ +large/small/center (sets) +signifigance of numbers in filenames vs letters + letters - variations + numbers - 1 horizontal, 2 vertical +signifigance of numbering after _m + +env/cityblock + /large + /small + /center + /vertical + /horizontal + set_name set_id element_name element_id + +Directions in filenames for statics are ? + Dont have framesheets so they dont need a direction. + + + +env_deco +/env/deco/ +name of archetype +numbers signify variants +alpha+ . '_m' . [digit]+ signifies mapping varriants **** TODO Scanner :ATTACH: :PROPERTIES: :Attachments: scanner.c @@ -93,3 +140,4 @@ + diff --git a/src/apc/lexer_lex.rl b/src/apc/lexer_lex.rl index f7eb429..edb9a6a 100755 --- a/src/apc/lexer_lex.rl +++ b/src/apc/lexer_lex.rl @@ -20,7 +20,7 @@ char* ttos(const char* str, int); do { \ printf("PUSHTOK(" $(TOK) $(LFUNC) $(UTYPE) ")\n"); \ tok_t = TOK; \ - yylval.UTYPE = LFUNC(ts, ts-p-1); \ + yylval.UTYPE = LFUNC(ts, p-ts+1); \ lexer_pushtok(tok_t, yylval); \ ++ntok; \ } while (0) @@ -36,12 +36,14 @@ char* ttos(const char* str, int); action lex_error {printf("input error: character %c in filename %s is invalid\n", fc, str);} # instantiate machines for each possible token - ref = '0x'. xdigit+ . '_' %set_ref; - val = digit+ . '_' %set_val; - name = alpha+ . '_' %set_name; - tok = (ref | val | name) %set_ts; + ref = '0x'. xdigit+ %set_ref; + val = digit+ %set_val; + name = alpha+ %set_name; + tok = (ref | val | name); + segment = tok . [_\0] %set_ts; + + main := segment+ ; - main := alpha+ @set_name; }%% @@ -54,8 +56,7 @@ int lexer_lex (const char* str) int cs, tok_t, ntok = 0; printf ("Lexing: %s\n",str); p = ts = str; - pe = p + strlen(str); - printf("p = %s \n", p); + pe = p + strlen(str) + 1; %%write init; %%write exec; printf ("Lexed %i tokens\n",ntok); -- 2.18.0