#include "data.h"
#include "code.h"
-enum {
+enum tok {
TOK_TOP=1, TOK_AND, TOK_OR, TOK_NOT, TOK_LPAR, TOK_RPAR, TOK_LBRA,
TOK_RBRA, TOK_LCURL, TOK_RCURL, TOK_MUL, TOK_PLUS, TOK_MINUS, TOK_NEG,
TOK_DIV, TOK_CAT, TOK_COLON, TOK_DOT, TOK_COMMA, TOK_SEMI,
enum { PREC_BINARY=1, PREC_REVERSE, PREC_PREFIX, PREC_SUFFIX };
struct Token {
- int type;
+ enum tok type;
int line;
char* str;
int strlen;
int rule;
double num;
- struct Token* parent;
struct Token* next;
struct Token* prev;
struct Token* children;
// Computed line number table for the lexer
int* lines;
int nLines;
-
+
struct CodeGenerator* cg;
};
int nLineIps; // number of pairs
int nextLineIp;
+ int* argSyms;
+ int* optArgSyms;
+ int* optArgVals;
+ naRef restArgSym;
+
// Stack of "loop" frames for break/continue statements
struct {
int breakIP;