aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorJack Koenig2016-08-12 16:14:23 -0700
committerAdam Izraelevitz2016-08-12 16:14:23 -0700
commitcca37c46fc0848f5dbf5f95ba60755ed6d60712b (patch)
treed97b3d55fb5e88329947dde0c7196b6ce78c4a8c /src/main
parentc0ede4f73dcee5fe3ef77a806180f938097654c9 (diff)
Fix calculation of runtime for ANTLR Parser (#229)
Diffstat (limited to 'src/main')
-rw-r--r--src/main/scala/firrtl/Parser.scala29
1 files changed, 15 insertions, 14 deletions
diff --git a/src/main/scala/firrtl/Parser.scala b/src/main/scala/firrtl/Parser.scala
index e8d624e7..24c1b444 100644
--- a/src/main/scala/firrtl/Parser.scala
+++ b/src/main/scala/firrtl/Parser.scala
@@ -50,24 +50,25 @@ object Parser extends LazyLogging {
/** Takes Iterator over lines of FIRRTL, returns FirrtlNode (root node is Circuit) */
def parse(lines: Iterator[String], infoMode: InfoMode = UseInfo): Circuit = {
- val parser = {
- import scala.collection.JavaConverters._
- val inStream = new SequenceInputStream(
- lines.map{s => new ByteArrayInputStream((s + "\n").getBytes("UTF-8")) }.asJavaEnumeration
- )
- val lexer = new FIRRTLLexer(new ANTLRInputStream(inStream))
- new FIRRTLParser(new CommonTokenStream(lexer))
- }
+ val cst = time("ANTLR Parser") {
+ val parser = {
+ import scala.collection.JavaConverters._
+ val inStream = new SequenceInputStream(
+ lines.map{s => new ByteArrayInputStream((s + "\n").getBytes("UTF-8")) }.asJavaEnumeration
+ )
+ val lexer = new FIRRTLLexer(new ANTLRInputStream(inStream))
+ new FIRRTLParser(new CommonTokenStream(lexer))
+ }
- time("ANTLR Parser") {
parser.getInterpreter.setPredictionMode(PredictionMode.SLL)
- }
- // Concrete Syntax Tree
- val cst = parser.circuit
+ // Concrete Syntax Tree
+ val cst = parser.circuit
- val numSyntaxErrors = parser.getNumberOfSyntaxErrors
- if (numSyntaxErrors > 0) throw new ParserException(s"$numSyntaxErrors syntax error(s) detected")
+ val numSyntaxErrors = parser.getNumberOfSyntaxErrors
+ if (numSyntaxErrors > 0) throw new ParserException(s"$numSyntaxErrors syntax error(s) detected")
+ cst
+ }
val visitor = new Visitor(infoMode)
val ast = time("Visitor") {