diff options
| author | jackkoenig | 2015-12-04 18:15:03 -0800 |
|---|---|---|
| committer | jackkoenig | 2015-12-04 18:15:03 -0800 |
| commit | e8ac783706cca1f7ee65d799b5d8be445b6a5c5d (patch) | |
| tree | f709f4f522f1e54c41c70ae733334646d2ef17af /src/main/scala/firrtl/Parser.scala | |
| parent | 4d88455c66bd3aa7fd549cdec4f1d05ede83fea2 (diff) | |
Everything is broken, need Translator to work on files without a circuit, need to parse queue module text in midas/Utils.scala, need to create (src, dst) -> Module mapping in midas/Fame.scala
Diffstat (limited to 'src/main/scala/firrtl/Parser.scala')
| -rw-r--r-- | src/main/scala/firrtl/Parser.scala | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/Parser.scala b/src/main/scala/firrtl/Parser.scala index 35e41222..40956ab7 100644 --- a/src/main/scala/firrtl/Parser.scala +++ b/src/main/scala/firrtl/Parser.scala @@ -11,6 +11,29 @@ import antlr._ object Parser { + def parseModule(string: String): Module = { + val fixedInput = Translator.addBrackets(Iterator(string)) + val antlrStream = new ANTLRInputStream(fixedInput.result) + val lexer = new FIRRTLLexer(antlrStream) + val tokens = new CommonTokenStream(lexer) + val parser = new FIRRTLParser(tokens) + + // FIXME Dangerous + parser.getInterpreter.setPredictionMode(PredictionMode.SLL) + + // Concrete Syntax Tree + val cst = parser.module + + val visitor = new Visitor("none") + //val ast = visitor.visitCircuit(cst) match { + val ast = visitor.visit(cst) match { + case m: Module => m + case x => throw new ClassCastException("Error! AST not rooted with Module node!") + } + + ast + + } /** Takes a firrtl filename, returns AST (root node is Circuit) * |
