return table.freeze({Eof="\069\111\102";UnexpChar="\085\110\101\120\112\067\104\097\114";UknChar="\085\107\110\067\104\097\114";None="\078\111\110\101",Id="\073\100";Str="\083\116\114";Num="\078\117\109";Arrow="\065\114\114\111\119";Semicolon="\083\101\109\105\099\111\108\111\110",Comma="\067\111\109\109\097";LParen="\076\080\097\114\101\110",RParen="\082\080\097\114\101\110",LBrack="\076\066\114\097\099\107",RBrack="\082\066\114\097\099\107",Eq="\069\113",LessEq="\076\101\115\115\069\113";Less="\076\101\115\115";GreatEq="\071\114\101\097\116\069\113";Great="\071\114\101\097\116";NotEq="\078\111\116\069\113",Not="\078\111\116";And="\065\110\100",Or="\079\114";Add="\065\100\100";Sub="\083\117\098",Mul="\077\117\108";Div="\068\105\118";Mod="\077\111\100",Pow="\080\111\119"})
return table.freeze({
	Eof = "Eof", -- End of file/source
	UnexpChar = "UnexpChar", -- Unexpected character
	UknChar = "UknChar", -- Unknown character
	None = "None", -- Whitespace characters

	Id = "Id", -- Any keyword, action name, or routine name (identifier)
	Str = "Str", -- Any string
	Num = "Num", -- Any number

	Arrow = "Arrow", -- Arrow (->)
	Semicolon = "Semicolon", -- Semicolon (;)
	Comma = "Comma", -- Comma (,)
	LParen = "LParen", -- Left parenthesis (()
	RParen = "RParen", -- Right parenthesis ())
	LBrack = "LBrack", -- Left bracket ({)
	RBrack = "RBrack", -- Right bracket (})

	Eq = "Eq", -- Equal to (==)
	LessEq = "LessEq", -- Less than or equal to (<=)
	Less = "Less", -- Less than (<)
	GreatEq = "GreatEq", -- Greater than or equal to (>=)
	Great = "Great", -- Greater than (>)
	NotEq = "NotEq", -- Not equal to (~=)

	Not = "Not", -- Logical not (!)
	And = "And", -- Logical and (&&)
	Or = "Or", -- Logical or (||)

	Add = "Add", -- Addition (+)
	Sub = "Sub", -- Subtraction (-)
	Mul = "Mul", -- Multiplication (*)
	Div = "Div", -- Division (/)
	Mod = "Mod", -- Modulus (%)
	Pow = "Pow", -- Power (^)
})
