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