200 |
200 |
201 // Language specific code |
201 // Language specific code |
202 val KEYWORD : Rexp = "while" | "if" | "then" | "else" | "do" | "for" | "to" | "true" | "false" | "read" | "write" | "skip" |
202 val KEYWORD : Rexp = "while" | "if" | "then" | "else" | "do" | "for" | "to" | "true" | "false" | "read" | "write" | "skip" |
203 val OP : Rexp = "+" | "-" | "*" | "%" | "/" | "==" | "!=" | ">" | "<" | ">=" | "<=" | ":=" | "&&" | "||" |
203 val OP : Rexp = "+" | "-" | "*" | "%" | "/" | "==" | "!=" | ">" | "<" | ">=" | "<=" | ":=" | "&&" | "||" |
204 val LET: Rexp = RANGE(('A' to 'Z').toSet ++ ('a' to 'z')) |
204 val LET: Rexp = RANGE(('A' to 'Z').toSet ++ ('a' to 'z')) |
205 val SYM : Rexp = LET | RANGE(Set('.', '_', '>', '<', '=', ';', ',', ':')) |
205 val SYM : Rexp = (LET | RANGE(Set('.', '_', '>', '<', '=', ';', ',', ':'))) |
206 val PARENS : Rexp = "(" | "{" | ")" | "}" |
206 val PARENS : Rexp = "(" | "{" | ")" | "}" |
207 val SEMI : Rexp = ";" |
207 val SEMI : Rexp = ";" |
208 val WHITESPACE : Rexp = PLUS(" ") | "\n" | "\t" |
208 val WHITESPACE : Rexp = PLUS(" ") | "\n" | "\t" | "\r" |
209 val DIGIT : Rexp = RANGE(('0' to '9').toSet) |
209 val DIGIT : Rexp = RANGE(('0' to '9').toSet) |
210 val DIGIT1 : Rexp = RANGE(('1' to '9').toSet) |
210 val DIGIT1 : Rexp = RANGE(('1' to '9').toSet) |
211 val STRING : Rexp = "\"" ~ (SYM | " " | "\\n" | DIGIT).% ~ "\"" |
211 val STRING : Rexp = "\"" ~ (SYM | " " | "\\n" | DIGIT).% ~ "\"" |
212 val ID : Rexp = LET ~ (LET | "_" | DIGIT).% |
212 val ID : Rexp = LET ~ (LET | "_" | DIGIT).% |
213 val NUM : Rexp = "0" | (DIGIT1 ~ DIGIT.%) |
213 val NUM : Rexp = "0" | (DIGIT1 ~ DIGIT.%) |
214 val COMMENT : Rexp = "//" ~ (SYM | " " | DIGIT).% ~ "\n" |
214 val EOL : Rexp = "\n" | "\r\n" |
|
215 val COMMENT : Rexp = "//" ~ (SYM | PARENS | " " | DIGIT).% ~ EOL |
215 |
216 |
216 val WHILE_REGS = (("k" $ KEYWORD) | |
217 val WHILE_REGS = (("k" $ KEYWORD) | |
217 ("o" $ OP) | |
218 ("o" $ OP) | |
218 ("str" $ STRING) | |
219 ("str" $ STRING) | |
219 ("p" $ PARENS) | |
220 ("p" $ PARENS) | |