basicint.Run.java Source code

Java tutorial

Introduction

Here is the source code for basicint.Run.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package basicint;

import basicint.parser.BasicLexer;
import basicint.parser.BasicParser;
import basicint.util.SymbolsTable;
import java.awt.HeadlessException;
import java.util.Arrays;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.antlr.v4.gui.TreeViewer;
import org.antlr.v4.runtime.ANTLRFileStream;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.BufferedTokenStream;
import org.antlr.v4.runtime.TokenStream;
import org.antlr.v4.runtime.tree.ParseTree;

/**
 *
 * @author wellington
 */
public class Run {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
        String fn = "";
        if (args.length > 0) {
            fn = args[0];
        } else {
            System.out.println("Usage: basic filename.basic");
            System.exit(0);
        }

        ANTLRInputStream input = new ANTLRFileStream(fn);
        BasicLexer lexer = new BasicLexer(input);
        TokenStream tokens = new BufferedTokenStream(lexer);
        BasicParser parser = new BasicParser(tokens);
        parser.program();
    }

    private static void showParseTreeFrame(ParseTree tree, BasicParser parser) throws HeadlessException {
        JFrame frame = new JFrame("SRC: " + tree.getText());
        JPanel panel = new JPanel();
        TreeViewer viewr = new TreeViewer(Arrays.asList(parser.getRuleNames()), tree);
        viewr.setScale(1);
        panel.add(viewr);
        frame.add(panel);
        frame.setSize(1000, 600);
        frame.setState(JFrame.MAXIMIZED_HORIZ);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

}