From a94b482b001d99ecffdb31067319773cbde4501e Mon Sep 17 00:00:00 2001 From: Shagun Agrawal Date: Wed, 30 Oct 2024 00:34:36 +0530 Subject: Add emission for functions Able to execute "hello, world" program. Some segmentation faults in specific test steps. Executables not exiting on their own. --- src/cljcc/tacky.clj | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/cljcc/tacky.clj') diff --git a/src/cljcc/tacky.clj b/src/cljcc/tacky.clj index 5451f78..1b339d9 100644 --- a/src/cljcc/tacky.clj +++ b/src/cljcc/tacky.clj @@ -4,7 +4,8 @@ [cljcc.lexer :as l] [cljcc.util :as u] [cljcc.parser :as p] - [cljcc.analyzer :as a])) + [cljcc.analyzer :as a] + [cljcc.symbols :as symbols])) (defn- variable ([] @@ -379,8 +380,9 @@ (dissoc :body) (assoc :instructions instructions)))) -(defn tacky-generate [{ast :block}] - (let [defined? (fn [x] (seq (:body x)))] +(defn tacky-generate [{ast :block symbols :decl-name->symbol}] + (let [_ (symbols/reset-symbols symbols) + defined? (fn [x] (or (= (:identifier x) "main") (seq (:body x))))] (->> ast (filter defined?) (map function-definition->tacky-function)))) -- cgit v1.2.3