GlueGen v2.6.0-rc-20250712
GlueGen, Native Binding Generator for Java™ (public API).
Test.java
Go to the documentation of this file.
1package com.jogamp.gluegen.jgram;
2
3import java.io.BufferedReader;
4import java.io.File;
5import java.io.FileReader;
6import java.io.Reader;
7import java.util.Iterator;
8import java.util.Set;
9
10class Test {
11
12 static boolean showTree = false;
13 public static void main(final String[] args) {
14 // Use a try/catch block for parser exceptions
15 try {
16 // if we have at least one command-line argument
17 if (args.length > 0 ) {
18 System.err.println("Parsing...");
19
20 // for each directory/file specified on the command line
21 for(int i=0; i< args.length;i++) {
22 if ( args[i].equals("-showtree") ) {
23 showTree = true;
24 }
25 else {
26 doFile(new File(args[i])); // parse it
27 }
28 } }
29 else
30 System.err.println("Usage: java com.jogamp.gluegen.jgram.Test [-showtree] "+
31 "<directory or file name>");
32 }
33 catch(final Exception e) {
34 System.err.println("exception: "+e);
35 e.printStackTrace(System.err); // so we can get stack trace
36 }
37 }
38
39
40 // This method decides what action to take based on the type of
41 // file we are looking at
42 public static void doFile(final File f)
43 throws Exception {
44 // If this is a directory, walk each file/dir in that directory
45 if (f.isDirectory()) {
46 final String files[] = f.list();
47 for(int i=0; i < files.length; i++)
48 doFile(new File(f, files[i]));
49 }
50
51 // otherwise, if this is a java file, parse it!
52 else if ((f.getName().length()>5) &&
53 f.getName().substring(f.getName().length()-5).equals(".java")) {
54 System.err.println(" "+f.getAbsolutePath());
55 // parseFile(f.getName(), new FileInputStream(f));
56 parseFile(f.getName(), new BufferedReader(new FileReader(f)));
57 }
58 }
59
60 // Here's where we do the real work...
61 public static void parseFile(final String f, final Reader r)
62 throws Exception {
63 try {
64 // Create a scanner that reads from the input stream passed to us
65 final JavaLexer lexer = new JavaLexer(r);
66 lexer.setFilename(f);
67
68 // Create a parser that reads from the scanner
69 final JavaParser parser = new JavaParser(lexer);
70 parser.setFilename(f);
71
72 // start parsing at the compilationUnit rule
73 parser.compilationUnit();
74
75 Set<String> set = parser.getParsedEnumNames();
76 System.out.println("Enums");
77 for(final Iterator<String> iter = set.iterator(); iter.hasNext(); ) {
78 final String s = iter.next();
79 System.out.println(s);
80 }
81 System.out.println("Functions");
82 set = parser.getParsedFunctionNames();
83 for(final Iterator<String> iter = set.iterator(); iter.hasNext(); ) {
84 final String s = iter.next();
85 System.out.println(s);
86 }
87
88 // do something with the tree
89 //doTreeAction(f, parser.getAST(), parser.getTokenNames());
90 }
91 catch (final Exception e) {
92 System.err.println("parser exception: "+e);
93 e.printStackTrace(); // so we can get stack trace
94 }
95 }
96
97 /*
98 public static void doTreeAction(String f, AST t, String[] tokenNames) {
99 if ( t==null ) return;
100 if ( showTree ) {
101 ((CommonAST)t).setVerboseStringConversion(true, tokenNames);
102 ASTFactory factory = new ASTFactory();
103 AST r = factory.create(0,"AST ROOT");
104 r.setFirstChild(t);
105 final ASTFrame frame = new ASTFrame("Java AST", r);
106 frame.setVisible(true);
107 frame.addWindowListener(
108 new WindowAdapter() {
109 public void windowClosing (WindowEvent e) {
110 frame.setVisible(false); // hide the Frame
111 frame.dispose();
112 System.exit(0);
113 }
114 }
115 );
116 // System.out.println(t.toStringList());
117 }
118 JavaTreeParser tparse = new JavaTreeParser();
119 try {
120 tparse.compilationUnit(t);
121 // System.out.println("successful walk of result AST for "+f);
122 }
123 catch (RecognitionException e) {
124 System.err.println(e.getMessage());
125 e.printStackTrace();
126 }
127
128 } */
129}
130
Set< String > getParsedEnumNames()
Returns the EnumTypes this HeaderParser processed.
Definition: JavaParser.java:36
Set< String > getParsedFunctionNames()
Returns the list of FunctionSymbols this HeaderParser has parsed.
Definition: JavaParser.java:48