Guest User

Untitled

a guest
Jun 18th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. package src;
  2. import gen.PortugaLexer;
  3. import gen.PortugaParser;
  4. import org.antlr.v4.gui.TreeViewer;
  5. import org.antlr.v4.runtime.ANTLRFileStream;
  6. import org.antlr.v4.runtime.CommonTokenStream;
  7. import org.antlr.v4.runtime.tree.ParseTree;
  8.  
  9. import java.io.IOException;
  10. import java.util.Arrays;
  11.  
  12.  
  13. public class Main {
  14.  
  15. public static void main(String args[]) throws IOException{
  16. String path;
  17. if(args.length > 0){
  18. path = args[0];
  19. }else{
  20. path = "input.txt";
  21. }
  22. try{
  23. ANTLRFileStream input = new ANTLRFileStream(path);
  24.  
  25. PortugaLexer lexer = new PortugaLexer(input);
  26. CommonTokenStream tokens = new CommonTokenStream(lexer);
  27. PortugaParser parser = new PortugaParser(tokens);
  28. //Remove o tratamento padrao, pra evitar duplicacao de mensagem
  29. parser.removeErrorListeners();
  30.  
  31. //Adiciona nosso Listener
  32. MyError errorListener = new MyError();
  33. parser.addErrorListener(errorListener);
  34. ParseTree tree = parser.program();
  35.  
  36. //Verifica se houve algum erro, e se sim throw antes de criar o viewer.
  37. if(!errorListener.errors.isEmpty()){
  38. throw new RuntimeException(String.join("\n", errorListener.errors));
  39. }
  40. TreeViewer viewer = new TreeViewer(Arrays.asList(parser.getRuleNames()), tree);
  41. viewer.open();
  42. }catch(RuntimeException e){
  43. System.out.println(e.getMessage());
  44. }
  45.  
  46. }
  47. }
Add Comment
Please, Sign In to add comment