X-Git-Url: https://git.kengrimes.com/?p=henge%2Fwebcc.git;a=blobdiff_plain;f=src%2Fapc%2Flexer_lex.rl;h=234e94195de671c972083fe8c16322284feb0457;hp=4c9aeea2700d634a858349563355bbc688dd877c;hb=7ec466e900542295260ac7e414b5a409acf2a61a;hpb=fa38ef709a26d67ca4dd56dfd1f4f0108897a701 diff --git a/src/apc/lexer_lex.rl b/src/apc/lexer_lex.rl index 4c9aeea..234e941 100644 --- a/src/apc/lexer_lex.rl +++ b/src/apc/lexer_lex.rl @@ -33,6 +33,7 @@ char* ttos(const char* str, int); action set_val { PUSHTOK(NUM, ttov, val); } action set_name { PUSHTOK(NAME, ttos, str); } action set_ts { ts = p; } + 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; @@ -41,7 +42,7 @@ char* ttos(const char* str, int); tok = ref | val | name; segment = (tok . '_') %set_ts; - main := segment* . tok; + main := segment* . tok $lerr(lex_error); }%% @@ -55,7 +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) + 1; + pe = p + strlen(str); %%write init; %%write exec; printf ("Lexed %i tokens\n",ntok);