From 62c0e242d63690d973951285b9758734c913f182 Mon Sep 17 00:00:00 2001 From: pycsham <shampuiyanchloe@gmail.com> Date: Fri, 28 Feb 2020 02:25:48 -0500 Subject: [PATCH] Finished joosc.py file. Fixed a small error in ASTBuilding.py --- AstBuilding.py | 1 + joosc.py | 69 +++++++++++++++++++++++++++++++------------------- 2 files changed, 44 insertions(+), 26 deletions(-) diff --git a/AstBuilding.py b/AstBuilding.py index 032b03e..22e7acd 100644 --- a/AstBuilding.py +++ b/AstBuilding.py @@ -24,6 +24,7 @@ def buildEnvAndLink(ASTs): try: t[1].recurseBuildEnv(globalEnv) except Exception as e: # to handle double local variable declaration + raise e print('\n\n\n', t[0]) print("###################### Comp Unit Env ####################") t[1].recurseAction("printEnv") diff --git a/joosc.py b/joosc.py index 651d2ce..4e4ad39 100644 --- a/joosc.py +++ b/joosc.py @@ -5,37 +5,54 @@ from os.path import isfile, join from Scanning import scan from Parsing import parse -from Weeding import weedTokens +from AstBuilding import astBuild, buildEnvAndLink +import Weeding def main(): - inputfile = sys.argv[1] - content = open(inputfile, "r").read() - - # Scanning + inputFiles = [f for f in sys.argv[1:]] + + parseTrees = [] + + for f in inputFiles: + content = open(f, "r").read() + + # Scanning + try: + (tokens, error) = scan(content) + except: + return 42 + if tokens is None: + return 42 + + # Weeding after scanning + # No weeds if everything is good (weeds = None) + weeds = Weeding.fileNameCheck(tokens, f) + if weeds: + return 42 + + # Parsing + tree = None + try: + (tree, error) = parse(tokens) + except: + return 42 + + # Error in Parsing + if tree is None: + return 42 + + parseTrees.append((f, tree)) + print(tree) + + # Building ASTs from all parse trees + ASTs = astBuild(parseTrees) + try: - (tokens, errorString) = scan(content) - except: - return 42 - - # Error in Scanning - if tokens is None: - return 42 - - # Weed the tokens - weeds = weedTokens(tokens, inputfile) - if weeds != "": - return 42 - - # Parsing - (steps, error) = parse(tokens) - - - - if steps is None: - return 42 + buildEnvAndLink(ASTs) + except Exception as e: + return 42 # double local variable declarations - # print("success in scanning and parsing") return 0 re = main() -- GitLab