218 lines
3.4 KiB
Go
218 lines
3.4 KiB
Go
|
package varaq
|
||
|
|
||
|
type TokenType int64
|
||
|
|
||
|
const (
|
||
|
UNDEFINED TokenType = iota
|
||
|
IDENTIFIER
|
||
|
STRING
|
||
|
NUMBER
|
||
|
BOOLEAN
|
||
|
LIST
|
||
|
SCRIPT
|
||
|
FUNCTION
|
||
|
ERROR
|
||
|
LEFTPAREN
|
||
|
RIGHTPAREN
|
||
|
LEFTBRACE
|
||
|
RIGHTBRACE
|
||
|
TILDE
|
||
|
SLASH
|
||
|
STAR
|
||
|
FALSE
|
||
|
TRUE
|
||
|
PI
|
||
|
E
|
||
|
EOF
|
||
|
POP
|
||
|
DUP
|
||
|
EXCH
|
||
|
CLEAR
|
||
|
REMEMBER
|
||
|
FORGET
|
||
|
DUMP
|
||
|
NAME
|
||
|
SET
|
||
|
IFYES
|
||
|
IFNO
|
||
|
CHOOSE
|
||
|
EVAL
|
||
|
ESCAPE
|
||
|
REPEAT
|
||
|
SPLIT
|
||
|
CONS
|
||
|
SHATTER
|
||
|
EMPTY
|
||
|
COMPOSE
|
||
|
STREQ
|
||
|
STRCUT
|
||
|
STRMEASURE
|
||
|
STRTIE
|
||
|
EXPLODE
|
||
|
ADD
|
||
|
SUB
|
||
|
MUL
|
||
|
DIV
|
||
|
IDIV
|
||
|
MOD
|
||
|
POW
|
||
|
SQRT
|
||
|
ADD1
|
||
|
SUB1
|
||
|
SIN
|
||
|
COS
|
||
|
TAN
|
||
|
ATAN
|
||
|
LN
|
||
|
LOG
|
||
|
LOG3
|
||
|
CLIP
|
||
|
SMOOTH
|
||
|
HOWMUCH
|
||
|
SETRAND
|
||
|
RAND
|
||
|
NUMBERIZE
|
||
|
ISOLATE
|
||
|
MIX
|
||
|
CONTRADICT
|
||
|
COMPL
|
||
|
SHIFTRIGHT
|
||
|
SHIFTLEFT
|
||
|
GT
|
||
|
LT
|
||
|
EQ
|
||
|
GE
|
||
|
LE
|
||
|
NE
|
||
|
NULL
|
||
|
NEGATIVE
|
||
|
ISNULL
|
||
|
ISINT
|
||
|
ISNUMBER
|
||
|
AND
|
||
|
OR
|
||
|
XOR
|
||
|
DISP
|
||
|
LISTEN
|
||
|
COMPLAIN
|
||
|
NEWLINE
|
||
|
TAB
|
||
|
WHEREAMI
|
||
|
VERSION
|
||
|
ARGV
|
||
|
TIME
|
||
|
GARBAGECOLLECT
|
||
|
)
|
||
|
|
||
|
var tokens = [...]string{
|
||
|
UNDEFINED: "UNDEFINED",
|
||
|
IDENTIFIER: "IDENTIFIER",
|
||
|
STRING: "STRING",
|
||
|
NUMBER: "NUMBER",
|
||
|
LIST: "LIST",
|
||
|
ERROR: "ERROR",
|
||
|
SCRIPT: "SCRIPT",
|
||
|
FUNCTION: "FUNCTION",
|
||
|
LEFTPAREN: "LEFTPAREN",
|
||
|
RIGHTPAREN: "RIGHTPAREN",
|
||
|
LEFTBRACE: "LEFTBRACE",
|
||
|
RIGHTBRACE: "RIGHTBRACE",
|
||
|
TILDE: "TILDE",
|
||
|
SLASH: "SLASH",
|
||
|
STAR: "STAR",
|
||
|
FALSE: "FALSE",
|
||
|
TRUE: "TRUE",
|
||
|
PI: "PI",
|
||
|
E: "E",
|
||
|
EOF: "EOF",
|
||
|
POP: "POP",
|
||
|
DUP: "DUP",
|
||
|
EXCH: "EXCH",
|
||
|
CLEAR: "CLEAR",
|
||
|
REMEMBER: "REMEMBER",
|
||
|
FORGET: "FORGET",
|
||
|
DUMP: "DUMP",
|
||
|
NAME: "NAME",
|
||
|
SET: "SET",
|
||
|
IFYES: "YES?",
|
||
|
IFNO: "NO?",
|
||
|
CHOOSE: "CHOOSE",
|
||
|
EVAL: "EVAL",
|
||
|
ESCAPE: "ESCAPE",
|
||
|
REPEAT: "REPEAT",
|
||
|
SPLIT: "SPLIT",
|
||
|
CONS: "CONS",
|
||
|
SHATTER: "SHATTER",
|
||
|
EMPTY: "EMPTY?",
|
||
|
COMPOSE: "COMPOSE",
|
||
|
STREQ: "STREQ?",
|
||
|
STRCUT: "STRCUT",
|
||
|
STRMEASURE: "STRMEASURE",
|
||
|
STRTIE: "STRTIE",
|
||
|
EXPLODE: "EXPLODE",
|
||
|
ADD: "ADD",
|
||
|
SUB: "SUB",
|
||
|
MUL: "MUL",
|
||
|
DIV: "DIV",
|
||
|
IDIV: "IDIV",
|
||
|
MOD: "MOD",
|
||
|
POW: "POW",
|
||
|
SQRT: "SQRT",
|
||
|
ADD1: "ADD1",
|
||
|
SUB1: "SUB1",
|
||
|
SIN: "SIN",
|
||
|
COS: "COS",
|
||
|
TAN: "TAN",
|
||
|
ATAN: "ATAN",
|
||
|
LN: "LN",
|
||
|
LOG: "LOG",
|
||
|
LOG3: "LOG3",
|
||
|
CLIP: "CLIP",
|
||
|
SMOOTH: "SMOOTH",
|
||
|
HOWMUCH: "HOWMUCH?",
|
||
|
SETRAND: "SETRAND",
|
||
|
RAND: "RAND",
|
||
|
NUMBERIZE: "NUMBERIZE",
|
||
|
ISOLATE: "ISOLATE",
|
||
|
MIX: "MIX",
|
||
|
CONTRADICT: "CONTRADICT",
|
||
|
COMPL: "COMPL",
|
||
|
SHIFTRIGHT: "SHIFTRIGHT",
|
||
|
SHIFTLEFT: "SHIFTLEFT",
|
||
|
GT: "GT?",
|
||
|
LT: "LT?",
|
||
|
EQ: "EQ?",
|
||
|
GE: "GE?",
|
||
|
LE: "LE?",
|
||
|
NE: "NE?",
|
||
|
NULL: "NULL",
|
||
|
NEGATIVE: "NEGATIVE",
|
||
|
ISNULL: "NULL?",
|
||
|
ISINT: "INT?",
|
||
|
ISNUMBER: "NUMBER?",
|
||
|
AND: "AND",
|
||
|
OR: "OR",
|
||
|
XOR: "XOR",
|
||
|
DISP: "DISP",
|
||
|
LISTEN: "LISTEN",
|
||
|
COMPLAIN: "COMPLAIN",
|
||
|
NEWLINE: "NEWLINE",
|
||
|
TAB: "TAB",
|
||
|
WHEREAMI: "WHEREAMI",
|
||
|
VERSION: "VERSION",
|
||
|
ARGV: "ARGV",
|
||
|
TIME: "TIME",
|
||
|
GARBAGECOLLECT: "GARBAGECOLLECT",
|
||
|
}
|
||
|
|
||
|
func (me TokenType) String() string {
|
||
|
return tokens[me]
|
||
|
}
|
||
|
|
||
|
type Token struct {
|
||
|
Toktype TokenType
|
||
|
Lexeme string
|
||
|
Literal any
|
||
|
Line int
|
||
|
}
|