diff options
| author | Richard Lin | 2018-06-11 15:05:36 -0700 |
|---|---|---|
| committer | Jack Koenig | 2018-06-11 15:05:36 -0700 |
| commit | f0beb8e9efb57dc4aef08103426bd28cf8445147 (patch) | |
| tree | 138ea0d62e9bea6601ca2e9ce99f7e1051e643b3 /src/main | |
| parent | 535d8025412a64471d8cc9c315505a8e2cbddbe0 (diff) | |
Allow escaped single quotes in RawParams (#820)
Escape raw params using \'
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/antlr4/FIRRTL.g4 | 2 | ||||
| -rw-r--r-- | src/main/scala/firrtl/Visitor.scala | 2 | ||||
| -rw-r--r-- | src/main/scala/firrtl/ir/IR.scala | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/src/main/antlr4/FIRRTL.g4 b/src/main/antlr4/FIRRTL.g4 index f360229a..cc5d0a16 100644 --- a/src/main/antlr4/FIRRTL.g4 +++ b/src/main/antlr4/FIRRTL.g4 @@ -324,7 +324,7 @@ RawString fragment UnquotedString - : ('\\"'|~[\r\n])+? + : ( '\\\'' | '\\"' | ~[\r\n] )+? ; FileInfo diff --git a/src/main/scala/firrtl/Visitor.scala b/src/main/scala/firrtl/Visitor.scala index 64249c11..f47d7ee3 100644 --- a/src/main/scala/firrtl/Visitor.scala +++ b/src/main/scala/firrtl/Visitor.scala @@ -92,7 +92,7 @@ class Visitor(infoMode: InfoMode) extends FIRRTLBaseVisitor[FirrtlNode] { case (int, null, null, null) => IntParam(name, string2BigInt(int.getText)) case (null, str, null, null) => StringParam(name, visitStringLit(str)) case (null, null, dbl, null) => DoubleParam(name, dbl.getText.toDouble) - case (null, null, null, raw) => RawStringParam(name, raw.getText.tail.init) // Remove "\'"s + case (null, null, null, raw) => RawStringParam(name, raw.getText.tail.init.replace("\\'", "'")) // Remove "\'"s case _ => throwInternalError(s"visiting impossible parameter ${ctx.getText}") } } diff --git a/src/main/scala/firrtl/ir/IR.scala b/src/main/scala/firrtl/ir/IR.scala index fc741b28..faebc7b8 100644 --- a/src/main/scala/firrtl/ir/IR.scala +++ b/src/main/scala/firrtl/ir/IR.scala @@ -526,7 +526,7 @@ case class StringParam(name: String, value: StringLit) extends Param { * @note Firrtl doesn't guarantee anything about this String being legal in any backend */ case class RawStringParam(name: String, value: String) extends Param { - override def serialize: String = super.serialize + s"'$value'" + override def serialize: String = super.serialize + s"'${value.replace("'", "\\'")}'" } /** Base class for modules */ |
