diff options
| author | Shagun Agrawal <agrawalshagun07@gmail.com> | 2024-08-22 00:51:56 +0530 |
|---|---|---|
| committer | Shagun Agrawal <agrawalshagun07@gmail.com> | 2024-08-22 00:51:56 +0530 |
| commit | e88635d6d32055cc7d3a4ccf16c1a74cb5b88d1c (patch) | |
| tree | 103ed07e89ae47cc723382ee712a0ca61b869844 /src/cljcc/util.clj | |
| parent | 502a23ce2966d4ad96ad65735718fcaaebc8d4e1 (diff) | |
Add analyzer for validating program semantics
Add validator for semantic analysis
Pass ch5 test cases for validate flag
Diffstat (limited to 'src/cljcc/util.clj')
| -rw-r--r-- | src/cljcc/util.clj | 21 |
1 files changed, 21 insertions, 0 deletions
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)) |
