diff --git a/il-structs.rkt b/il-structs.rkt index 242ed22..d1bbf64 100644 --- a/il-structs.rkt +++ b/il-structs.rkt @@ -132,7 +132,9 @@ PopControlFrame - DebugPrint)) + DebugPrint + Comment + )) ;; Debug print statement. @@ -215,6 +217,8 @@ #:transparent) +(define-struct: Comment ([val : Any]) + #:transparent) diff --git a/js-assembler/assemble.rkt b/js-assembler/assemble.rkt index b15f763..2dd4d5a 100644 --- a/js-assembler/assemble.rkt +++ b/js-assembler/assemble.rkt @@ -154,6 +154,8 @@ EOF [(PushControlFrame/Prompt? stmt) (next)] [(PopControlFrame? stmt) + (next)] + [(Comment? stmt) (next)]))])) @@ -292,7 +294,10 @@ EOF (format "[~a]" (assemble-oparg (PushImmediateOntoEnvironment-value stmt)))] [else (assemble-oparg (PushImmediateOntoEnvironment-value stmt))])]) - val-string))]))) + val-string))] + [(Comment? stmt) + ;; TODO: maybe comments should be emitted as JavaScript comments. + ""]))) (define-predicate natural? Natural) diff --git a/js-assembler/collect-jump-targets.rkt b/js-assembler/collect-jump-targets.rkt index 766ad44..06f3090 100644 --- a/js-assembler/collect-jump-targets.rkt +++ b/js-assembler/collect-jump-targets.rkt @@ -60,6 +60,8 @@ [(PushControlFrame/Prompt? stmt) (label->labels (PushControlFrame/Prompt-label stmt))] [(PopControlFrame? stmt) + empty] + [(Comment? stmt) empty])) diff --git a/optimize-il.rkt b/optimize-il.rkt index 491a06c..ce7e0f9 100644 --- a/optimize-il.rkt +++ b/optimize-il.rkt @@ -102,6 +102,8 @@ #f] [(PopControlFrame? stmt) + #f] + [(Comment? stmt) #f])) diff --git a/simulator/simulator.rkt b/simulator/simulator.rkt index abc4399..cbf230f 100644 --- a/simulator/simulator.rkt +++ b/simulator/simulator.rkt @@ -124,6 +124,8 @@ (step-push-control-frame/prompt! m i)] [(PopControlFrame? i) (step-pop-control-frame! m i)] + [(Comment? i) + 'ok] )]) (increment-pc! m)))