private String debugHiddenTokens(antlr.CommonHiddenStreamToken t) { final StringBuilder sb = new StringBuilder(); for (; t != null; t = filter.getHiddenAfter(t)) { if (sb.length() == 0) { sb.append("["); } sb.append(t.getText().replace("\n", "\\n")); } if (sb.length() > 0) { sb.append("]"); } return sb.toString(); }
private PdeRecognizer createParser(final String program) { // create a lexer with the stream reader, and tell it to handle // hidden tokens (eg whitespace, comments) since we want to pass these // through so that the line numbers when the compiler reports errors // match those that will be highlighted in the PDE IDE // PdeLexer lexer = new PdeLexer(new StringReader(program)); lexer.setTokenObjectClass("antlr.CommonHiddenStreamToken"); // create the filter for hidden tokens and specify which tokens to // hide and which to copy to the hidden text // filter = new TokenStreamCopyingHiddenTokenFilter(lexer); filter.hide(PdePartialTokenTypes.SL_COMMENT); filter.hide(PdePartialTokenTypes.ML_COMMENT); filter.hide(PdePartialTokenTypes.WS); filter.copy(PdePartialTokenTypes.SEMI); filter.copy(PdePartialTokenTypes.LPAREN); filter.copy(PdePartialTokenTypes.RPAREN); filter.copy(PdePartialTokenTypes.LCURLY); filter.copy(PdePartialTokenTypes.RCURLY); filter.copy(PdePartialTokenTypes.COMMA); filter.copy(PdePartialTokenTypes.RBRACK); filter.copy(PdePartialTokenTypes.LBRACK); filter.copy(PdePartialTokenTypes.COLON); filter.copy(PdePartialTokenTypes.TRIPLE_DOT); // Because the meanings of < and > are overloaded to support // type arguments and type parameters, we have to treat them // as copyable to hidden text (or else the following syntax, // such as (); and what not gets lost under certain circumstances) // -- jdf filter.copy(PdePartialTokenTypes.LT); filter.copy(PdePartialTokenTypes.GT); filter.copy(PdePartialTokenTypes.SR); filter.copy(PdePartialTokenTypes.BSR); // create a parser and set what sort of AST should be generated // final PdeRecognizer parser = new PdeRecognizer(this, filter); // use our extended AST class // parser.setASTNodeClass("antlr.ExtendedCommonASTWithHiddenTokens"); return parser; }
CommonHiddenStreamToken getInitialHiddenToken() { return filter.getInitialHiddenToken(); }
CommonHiddenStreamToken getHiddenAfter(final CommonHiddenStreamToken t) { return filter.getHiddenAfter(t); }