From a1be20586279c5c33f965d884376e8b9c693d303 Mon Sep 17 00:00:00 2001 From: Neil Date: Sun, 13 Feb 2022 21:07:51 -0800 Subject: [PATCH] More reliable commands. --- src/interpret.c | 2 ++ src/lex.re_c.c | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/interpret.c b/src/interpret.c index 9dbf690..d1ea689 100644 --- a/src/interpret.c +++ b/src/interpret.c @@ -142,6 +142,8 @@ int main(int argc, char **argv) { } printf(".\n"); } + printf("Lexing finished: %s on %lu.\n", + lex_symbols[lex.symbol], lex.line); char_array_clear(&entry); break; /* fixme */ } diff --git a/src/lex.re_c.c b/src/lex.re_c.c index f84421c..41787ef 100644 --- a/src/lex.re_c.c +++ b/src/lex.re_c.c @@ -124,7 +124,7 @@ scan: /*!re2c end { printf("end\n");return x->symbol = END, 0; } end { return x->symbol = ERROR, 0; } - // fixme: paragraphs. + newline { x->line = ++scan.line; x->new_paragraph = prev_line + 2 >= scan.line; @@ -139,6 +139,7 @@ scan: return x->symbol = BRACKET, 1; } "![" :=> image "[" :=> command + * { printf("image(broken)\n");return 0; } ws* "osm" ws* "](geo:" @s0 number "," @s1 number ")" { scan.condition = yyctext; @@ -146,16 +147,17 @@ scan: printf("Got a map.\n"); return 1; } + ws+ { scan.is_ws_expected = 0; goto scan; } "source" { if(scan.is_ws_expected) return x->symbol = ERROR, 0; return scan.is_ws_expected = 1, x->symbol = SOURCE, 1; } "default" - { if(scan.is_ws_expected) return 0; + { if(scan.is_ws_expected) return x->symbol = ERROR, 0; return scan.is_ws_expected = 1, x->symbol = DEFAULT, 1; } - ":" :=> command_args - * { return x->symbol = ERROR, 0; } + ":" => command_args { scan.is_ws_expected = 0; goto scan; } [^\n\r\]\x00]+ { printf("Command args fixme\n"); goto scan; } "]" :=> text + * { return x->symbol = ERROR, 0; } */ }