diff --git a/lexicalStructure.lex b/lexicalStructure.lex index 5027607..d2b3bcf 100644 --- a/lexicalStructure.lex +++ b/lexicalStructure.lex @@ -1,4 +1,3 @@ - /* Lexical Analysis with Flex (2.6.0) We used some of the code from this manual */ /* so we placed the citation here. */ /* definitions */ %option noyywrap @@ -7,19 +6,21 @@ %} DIGIT [0-9] +CHAR \\\\n|\\\\t|\\\'|[^'\\\n\t] +STRINGVAL CHAR | " " %% /* rules */ {DIGIT}+ {printf( "C_INTEGER: %s (%d)\n", yytext, atoi( yytext ) );} "null" {printf( "C_NULL: %s (%d)\n", yytext, atoi( yytext ) );} -\'.\'|\'\\[nt]\' {printf( "C_CHARACTER: %s (%d)\n", yytext, atoi( yytext ) );} /*using double \ per documentation to show escaped chars*/ +'{CHAR}' {printf( "C_CHARACTER: %s (%d)\n", yytext, atoi( yytext ) );} /*using double \ per documentation to show escaped chars*/ "true" {printf( "C_TRUE: %s (%d)\n", yytext, atoi( yytext ) );} "false" {printf( "C_FALSE: %s (%d)\n", yytext, atoi( yytext ) );} -"\""[\^{}}\n]*"\"" {printf( "C_STRING: %s (%d)\n", yytext, atoi( yytext ) );} +"{STRINGVAL}+" {printf( "C_STRING: %s (%d)\n", yytext, atoi( yytext ) );} .|\n diff --git a/simpleLiteralTest.a b/simpleLiteralTest.a index d33541e..e74e4ee 100644 --- a/simpleLiteralTest.a +++ b/simpleLiteralTest.a @@ -1,16 +1,24 @@ "this is a string" 721398 'g' '/n' 12893 "this is not a string " +''' +'\' false +''' nullfalse "nulltrue null '7' true '189 -'/n' -'/t' +'\t' '"' '/' +'\n' +'\'' +'\t' +'\\' +'\' +'''