diff options
| author | jackkoenig | 2016-03-14 22:35:06 -0700 |
|---|---|---|
| committer | jackkoenig | 2016-03-15 13:43:57 -0700 |
| commit | 373d3cfcb5566c448dcad6b679dee43bf66f878a (patch) | |
| tree | 6a80e496588f56f5c52be40bcc0155ba8987811a /src/main/scala/firrtl/Visitor.scala | |
| parent | 5737a8ccbf54a6d22095023205867e851e204c3f (diff) | |
Revamp string literal handling
Diffstat (limited to 'src/main/scala/firrtl/Visitor.scala')
| -rw-r--r-- | src/main/scala/firrtl/Visitor.scala | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/main/scala/firrtl/Visitor.scala b/src/main/scala/firrtl/Visitor.scala index 5204ce8e..222daf8a 100644 --- a/src/main/scala/firrtl/Visitor.scala +++ b/src/main/scala/firrtl/Visitor.scala @@ -41,6 +41,7 @@ import scala.collection.JavaConversions._ import antlr._ import PrimOps._ import FIRRTLParser._ +import scala.annotation.tailrec class Visitor(val fullFilename: String) extends FIRRTLBaseVisitor[AST] { @@ -166,6 +167,12 @@ class Visitor(val fullFilename: String) extends FIRRTLBaseVisitor[AST] map.getOrElse("writer", Seq()).map(x => (x.getText)), map.getOrElse("readwriter", Seq()).map(x => (x.getText))) } + // visitStringLit + private def visitStringLit[AST](node: TerminalNode): StringLit = { + val raw = node.getText.tail.init // Remove surrounding double quotes + FIRRTLStringLitHandler.unescape(raw) + } + // visitStmt private def visitStmt[AST](ctx: FIRRTLParser.StmtContext): Stmt = { val info = getInfo(ctx) @@ -201,8 +208,7 @@ class Visitor(val fullFilename: String) extends FIRRTLBaseVisitor[AST] Conditionally(info, visitExp(ctx.exp(0)), visitBlock(ctx.block(0)), alt) } case "stop(" => Stop(info, string2Int(ctx.IntLit(0).getText), visitExp(ctx.exp(0)), visitExp(ctx.exp(1))) - // Stip first and last character of string since they are the surrounding double quotes - case "printf(" => Print(info, ctx.StringLit.getText.tail.init, ctx.exp.drop(2).map(visitExp), + case "printf(" => Print(info, visitStringLit(ctx.StringLit), ctx.exp.drop(2).map(visitExp), visitExp(ctx.exp(0)), visitExp(ctx.exp(1))) case "skip" => Empty() // If we don't match on the first child, try the next one |
