package jplag.antlr4Learning;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import jplag.java17.JplagJava7Listener;
import jplag.java17.grammar.Java7Lexer;
import jplag.java17.grammar.Java7Parser;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.tree.ParseTree;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
public class Antlr4LearningTests {
private static File srcTestResources;
@BeforeClass
public static void getPaths() {
srcTestResources = new File(System.getProperty("user.dir"), "src/test/resources");
}
@Test
public void testVisitor() throws IOException {
BufferedInputStream fis = new BufferedInputStream(new FileInputStream(new File(srcTestResources, "ExceptionOne.java")));
ANTLRInputStream input = new ANTLRInputStream(fis);
// create a lexer that feeds off of input CharStream
Java7Lexer lexer = new Java7Lexer(input);
// create a buffer of tokens pulled from the lexer
CommonTokenStream tokens = new CommonTokenStream(lexer);
jplag.java17.grammar.Java7Parser j7p = new Java7Parser(tokens);
j7p.addParseListener(new JplagJava7Listener(new jplag.java17.Parser()));
j7p.compilationUnit();
}
@Ignore
public void howToUseAntlr4() throws IOException {
FileInputStream fis = new FileInputStream(new File(srcTestResources, "Java7FeatureTest.java"));
// create a CharStream that reads from file input stream
ANTLRInputStream input = new ANTLRInputStream(fis);
// create a lexer that feeds off of input CharStream
Java7Lexer lexer = new Java7Lexer(input);
// create a buffer of tokens pulled from the lexer
CommonTokenStream tokens = new CommonTokenStream(lexer);
// create a parser that feeds off the tokens buffer
Java7Parser parser = new Java7Parser(tokens);
ParseTree tree = parser.compilationUnit(); // begin parsing at compilationUnit rule
System.out.println(tree.toStringTree(parser)); // print LISP-style tree
}
@Ignore
public void howToUseAntlr4Tokens() throws IOException {
FileInputStream fis = new FileInputStream(new File(srcTestResources, "Java7FeatureTest.java"));
// create a CharStream that reads from file input stream
ANTLRInputStream input = new ANTLRInputStream(fis);
// create a lexer that feeds off of input CharStream
Java7Lexer lexer = new Java7Lexer(input);
for (Token t : lexer.getAllTokens()) {
System.out.println(lexer.getTokenNames()[t.getType()]);
}
}
}