Jon Michael Aanes
aec232efcb
that automatically creates a useful error message, when the assert fails.
65 lines
2.0 KiB
Lua
65 lines
2.0 KiB
Lua
|
|
local Lexer = require 'Lexer'
|
|
|
|
return Lexer {
|
|
{ 'and', 'AND' },
|
|
{ 'break', 'BREAK' },
|
|
{ 'do', 'DO' },
|
|
{ 'else', 'ELSE' },
|
|
{ 'elseif', 'ELSEIF' },
|
|
{ 'end', 'END' },
|
|
{ 'for', 'FOR' },
|
|
{ 'function', 'FUNCTION' },
|
|
{ 'if', 'IF' },
|
|
{ 'in', 'IN' },
|
|
{ 'local', 'LOCAL' },
|
|
{ 'not', 'NOT' },
|
|
{ 'or', 'OR' },
|
|
{ 'repeat', 'REPEAT' },
|
|
{ 'return', 'RETURN' },
|
|
{ 'then', 'THEN' },
|
|
{ 'until', 'UNTIL' },
|
|
{ 'while', 'WHILE' },
|
|
{ '%+' , 'PLUS' },
|
|
{ '%-' , 'MINUS' },
|
|
{ '%*' , 'TIMES' },
|
|
{ '%/' , 'DIVIDE' },
|
|
{ '%%' , 'MODULO' },
|
|
{ '%^' , 'CARET' },
|
|
{ '%#' , 'HASHTAG' },
|
|
{ '%==' , 'EQ' },
|
|
{ '%~=' , 'NEQ' },
|
|
{ '%<=' , 'LEQ' },
|
|
{ '%>=' , 'GEQ' },
|
|
{ '%<' , 'LE' },
|
|
{ '%>' , 'GT' },
|
|
{ '%=', 'ASSIGN' },
|
|
{ '%(' , 'LPAR' },
|
|
{ '%)' , 'RPAR' },
|
|
{ '%{' , 'LBRACE' },
|
|
{ '%}' , 'RBRACE' },
|
|
{ '%;' , 'SEMICOLON' },
|
|
{ '%,' , 'COMMA' },
|
|
{ '%.%.' , 'CONCAT' },
|
|
{ '%.%.%.' , 'VARARG' },
|
|
--
|
|
{ 'false', 'FALSE' },
|
|
{ 'true', 'TRUE' },
|
|
{ 'nil', 'NIL' },
|
|
{ '%[', 'LBRACK' },
|
|
{ '%]', 'RBRACK' },
|
|
{ '%:', 'COLON' },
|
|
{ '%.', 'DOT' },
|
|
--
|
|
{ '%d+%.?%d*', 'NUMBER' },
|
|
{ '%d*%.?%d+', 'NUMBER' },
|
|
{ '[%a_][%d%a_]*', 'IDENTIFIER' },
|
|
{ '\".-\"', 'STRING' },
|
|
{ '\'.-\'', 'STRING' },
|
|
{ '%[%[.-%]%]', 'STRING' },
|
|
|
|
{ '%-%-.-\n', Lexer.CONTINUE },
|
|
{ '%-%-%[%[.-%]%]', Lexer.CONTINUE },
|
|
{ '%s+', Lexer.CONTINUE },
|
|
}
|