/** * */ package apu.scratch.converter; import java.io.StringReader; import java.util.HashMap; import java.util.Map; import org.antlr.v4.runtime.ANTLRInputStream; import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.Token; import apu.antlr.clike.ScratchCLikeLexer; /** * @author MegaApuTurkUltra * */ public class LexerTest { public static void main(String[] args) throws Exception { String code = "identifier = 5;// sup\n/*derp\nderp*/"; ScratchCLikeLexer lexer = new ScratchCLikeLexer(new ANTLRInputStream( new StringReader(code))); CommonTokenStream stream = new CommonTokenStream(lexer); stream.fill(); Class<ScratchCLikeLexer> lexerClass = ScratchCLikeLexer.class; Map<Integer, String> tokenIds = new HashMap<>(); for (String s : lexer.getRuleNames()) { if (s.equals("AChar") || s.equals("AEscapeSequence")) continue; int num = lexerClass.getDeclaredField(s).getInt((Object) null); tokenIds.put(num, s); } tokenIds.put(Token.EOF, "<EOF>"); for (Token t : stream.getTokens()) { System.out.println(t.getType() + " "+tokenIds.get(t.getType())); } } }