Compare commits
2 Commits
8d2f98aa53
...
72fa2127c8
Author | SHA1 | Date | |
---|---|---|---|
72fa2127c8 | |||
28c349726e |
|
@ -104,7 +104,7 @@ int AssembleTree(struct ASTNode* Node, int Register, int ParentOp) {
|
|||
return AsAddr(Node->Value.ID);
|
||||
|
||||
case OP_DEREF:
|
||||
return AsDeref(LeftVal, Node->Left->ExprType);
|
||||
return Node->RVal ? AsDeref(LeftVal, Node->Left->ExprType) : LeftVal;
|
||||
|
||||
case OP_ASSIGN:
|
||||
printf("Calculating for assignment..\r\n");
|
||||
|
|
|
@ -75,7 +75,7 @@ void DumpTree(struct ASTNode* node, int level) {
|
|||
case OP_GREATE: fprintf(stdout, "OP_GREATE\n"); return;
|
||||
case TERM_INTLITERAL: fprintf(stdout, "TERM_INTLITERAL %d\n", node->Value.IntValue); return;
|
||||
case REF_IDENT:
|
||||
if(node->Right)
|
||||
if(node->RVal)
|
||||
fprintf(stdout, "REF_IDENT rval %s\n", Symbols[node->Value.ID].Name);
|
||||
else
|
||||
fprintf(stdout, "REF_IDENT %s\n", Symbols[node->Value.ID].Name);
|
||||
|
@ -85,7 +85,8 @@ void DumpTree(struct ASTNode* node, int level) {
|
|||
case OP_RET: fprintf(stdout, "OP_RET\n"); return;
|
||||
case OP_CALL: fprintf(stdout, "OP_CALL %s\n", Symbols[node->Value.ID].Name); return;
|
||||
case OP_ADDRESS: fprintf(stdout, "OP_ADDRESS %s\n", Symbols[node->Value.ID].Name); return;
|
||||
case OP_DEREF: fprintf(stdout, "OP_DEREF\n"); return;
|
||||
case OP_DEREF:
|
||||
fprintf(stdout, "OP_DEREF %s\n", node->RVal ? "rval" : ""); return;
|
||||
case OP_SCALE: fprintf(stdout, "OP_SCALE %s\n", TypeNames[node->Value.Size]); return;
|
||||
|
||||
default:
|
||||
|
|
|
@ -192,6 +192,7 @@ struct ASTNode* ParsePrecedenceASTNode(int PreviousTokenPrecedence) {
|
|||
if(OpType == OP_ASSIGN) {
|
||||
printf("\tParsePrecedenceASTNode: Assignment statement\r\n");
|
||||
RightNode->RVal = 1;
|
||||
LeftNode->RVal = 0;
|
||||
|
||||
RightNode = MutateType(RightNode, LeftNode->ExprType, 0);
|
||||
if(LeftNode == NULL)
|
||||
|
|
Loading…
Reference in New Issue
Block a user