feat: Add comments to AST nodes
This commit introduces support for comments within the AST nodes. Comments are now parsed by the lexer and stored within the `Token` struct. These comments are then propagated through various compiler phases, including the `Node` struct, ensuring they are preserved in the Abstract Syntax Tree. This change enhances the AST's ability to retain source code information, which can be valuable for debugging and analysis.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
;; Benchmark: 1.2us
|
||||
;; Benchmark-Repeat: 1731
|
||||
;; Benchmark: 1.2us
|
||||
;; Benchmark-Repeat: 1731
|
||||
;; Output: [150 130 "Insufficient funds" 130]
|
||||
|
||||
; ---------------------------------------------------------
|
||||
@@ -36,10 +36,12 @@
|
||||
|
||||
; 2. Call 'deposit' method
|
||||
; Note the double parens: (.deposit my-acc) gets the function, then we call it
|
||||
(def b1 ((.deposit my-acc) 50)) ; balance is now 150
|
||||
; balance is now 150
|
||||
(def b1 ((.deposit my-acc) 50))
|
||||
|
||||
; 3. Call 'withdraw' method
|
||||
(def b2 ((.withdraw my-acc) 20)) ; balance is now 130
|
||||
; balance is now 130
|
||||
(def b2 ((.withdraw my-acc) 20))
|
||||
|
||||
; 4. Call 'withdraw' with invalid amount
|
||||
(def error-msg ((.withdraw my-acc) 1000))
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
;; Benchmark: 102ns
|
||||
;; Benchmark-Repeat: 20685
|
||||
;; Output: [42 150]
|
||||
;; Benchmark: 102ns
|
||||
;; Benchmark-Repeat: 20685
|
||||
;; Output: [42 150]
|
||||
(do
|
||||
;; 1. Provokation Stack-Gap (bei Optimization Level 2)
|
||||
(def result
|
||||
(fn []
|
||||
(do
|
||||
(def unused 10) ;; Wird entfernt, Slot 0 ist dann "leer"
|
||||
(def used 42) ;; Bleibt auf Slot 1 -> Lücke!
|
||||
;; Wird entfernt, Slot 0 ist dann "leer"
|
||||
(def unused 10)
|
||||
;; Bleibt auf Slot 1 -> Lücke!
|
||||
(def used 42)
|
||||
used)))
|
||||
|
||||
;; 2. Provokation Inlining-Blockade
|
||||
|
||||
@@ -17,7 +17,8 @@
|
||||
(pipe [ticker]
|
||||
(fn [_]
|
||||
(do
|
||||
(def change (* (- (random) 0.5) 2.0)) ; Matches Rust: (rng.f64() - 0.5) * 2.0
|
||||
; Matches Rust: (rng.f64() - 0.5) * 2.0
|
||||
(def change (* (- (random) 0.5) 2.0))
|
||||
(def open last-close)
|
||||
(def high (+ open (abs (* (random) 2.0))))
|
||||
(def low (- open (abs (* (random) 2.0))))
|
||||
|
||||
Reference in New Issue
Block a user