aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/Parser.scala
diff options
context:
space:
mode:
authorjackkoenig2016-05-11 23:44:14 -0700
committerjackkoenig2016-05-12 00:15:40 -0700
commit0ee659e85c7fe46c2678a49866ef1eca8f4a2c65 (patch)
treea78810b137d106a59b56d9d38e985796ea8da97f /src/main/scala/firrtl/Parser.scala
parent6d72dfbb50a9ccd7944b90d509d9796704aa69a9 (diff)
Implement File Info
Diffstat (limited to 'src/main/scala/firrtl/Parser.scala')
-rw-r--r--src/main/scala/firrtl/Parser.scala11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/main/scala/firrtl/Parser.scala b/src/main/scala/firrtl/Parser.scala
index 070a3619..e6489b2f 100644
--- a/src/main/scala/firrtl/Parser.scala
+++ b/src/main/scala/firrtl/Parser.scala
@@ -41,7 +41,7 @@ case class InvalidEscapeCharException(message: String) extends ParserException(m
object Parser extends LazyLogging
{
/** Takes Iterator over lines of FIRRTL, returns AST (root node is Circuit) */
- def parse(filename: String, lines: Iterator[String], useInfo: Boolean = true): Circuit = {
+ def parse(lines: Iterator[String], infoMode: InfoMode = UseInfo): Circuit = {
val fixedInput = time("Translator") { Translator.addBrackets(lines) }
val antlrStream = new ANTLRInputStream(fixedInput.result)
val lexer = new FIRRTLLexer(antlrStream)
@@ -56,7 +56,7 @@ object Parser extends LazyLogging
val numSyntaxErrors = parser.getNumberOfSyntaxErrors
if (numSyntaxErrors > 0) throw new ParserException(s"${numSyntaxErrors} syntax error(s) detected")
- val visitor = new Visitor(filename, useInfo)
+ val visitor = new Visitor(infoMode)
val ast = time("Visitor") { visitor.visit(cst) } match {
case c: Circuit => c
case x => throw new ClassCastException("Error! AST not rooted with Circuit node!")
@@ -65,6 +65,11 @@ object Parser extends LazyLogging
ast
}
- def parse(lines: Seq[String]): Circuit = parse("<None>", lines.iterator)
+ def parse(lines: Seq[String]): Circuit = parse(lines.iterator)
+ sealed abstract class InfoMode
+ case object IgnoreInfo extends InfoMode
+ case object UseInfo extends InfoMode
+ case class GenInfo(filename: String) extends InfoMode
+ case class AppendInfo(filename: String) extends InfoMode
}