#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 ===
TOK_RWD_DO,
TOK_RWD_WHILE,
TOK_RWD_FOR,
+ // - Value
+ TOK_RWD_NULL,
// - Types
TOK_RWD_VOID,
TOK_RWD_OBJECT,
TOK_ELEMENT,
// Comparisons
- TOK_EQUALS,
+ TOK_EQUALS, TOK_NOTEQUALS,
TOK_LT, TOK_LTE,
TOK_GT, TOK_GTE,
"TOK_RWD_WHILE",
"TOK_RWD_FOR",
+ "TOK_RWD_NULL",
"TOK_RWD_VOID",
"TOK_RWD_OBJECT",
"TOK_RWD_OPAUQE",
"TOK_SCOPE",
"TOK_ELEMENT",
- "TOK_EQUALS",
+ "TOK_EQUALS", "TOK_NOTEQUALS",
"TOK_LT", "TOK_LTE",
"TOK_GT", "TOK_GTE",