From cf27629b5bc5aa4a5430ebeaa45b171232176a18 Mon Sep 17 00:00:00 2001 From: Aaro Koivukangas Date: Fri, 16 Aug 2024 12:59:32 +0200 Subject: [PATCH] fixed a warning about case-insensitivity --- c/Makefile | 3 +-- c/src/scanner.flex | 42 +++++++++++++++++++++--------------------- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/c/Makefile b/c/Makefile index 6c7e6bf..191b1aa 100644 --- a/c/Makefile +++ b/c/Makefile @@ -15,8 +15,7 @@ FILES=$(SRCDIR)/main.c \ $(SRCDIR)/value.c scanner: - # this is case insensitive!! - flex -i -o $(SRCDIR)/scanner.c $(SRCDIR)/scanner.flex + flex -o $(SRCDIR)/scanner.c $(SRCDIR)/scanner.flex parser: bison --defines=$(INCLUDEDIR)/token.h --output=$(SRCDIR)/parser.c $(SRCDIR)/parser.bison -Wcounterexamples --debug -t diff --git a/c/src/scanner.flex b/c/src/scanner.flex index bd52ae2..bbb4eb0 100644 --- a/c/src/scanner.flex +++ b/c/src/scanner.flex @@ -6,34 +6,34 @@ %option yylineno %% -(" "|\t|\n) /* skip whitespace */ +;.*$ { yylval.name = yytext; return TOKEN_COMMENT; } +(" "|\t|\n) /* skip whitespace */ -(@|=) { yylval.character = yytext; return TOKEN_ADDR_M; } -\( { return TOKEN_PAREN_L; } -\) { return TOKEN_PAREN_R; } -, { return TOKEN_COMMA; } -;.*$ { return TOKEN_COMMENT; } +(@|=) { yylval.name = yytext; return TOKEN_ADDR_M; } +\( { return TOKEN_PAREN_L; } +\) { return TOKEN_PAREN_R; } +, { return TOKEN_COMMA; } -(LOAD|STORE|IN|OUT) { yylval.name = yytext; return TOKEN_OPER_DATA; } /* TODO, currently only in uppercase */ -(ADD|SUB|MUL|DIV|MOD) { yylval.name = yytext; return TOKEN_OPER_AR; } -(AND|OR|XOR|NOT|SHL|SHR|SHRA|COMP) { yylval.name = yytext; return TOKEN_OPER_LOGIC; } -(JUMP|JNEG|JZER|JPOS|JNNEG|JNZER|JNPOS|JLES|JEQU|JGRE|JNLES|JNEQU|JNGRE) { yylval.name = yytext; return TOKEN_OPER_BRANCH; } -(PUSH|POP|PUSHR|POPR) { yylval.name = yytext; return TOKEN_OPER_STACK; } -(CALL|EXIT|SVC|NOP) { yylval.name = yytext; return TOKEN_OPER_SYS; } -(HALT|TIME|DATE|READ|WRITE) { yylval.name = yytext; return TOKEN_SYS_NUM; } -(EQU|DC|DS|DEF) { yylval.name = yytext; return TOKEN_COMP_OPER; } +(?i:LOAD|STORE|IN|OUT) { yylval.name = yytext; return TOKEN_OPER_DATA; } /* TODO, currently only in uppercase */ +(?i:ADD|SUB|MUL|DIV|MOD) { yylval.name = yytext; return TOKEN_OPER_AR; } +(?i:AND|OR|XOR|NOT|SHL|SHR|SHRA|COMP) { yylval.name = yytext; return TOKEN_OPER_LOGIC; } +(?i:JUMP|JNEG|JZER|JPOS|JNNEG|JNZER|JNPOS|JLES|JEQU|JGRE|JNLES|JNEQU|JNGRE) { yylval.name = yytext; return TOKEN_OPER_BRANCH; } +(?i:PUSH|POP|PUSHR|POPR) { yylval.name = yytext; return TOKEN_OPER_STACK; } +(?i:CALL|EXIT|SVC|NOP) { yylval.name = yytext; return TOKEN_OPER_SYS; } +(?i:HALT|TIME|DATE|READ|WRITE) { yylval.name = yytext; return TOKEN_SYS_NUM; } +(?i:EQU|DC|DS|DEF) { yylval.name = yytext; return TOKEN_COMP_OPER; } -(SP|FP|PC) { yylval.name = yytext; return TOKEN_STACK_REGISTER; /* TODO possible unnecessary token PC */ } +(?i:SP|FP|PC) { yylval.name = yytext; return TOKEN_STACK_REGISTER; /* TODO possible unnecessary token PC */ } -R[0-8] { yylval.name = yytext; return TOKEN_REGISTER; } -[0-9]+ { yylval.num = atoi(yytext); return TOKEN_NUMBER; } -[a-öA-Ö]([a-öA-Ö0-9_])* { yylval.name = yytext; return TOKEN_LABEL; } -- { return TOKEN_SIGN; } +(?i:R[0-8]) { yylval.name = yytext; return TOKEN_REGISTER; } +[0-9]+ { yylval.num = atoi(yytext); return TOKEN_NUMBER; } +([a-öA-Ö][a-öA-Ö0-9_]*) { yylval.name = yytext; return TOKEN_LABEL; } +- { return TOKEN_SIGN; } -. { yylval.name = yytext; return TOKEN_ERROR; } +. { yylval.name = yytext; return TOKEN_ERROR; } %% -int yywrap() { return 1; } +int yywrap() { return 1; }