|
|
@@ -19,22 +19,25 @@ IMPORT SymTab, QbeGen;
|
|
|
|
|
|
CHARACTERS
|
|
|
eol = CHR(13) .
|
|
|
+ lf = CHR(10) .
|
|
|
letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" .
|
|
|
digit = "0123456789" .
|
|
|
- hexDigit = digit + "ABCDEF" .
|
|
|
+ hexDigit = digit + "ABCDEFabcdef" .
|
|
|
noQuote1 = ANY - "'" - eol .
|
|
|
noQuote2 = ANY - '"' - eol .
|
|
|
|
|
|
IGNORE CHR(9) .. CHR(13)
|
|
|
|
|
|
-COMMENTS
|
|
|
- FROM "(*" TO "*)" NESTED
|
|
|
+COMMENTS FROM "(*" TO "*)" NESTED
|
|
|
+COMMENTS FROM "//" TO lf
|
|
|
|
|
|
TOKENS
|
|
|
ident = letter { letter | digit } .
|
|
|
integer = digit { digit }
|
|
|
- | digit { hexDigit } "H" .
|
|
|
- real = digit { digit } "." { digit } .
|
|
|
+ | "0x" hexDigit { hexDigit }
|
|
|
+ | "0X" hexDigit { hexDigit } .
|
|
|
+ real = digit { digit } "." { digit }
|
|
|
+ [ ( "E" | "e" ) [ "+" | "-" ] digit { digit } ] .
|
|
|
string = "'" { noQuote1 } "'"
|
|
|
| '"' { noQuote2 } '"' .
|
|
|
|