More reliable commands.

This commit is contained in:
Neil 2022-02-13 21:07:51 -08:00
parent b8234e5eb7
commit a1be205862
2 changed files with 8 additions and 4 deletions

View File

@ -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 */
}

View File

@ -124,7 +124,7 @@ scan:
/*!re2c
<text> end { printf("end\n");return x->symbol = END, 0; }
<image, command, command_args> end { return x->symbol = ERROR, 0; }
// fixme: paragraphs.
<text> newline
{ x->line = ++scan.line;
x->new_paragraph = prev_line + 2 >= scan.line;
@ -139,6 +139,7 @@ scan:
return x->symbol = BRACKET, 1; }
<text> "![" :=> image
<text> "[" :=> command
<image> * { printf("image(broken)\n");return 0; }
<image> ws* "osm" ws* "](geo:" @s0 number "," @s1 number ")" {
scan.condition = yyctext;
@ -146,16 +147,17 @@ scan:
printf("Got a map.\n");
return 1;
}
<command> ws+ { scan.is_ws_expected = 0; goto scan; }
<command> "source"
{ if(scan.is_ws_expected) return x->symbol = ERROR, 0;
return scan.is_ws_expected = 1, x->symbol = SOURCE, 1; }
<command> "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> ":" :=> command_args
<command, command_args> * { return x->symbol = ERROR, 0; }
<command> ":" => command_args { scan.is_ws_expected = 0; goto scan; }
<command_args> [^\n\r\]\x00]+ { printf("Command args fixme\n"); goto scan; }
<command_args> "]" :=> text
<command, command_args> * { return x->symbol = ERROR, 0; }
*/
}