new parser
This commit is contained in:
@@ -5,6 +5,7 @@ typedef struct {
|
|||||||
char* left;
|
char* left;
|
||||||
char* right;
|
char* right;
|
||||||
symbols node;
|
symbols node;
|
||||||
|
size_t cursor;
|
||||||
size_t prec;
|
size_t prec;
|
||||||
} ASTNode;
|
} ASTNode;
|
||||||
|
|
||||||
@@ -33,7 +34,8 @@ void construct_nodes(ASTTree* a, Token t){
|
|||||||
a->nodes[nc].node = TOKEN_PLUS;
|
a->nodes[nc].node = TOKEN_PLUS;
|
||||||
a->nodes[nc].left = t.text[i-1];
|
a->nodes[nc].left = t.text[i-1];
|
||||||
a->nodes[nc].right = t.text[i+1];
|
a->nodes[nc].right = t.text[i+1];
|
||||||
// add precedense later for large tree construction
|
a->nodes[nc].prec = 1;
|
||||||
|
a->nodes[nc].cursor = nc;
|
||||||
nc++;
|
nc++;
|
||||||
break;
|
break;
|
||||||
case TOKEN_MINUS:
|
case TOKEN_MINUS:
|
||||||
@@ -41,6 +43,8 @@ void construct_nodes(ASTTree* a, Token t){
|
|||||||
a->nodes[nc].node = TOKEN_MINUS;
|
a->nodes[nc].node = TOKEN_MINUS;
|
||||||
a->nodes[nc].left = t.text[i-1];
|
a->nodes[nc].left = t.text[i-1];
|
||||||
a->nodes[nc].right = t.text[i+1];
|
a->nodes[nc].right = t.text[i+1];
|
||||||
|
a->nodes[nc].prec = 1;
|
||||||
|
a->nodes[nc].cursor = nc;
|
||||||
nc++;
|
nc++;
|
||||||
break;
|
break;
|
||||||
case TOKEN_DIV:
|
case TOKEN_DIV:
|
||||||
@@ -48,6 +52,8 @@ void construct_nodes(ASTTree* a, Token t){
|
|||||||
a->nodes[nc].node = TOKEN_DIV;
|
a->nodes[nc].node = TOKEN_DIV;
|
||||||
a->nodes[nc].left = t.text[i-1];
|
a->nodes[nc].left = t.text[i-1];
|
||||||
a->nodes[nc].right = t.text[i+1];
|
a->nodes[nc].right = t.text[i+1];
|
||||||
|
a->nodes[nc].prec = 2;
|
||||||
|
a->nodes[nc].cursor = nc;
|
||||||
nc++;
|
nc++;
|
||||||
break;
|
break;
|
||||||
case TOKEN_MUL:
|
case TOKEN_MUL:
|
||||||
@@ -55,10 +61,11 @@ void construct_nodes(ASTTree* a, Token t){
|
|||||||
a->nodes[nc].node = TOKEN_MUL;
|
a->nodes[nc].node = TOKEN_MUL;
|
||||||
a->nodes[nc].left = t.text[i-1];
|
a->nodes[nc].left = t.text[i-1];
|
||||||
a->nodes[nc].right = t.text[i+1];
|
a->nodes[nc].right = t.text[i+1];
|
||||||
|
a->nodes[nc].prec = 2;
|
||||||
|
a->nodes[nc].cursor = nc;
|
||||||
nc++;
|
nc++;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user