From e88635d6d32055cc7d3a4ccf16c1a74cb5b88d1c Mon Sep 17 00:00:00 2001 From: Shagun Agrawal Date: Thu, 22 Aug 2024 00:51:56 +0530 Subject: Add analyzer for validating program semantics Add validator for semantic analysis Pass ch5 test cases for validate flag --- src/cljcc/util.clj | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/cljcc/util.clj') diff --git a/src/cljcc/util.clj b/src/cljcc/util.clj index 34b696c..e277654 100644 --- a/src/cljcc/util.clj +++ b/src/cljcc/util.clj @@ -1,7 +1,28 @@ (ns cljcc.util (:require [clojure.java.shell :refer [sh]] + [clojure.string :as s] [cljcc.log :as log])) +(def ^:private counter "Global integer counter for generating unique identifier names." (atom 0)) + +(defn create-identifier! + "Returns a unique identifier. Used for generating unique identifier. + + Removes : from keywords. + Replaces all - with _ for generating valid assembly names." + ([] + (create-identifier! "tmp")) + ([identifier] + (let [n @counter + _ (swap! counter inc)] + (-> identifier + (str "." n) + (s/replace #":" "") + (s/replace #"-" "_"))))) + +(defn reset-counter! [] + (reset! counter 0)) + (defn make-file-name ([^String filename ^String ext] (str filename "." ext)) -- cgit v1.2.3