diff options
Diffstat (limited to 'src/Main.java')
-rw-r--r-- | src/Main.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..7fc9494 --- /dev/null +++ b/src/Main.java @@ -0,0 +1,60 @@ +import java.io.InputStream; +import java.io.IOException; +import java.io.BufferedReader; +import java.io.FileReader; +import java.util.Objects; +import java.util.Arrays; +import java.io.File; +import java.io.FileInputStream; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.tree.*; +import org.antlr.v4.gui.TreeViewer; +import javax.swing.*; + + +public class Main { + public static void main(String[] args) { + for (File file: Objects.requireNonNull(new File("./progs/").listFiles())) { + try { + String fileStr = file.getPath(); + fileStr = "./progs/test.py"; + System.out.println(fileStr); + + System.out.println(readFile(fileStr)); + + CharStream cs = CharStreams.fromFileName(fileStr); + Python3Lexer lexer = new Python3Lexer(cs); + CommonTokenStream tokenStream = new CommonTokenStream(lexer); + Python3Parser parser = new Python3Parser(tokenStream); + Python3Parser.RootContext tree = parser.root(); +// String treeStr = tree.toString(); +// System.out.println(treeStr); +// // Visualize the parse tree + JFrame frame = new JFrame("Parse Tree"); + JPanel panel = new JPanel(); + TreeViewer viewer = new TreeViewer(Arrays.asList(parser.getRuleNames()), tree); + viewer.setScale(1.5); // Zoom factor + panel.add(viewer); + frame.add(panel); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setSize(800, 600); + frame.setVisible(true); + break; + } catch (Exception e) { + e.printStackTrace(); + } + } + } + private static String readFile(String filePath) throws IOException { + StringBuilder content = new StringBuilder(); + try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) { + String line; + while ((line = reader.readLine()) != null) { + content.append(line).append("\n"); + } + } + return content.toString(); + } + +} + |