[11 - Antlr Parser] Add "CC-Praxis-Antlr Parser fuer X-Leer"
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
/* **********************************************
|
||||
* Duale Hochschule Baden-Württemberg Karlsruhe
|
||||
* Prof. Dr. Jörn Eisenbiegler
|
||||
*
|
||||
* Vorlesung Übersetzerbau
|
||||
* Praxis ANTLR-Parser für X
|
||||
* - Main-Klasse
|
||||
*
|
||||
* **********************************************
|
||||
*/
|
||||
|
||||
package de.dhbw.compiler.antlrxparser;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.PrintWriter;
|
||||
import org.antlr.runtime.ANTLRInputStream;
|
||||
import org.antlr.runtime.CommonTokenStream;
|
||||
import org.antlr.runtime.tree.CommonTree;
|
||||
import org.antlr.runtime.tree.DOTTreeGenerator;
|
||||
import org.antlr.runtime.tree.Tree;
|
||||
import org.antlr.stringtemplate.StringTemplate;
|
||||
|
||||
public class AntlrXParserMain {
|
||||
|
||||
public static void saveToGrapvizDOT(Tree tree, String name) throws FileNotFoundException {
|
||||
StringTemplate dot = (new DOTTreeGenerator()).toDOT(tree);
|
||||
PrintWriter out = new PrintWriter(name);
|
||||
out.println(dot.toString());
|
||||
out.close();
|
||||
}
|
||||
|
||||
private static final String TEST =
|
||||
"program test2;\n"+
|
||||
" x : int;\n"+
|
||||
" y : float;\n"+
|
||||
" z : string;\n"+
|
||||
"begin\n"+
|
||||
" x := 4+5+6.2;\n"+
|
||||
" y := 3.56+1.2e3+45.e-67+4e34+3E-1;\n"+
|
||||
" z := \"Hello \\\"World\\\"\" + \":\";\n"+
|
||||
" z := \"Peter\" + 4;\n"+
|
||||
" if 2<3 then abc := 5 else abc := 7;\n"+
|
||||
" while (x>y) y := y+1;\n"+
|
||||
" begin\n"+
|
||||
" for (x:=1; x<6; x:=x+1) y:=y+2;\n"+
|
||||
" end;\n"+
|
||||
"end.";
|
||||
|
||||
private static final String TEST2 =
|
||||
"program test2;\n"+
|
||||
"begin\n"+
|
||||
" x := 4-5*6*7+8/9;\n"+
|
||||
"end.";
|
||||
|
||||
private static final String BEISPIELFOLIEN =
|
||||
"program test5;\n"+
|
||||
" read x : int;\n"+
|
||||
" print y : float;\n"+
|
||||
" z : int;\n"+
|
||||
"begin\n"+
|
||||
" while (x<4) begin\n"+
|
||||
" for (z:=0; z<4; z:=z+1) x:=x+2;\n"+
|
||||
" if x=4 then begin\n"+
|
||||
" x:=z*(x+2);\n"+
|
||||
" x:=x+10;\n"+
|
||||
" end else y:=100.e-3;\n"+
|
||||
" end;\n"+
|
||||
"end.\n";
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
ANTLRInputStream input = new ANTLRInputStream(new ByteArrayInputStream(BEISPIELFOLIEN.getBytes()));
|
||||
|
||||
//TODO
|
||||
// - Scanner aufrufen
|
||||
// - Parser aufrufen
|
||||
// - Text- und Grapviz-Form ausgeben/speichern
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user