All pastes #818245 Raw Edit

k4st

public c v1 · immutable
·published 2007-12-16 05:01 UTC
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