From 8c6072df499ef9068346fbe8313b63dbba1e4e82 Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Sun, 26 May 2013 22:20:51 -0700 Subject: Reformat the lexer and parser so my next patch isn't so crazy --- src/map/magic-interpreter-lexer.lpp | 85 ++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 38 deletions(-) (limited to 'src/map/magic-interpreter-lexer.lpp') diff --git a/src/map/magic-interpreter-lexer.lpp b/src/map/magic-interpreter-lexer.lpp index 96598a3..f593d4a 100644 --- a/src/map/magic-interpreter-lexer.lpp +++ b/src/map/magic-interpreter-lexer.lpp @@ -101,43 +101,52 @@ "DO" {FIXLOC; return DO;} "WAIT" {FIXLOC; return SLEEP;} -\{([^\}]|\\.)*\} { char *string = strdup(yytext); - magic_frontend_lval.s = string; - FIXLOC; - return SCRIPT_DATA; - } - -\"([^\"]|\\.)*\" { char *string = strdup(yytext + 1); - char *src = string; - char *dst = string; - while (*src && *src != '"') - if (*src == '\\') { - *dst++ = src[1]; - src += 2; - } else - *dst++ = *src++; - *dst = '\0'; /* terminate */ - magic_frontend_lval.s = string; - FIXLOC; - return STRING; - } - -"-"?[0-9]+ { magic_frontend_lval.i = atoi(yytext); - FIXLOC; - return INT; } - -"0x"[0-9a-fA-F]+ { magic_frontend_lval.i = strtol(yytext + 2, NULL, 16); - FIXLOC; - return INT; } - -[a-zA-Z][-_a-zA-Z0-9?!]* { magic_frontend_lval.s = strdup(yytext); - FIXLOC; - return ID; } - -"#".*$ /* Ignore comments */ -"//".*$ /* Ignore comments */ -[ \n\t\r] /* ignore whitespace */ -. FPRINTF(stderr, "%s: Unexpected character in line %d\n", MAGIC_CONFIG_FILE, magic_frontend_lineno); - +\{([^\}]|\\.)*\} { + char *string = strdup(yytext); + magic_frontend_lval.s = string; + FIXLOC; + return SCRIPT_DATA; +} + +\"([^\"]|\\.)*\" { + char *string = strdup(yytext + 1); + char *src = string; + char *dst = string; + while (*src && *src != '"') + if (*src == '\\') + { + *dst++ = src[1]; + src += 2; + } + else + *dst++ = *src++; + *dst = '\0'; /* terminate */ + magic_frontend_lval.s = string; + FIXLOC; + return STRING; +} + +"-"?[0-9]+ { + magic_frontend_lval.i = atoi(yytext); + FIXLOC; + return INT; + } + +"0x"[0-9a-fA-F]+ { + magic_frontend_lval.i = strtol(yytext + 2, NULL, 16); + FIXLOC; + return INT; + } + +[a-zA-Z][-_a-zA-Z0-9]* { + magic_frontend_lval.s = strdup(yytext); + FIXLOC; + return ID; +} + +"#".*$ /* Ignore comments */ +"//".*$ /* Ignore comments */ +[ \n\t\r] /* ignore whitespace */ +. FPRINTF(stderr, "%s: Unexpected character in line %d\n", MAGIC_CONFIG_FILE, magic_frontend_lineno); %% -- cgit v1.2.3-60-g2f50