aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Waterman2016-02-08 21:31:49 -0800
committerAndrew Waterman2016-02-08 21:31:49 -0800
commitf0533bd701d372344af7e5827071148e9b37322c (patch)
tree34cb1c533657a5a066de2378e512bdc67a517a4f /src
parentf3c4c604549db6bbe824c29649bb05bba7470d8a (diff)
parent9dbdb3c87e7ddb75ac937678763b177e0b095523 (diff)
Merge pull request #60 from ucb-bar/escape-quote
Escape quotes before emitting Verilog
Diffstat (limited to 'src')
-rw-r--r--src/main/stanza/passes.stanza4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza
index 503e16c4..75be008f 100644
--- a/src/main/stanza/passes.stanza
+++ b/src/main/stanza/passes.stanza
@@ -2436,6 +2436,8 @@ defn escape (s:String) -> String :
for c in s do :
if c == '\n' :
add(s*,"\\n")
+ else if c == '"' :
+ add(s*, "\\\"")
else :
if c == 'x' and percent :
add(s*,"h")
@@ -2692,7 +2694,7 @@ defn emit-verilog (m:InModule) -> Module :
defn stop (ret:Int) -> Streamable :
["$fdisplay(32'h80000002,\"" ret "\");$finish;"]
defn printf (str:String,args:List<Expression>) -> Streamable :
- val str* = join(List(escape(str),args),",")
+ val str* = join(List(escape(str),map(escape,map(to-string,args))),",")
["$fwrite(32'h80000002," str* ");"]
defn delay (e:Expression, n:Int, clk:Expression) -> Expression :
var e* = e