rendered paste body#ifndef SW_TOKEN_TYPES#define SW_TOKEN_TYPEStypedef TOKEN const short unsigned inttypedef struct { TOKEN tk; union { char *string; int integer; float fraction; } value;} SwToken;/* These are the core types, advanced types such as lists/dicts contain these core types (among other things). */TOKEN SW_TOKEN_STRING_LITERAL = 1; /* using ', ", """, or ''' */TOKEN SW_TOKEN_INTEGER = 2; /* 0-9+ */TOKEN SW_TOKEN_FLOAT = 3; /* 0-9.(0-9)* */TOKEN SW_TOKEN_BOOL_TRUE = 4; /* true */TOKEN SW_TOKEN_BOOL_FALSE = 5; /* false *//* Symbols/Identifiers */TOKEN SW_TOKEN_PROCEDURE = 10; /* => */TOKEN SW_TOKEN_IDENTIFIER = 11; /* variables, functions, etc. *//*TOKEN SW_TOKEN_CONSTRUCT_LABEL = 12; /* eg: for, do, map, reduce, etc */TOKEN SW_TOKEN_RELATE = 12; /* -> */TOKEN SW_TOKEN_DO = 13; /* do: ... ; */TOKEN SW_TOKEN_WHILE = 14; /* while cond: ... ; */TOKEN SW_TOKEN_FOR = 15; /* for ...: ... ; */TOKEN SW_TOKEN_RETURN = 16; /* return ... */TOKEN SW_TOKEN_CONT = 17; /* continue */TOKEN SW_TOKEN_BREAK = 18; /* break *//* General symbols that can be ambiguous */TOKEN SW_TOKEN_COLON = 20; /* : */TOKEN SW_TOKEN_SEMICOLON = 21; /* ; */TOKEN SW_TOKEN_PERIOD = 22; /* . */TOKEN SW_TOKEN_COMMA = 23; /* , */TOKEN SW_TOKEN_SET = 24; /* = */TOKEN SW_TOKEN_JOIN = 25; /* _ */TOKEN SW_TOKEN_MORE_ARGS = 26; /* ... */TOKEN SW_TOKEN_RANGE = 27; /* .. *//* Operators */TOKEN SW_TOKEN_NOT = 30; /* ! */TOKEN SW_TOKEN_IS = 31; /* is */TOKEN SW_TOKEN_EQUALS = 32; /* == */TOKEN SW_TOKEN_IN = 33; /* in */TOKEN SW_TOKEN_NOT_EQUALS = 34; /* != */TOKEN SW_TOKEN_LOGICAL_AND = 35; /* && */TOKEN SW_TOKEN_LOGICAL_OR = 36; /* || */TOKEN SW_TOKEN_LOGICAL_XOR = 37; /* ^^ */TOKEN SW_TOKEN_LT = 38; /* < */TOKEN SW_TOKEN_GT = 39; /* > */TOKEN SW_TOKEN_LT_EQUAL = 40; /* <= */TOKEN SW_TOKEN_GT_EQUAL = 41; /* >= */TOKEN SW_TOKEN_ADD = 43; /* + */TOKEN SW_TOKEN_SUBTRACT = 44; /* - */TOKEN SW_TOKEN_DIVIDE = 45; /* / */TOKEN SW_TOKEN_MULTIPLY = 46; /* * */TOKEN SW_TOKEN_EXPONENT = 47; /* ** */TOKEN SW_TOKEN_SUBSTITUTE = 48; /* % *//* Parens/brackets/braces (would be cool if we could have chevrons as well) */TOKEN SW_TOKEN_PAREN_OPEN = 50; /* ( */TOKEN SW_TOKEN_PAREN_CLOSE = 51; /* ) */TOKEN SW_TOKEN_BRACKET_OPEN = 52; /* [ */TOKEN SW_TOKEN_BRACKET_CLOSE = 53; /* ] */TOKEN SW_TOKEN_BRACE_OPEN = 54; /* { */TOKEN SW_TOKEN_BRACE_CLOSE = 55; /* } *//* Bitwise operators */TOKEN SW_TOKEN_BIT_OR = 60; /* | */TOKEN SW_TOKEN_BIT_XOR = 61; /* ^ */TOKEN SW_TOKEN_BIT_AND = 62; /* & */TOKEN SW_TOKEN_BIT_LSHIFT = 64; /* << */TOKEN SW_TOKEN_BIT_RSHIFT = 65; /* >> */TOKEN SW_TOKEN_BIT_COMPLEMENT = 66; /* ~ */#endif