diff options
| author | Jack Koenig | 2016-08-12 16:14:23 -0700 |
|---|---|---|
| committer | Adam Izraelevitz | 2016-08-12 16:14:23 -0700 |
| commit | cca37c46fc0848f5dbf5f95ba60755ed6d60712b (patch) | |
| tree | d97b3d55fb5e88329947dde0c7196b6ce78c4a8c /src/main | |
| parent | c0ede4f73dcee5fe3ef77a806180f938097654c9 (diff) | |
Fix calculation of runtime for ANTLR Parser (#229)
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/scala/firrtl/Parser.scala | 29 |
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") { |
