Adds error message to FindId, extra test code in main
							parent
							
								
									8f86392cf3
								
							
						
					
					
						commit
						565d815deb
					
				| 
						 | 
					@ -0,0 +1,6 @@
 | 
				
			||||||
 | 
					struct Program { 
 | 
				
			||||||
 | 
					    // This triggers a parse error
 | 
				
			||||||
 | 
					    static Main(): int {
 | 
				
			||||||
 | 
					        return 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -154,6 +154,11 @@ int PrintAncestors(IdNode *node) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IdNode* FindId(IdNode *root, NodeType targetType, char *targetName) {
 | 
					IdNode* FindId(IdNode *root, NodeType targetType, char *targetName) {
 | 
				
			||||||
 | 
					    if (root == NULL) {
 | 
				
			||||||
 | 
					        fprintf(stderr, "wraith: Attempted to call FindId on a null value.\n");
 | 
				
			||||||
 | 
					        return NULL;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    IdNode *result = NULL;
 | 
					    IdNode *result = NULL;
 | 
				
			||||||
    IdNode **frontier = (IdNode**)malloc(sizeof(IdNode*));
 | 
					    IdNode **frontier = (IdNode**)malloc(sizeof(IdNode*));
 | 
				
			||||||
    frontier[0] = root;
 | 
					    frontier[0] = root;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										10
									
								
								src/main.c
								
								
								
								
							
							
						
						
									
										10
									
								
								src/main.c
								
								
								
								
							| 
						 | 
					@ -64,14 +64,22 @@ int main(int argc, char *argv[])
 | 
				
			||||||
                    exitCode = EXIT_FAILURE;
 | 
					                    exitCode = EXIT_FAILURE;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        IdNode *idTree = MakeIdTree(rootNode, NULL);
 | 
					                        IdNode *idTree = MakeIdTree(rootNode, NULL);
 | 
				
			||||||
                        PrintIdTree(idTree, /*tabCount=*/0);
 | 
					                        PrintIdTree(idTree, /*tabCount=*/0);
 | 
				
			||||||
 | 
					                        printf("\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        printf("Searching for a variable named 'lol' and printing its ancestors\n");
 | 
					                        printf("Searching for a variable named 'lol' and printing its ancestors\n");
 | 
				
			||||||
                        IdNode *deepest = FindId(idTree, Variable, "lol");
 | 
					                        IdNode *deepest = FindId(idTree, Variable, "lol");
 | 
				
			||||||
                        PrintAncestors(deepest);
 | 
					                        PrintAncestors(deepest);
 | 
				
			||||||
 | 
					                        printf("\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        printf("Now searching for the same variable but with the caveat that it"
 | 
				
			||||||
 | 
					                               " must be inside an if-block, and printing its ancestors\n");
 | 
				
			||||||
 | 
					                        deepest = FindId(idTree, LexicalScope, "if");
 | 
				
			||||||
 | 
					                        deepest = FindId(deepest, Variable, "lol");
 | 
				
			||||||
 | 
					                        PrintAncestors(deepest);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    exitCode = Codegen(rootNode, optimizationLevel);
 | 
					                    exitCode = Codegen(rootNode, optimizationLevel);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue