Merge branch 'master' of serenade.mutabah.net:acess2
[tpg/acess2.git] / Usermode / Libraries / libspiderscript.so_src / tokens.h
index 5a529f7..44176b0 100644 (file)
@@ -5,26 +5,33 @@
 
 #include <setjmp.h>
 
+// Make the scope character ('.') be a symbol, otherwise it's just
+// a ident character
+#define USE_SCOPE_CHAR 1
+
 // === TYPES ===
 typedef struct
 {      
        // Lexer State
-       char    *BufStart;
-       char    *CurPos;
+       const char      *BufStart;
+       const char      *CurPos;
+       
+       char    *Filename;
        
         int    LastLine;
         int    LastToken, LastTokenLen;
-       char    *LastTokenStr;
+       const char      *LastTokenStr;
        
         int    NextLine;
         int    NextToken, NextTokenLen;
-       char    *NextTokenStr;
+       const char      *NextTokenStr;
        
         int    CurLine;
         int    Token, TokenLen;
-       char    *TokenStr;
+       const char      *TokenStr;
        
        jmp_buf JmpTarget;
+        int    ErrorHit;
 }      tParser;
 
 // === FUNCTIONS ===
@@ -41,6 +48,7 @@ enum eTokens
        // Primitives
        TOK_STR,
        TOK_INTEGER,
+       TOK_REAL,
        TOK_VARIABLE,
        TOK_IDENT,
        
@@ -59,6 +67,8 @@ enum eTokens
        TOK_RWD_DO,
        TOK_RWD_WHILE,
        TOK_RWD_FOR,
+       // - Value
+       TOK_RWD_NULL,
        // - Types
        TOK_RWD_VOID,
        TOK_RWD_OBJECT,
@@ -80,6 +90,7 @@ enum eTokens
        TOK_GT, TOK_GTE,
        
        // Operations
+       TOK_BWNOT,      TOK_LOGICNOT,
        TOK_DIV,        TOK_MUL,
        TOK_PLUS,       TOK_MINUS,
        TOK_SHL,        TOK_SHR,
@@ -116,7 +127,7 @@ enum eTokens
        case TOK_RWD_OBJECT: _type = SS_DATATYPE_OBJECT;        break;\
        case TOK_RWD_REAL:   _type = SS_DATATYPE_REAL;  break;\
        case TOK_RWD_STRING: _type = SS_DATATYPE_STRING;        break;\
-       default:fprintf(stderr,\
+       default:_type=SS_DATATYPE_UNDEF;fprintf(stderr,\
        "ERROR: Unexpected %s, expected "TOKEN_GROUP_TYPES_STR"\n",csaTOKEN_NAMES[Parser->Token]);\
        break;\
        } } while(0)
@@ -128,6 +139,7 @@ const char * const csaTOKEN_NAMES[] = {
        
        "TOK_STR",
        "TOK_INTEGER",
+       "TOK_REAL",
        "TOK_VARIABLE",
        "TOK_IDENT",
        
@@ -145,6 +157,7 @@ const char * const csaTOKEN_NAMES[] = {
        "TOK_RWD_WHILE",
        "TOK_RWD_FOR",
        
+       "TOK_RWD_NULL",
        "TOK_RWD_VOID",
        "TOK_RWD_OBJECT",
        "TOK_RWD_OPAUQE",
@@ -162,6 +175,7 @@ const char * const csaTOKEN_NAMES[] = {
        "TOK_LT",       "TOK_LTE",
        "TOK_GT",       "TOK_GTE",
        
+       "TOK_BWNOT",    "TOK_LOGICNOT",
        "TOK_DIV",      "TOK_MUL",
        "TOK_PLUS",     "TOK_MINUS",
        "TOK_SHL",      "TOK_SHR",

UCC git Repository :: git.ucc.asn.au