diff options
| author | Andrew Waterman | 2016-02-08 21:31:49 -0800 |
|---|---|---|
| committer | Andrew Waterman | 2016-02-08 21:31:49 -0800 |
| commit | f0533bd701d372344af7e5827071148e9b37322c (patch) | |
| tree | 34cb1c533657a5a066de2378e512bdc67a517a4f /src | |
| parent | f3c4c604549db6bbe824c29649bb05bba7470d8a (diff) | |
| parent | 9dbdb3c87e7ddb75ac937678763b177e0b095523 (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.stanza | 4 |
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 |
