1
- import org .antlr .v4 .runtime .*;
2
-
3
- public class Main {
4
- public static void main (String [] args ) throws Exception {
5
- var input = CharStreams .fromFileName (args [0 ]);
6
- var lexer = new LexerWithIndentDedentInjector (input );
7
- var tokens = new CommonTokenStream (lexer );
8
- var parser = new Python3Parser (tokens );
9
-
10
- System .out .println (input .toString ()); // displaying the input source code
11
-
12
- System .out .println ();
13
- tokens .fill (); // explicit loading all tokens from the lexer until the EOF
14
- for (Token t : tokens .getTokens ()) {
15
- System .out .println (getTokenMetaDataWithRuleName (parser , t )); // displaying a token metadata
16
- }
17
-
18
- parser .removeErrorListeners ();
19
- parser .addErrorListener (new IndentationErrorListener ());
20
- for (String errMsg : lexer .getErrorMessages ()) { // adding lexer error messages before the parser error messages
21
- parser .notifyErrorListeners (errMsg );
22
- }
23
-
24
- parser .file_input (); // begin the parsing at the file_input rule and displaying the lexer and the parser error messages
25
-
26
- if (lexer .getWarnings ().size () > 0 ) {
27
- System .err .println ();
28
- System .err .println ("WARNING:" );
29
- for (String w : lexer .getWarnings ()) {
30
- System .err .println (w ); // displaying a warning
31
- }
32
- }
33
- }
34
-
35
- private static String getTokenMetaDataWithRuleName (Python3Parser parser , Token t ) {
36
- final String metaData = t .toString (); // original format: [@TokenIndex,startIndex:stopIndex='text',<TokenType>,line:charPositionInLine]
37
- final int greaterPos = metaData .lastIndexOf (">," );
38
- return metaData .substring (0 , greaterPos ) + // modified format: [@TokenIndex,startIndex:stopIndex='text',<TokenType is RuleName>,line:charPositionInLine]
39
- " is " + parser .getVocabulary ().getDisplayName (t .getType ()) +
40
- metaData .substring (greaterPos );
41
- }
1
+ import org .antlr .v4 .runtime .*;
2
+
3
+ public class Main {
4
+ public static void main (String [] args ) throws Exception {
5
+ var input = CharStreams .fromFileName (args [0 ]);
6
+ var lexer = new LexerWithIndentDedentInjector (input );
7
+ var tokens = new CommonTokenStream (lexer );
8
+ var parser = new Python3Parser (tokens );
9
+
10
+ System .out .println (input .toString ()); // displaying the input source code
11
+
12
+ System .out .println ();
13
+ tokens .fill (); // explicit loading all tokens from the lexer until the EOF
14
+ for (Token t : tokens .getTokens ()) {
15
+ System .out .println (getTokenMetaDataWithRuleName (parser , t )); // displaying a token metadata
16
+ }
17
+
18
+ parser .removeErrorListeners ();
19
+ parser .addErrorListener (new IndentationErrorListener ());
20
+ for (String errMsg : lexer .getErrorMessages ()) { // adding lexer error messages before the parser error messages
21
+ parser .notifyErrorListeners (errMsg );
22
+ }
23
+
24
+ parser .file_input (); // begin the parsing at the file_input rule and displaying the lexer and the parser error messages
25
+
26
+ if (lexer .getWarnings ().size () > 0 ) {
27
+ System .err .println ();
28
+ System .err .println ("WARNING:" );
29
+ for (String w : lexer .getWarnings ()) {
30
+ System .err .println (w ); // displaying a warning
31
+ }
32
+ }
33
+ }
34
+
35
+ private static String getTokenMetaDataWithRuleName (Python3Parser parser , Token t ) {
36
+ final String metaData = t .toString (); // original format: [@TokenIndex,startIndex:stopIndex='text',<TokenType>,line:charPositionInLine]
37
+ final int greaterPos = metaData .lastIndexOf (">," );
38
+ return metaData .substring (0 , greaterPos ) + // modified format: [@TokenIndex,startIndex:stopIndex='text',<TokenType is RuleName>,line:charPositionInLine]
39
+ " is " + parser .getVocabulary ().getDisplayName (t .getType ()) +
40
+ metaData .substring (greaterPos );
41
+ }
42
42
}
0 commit comments