package varaq type TokenType int64 const ( UNDEFINED TokenType = iota IDENTIFIER // id STRING // string NUMBER // float BOOLEAN // bool LIST // list SCRIPT // script FUNCTION // function ERROR // error LEFTPAREN // ( RIGHTPAREN // ) LEFTBRACE // { RIGHTBRACE // } TILDE // The ~ operator is a special form, as it is not a postfix operator. When the interpreter encounters a ~, it pushes the next token on the stack as is regardless of whether it is a defined name. SLASH // / STAR // * FALSE // false TRUE // true PI // 3.14159 E // 2.718 EOF // end of file POP // Pops and discards the top item on the stack. The literal meaning is discard. DUP // Duplicates the top object on the stack. EXCH // Inverts the order of the top two objects on the stack. CLEAR // Empties the stack. REMEMBER // Puts a flag (like PostScript’s mark) on the stack. The internal representation of the flag is not available to the programmer. FORGET // Clears the stack down to the flag and pops the flag. If there is no flag present, the stack is emptied completely. DUMP // Prints the contents of the operand stack to STDOUT without changing them. NAME // Associates obj with id and places it in the system lookup space. Conventionally used to associate new operator names with procedure objects. SET // Reassigns the value of a value already in the system lookup space. Used primarily for variable assignments. IFYES // IFNO // CHOOSE // EVAL // ESCAPE // REPEAT // SPLIT // CONS // SHATTER // MEASURE // 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 // OVER // ROT // DEPTH // SERVEHTTP // READALL // ) 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", MEASURE: "MEASURE", 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", OVER: "OVER", ROT: "ROT", DEPTH: "DEPTH", SERVEHTTP: "SERVEHTTP", READALL: "READALL", } func (me TokenType) String() string { return tokens[me] } type Token struct { Toktype TokenType Lexeme string Literal any Line int }