/** * Override Antlr's default use of the class name and reflection. Antlrs's call to its createUsingCtor() looks a bit * expensive to me. Here, we're able to just use a switch on the token type, because that will always tell us which * subclass to use. We're unlikely to ever want multiple node subclasses for any one token type. * * @param s Class name... is ignored here, but it is used in the generated parser code for casting the return. */ @Override public AST create(Token token, String s) { switch (ABLNodeType.getNodeType(token.getType())) { case RECORD_NAME: return new RecordNameNode((ProToken) token); case PROPARSEDIRECTIVE: return new ProparseDirectiveNode((ProToken) token); case DO: case FOR: case REPEAT: case FUNCTION: case PROCEDURE: case CONSTRUCTOR: case DESTRUCTOR: case METHOD: case CANFIND: case CATCH: case ON: return new BlockNode((ProToken) token); default: throw new IllegalArgumentException("Proparse error creating AST node " + token.toString() + ", " + s); } }
/** * Override Antlr's default use of the class name and reflection. Antlrs's call to its createUsingCtor() looks a bit * expensive to me. Here, we're able to just use a switch on the token type, because that will always tell us which * subclass to use. We're unlikely to ever want multiple node subclasses for any one token type. * * @param s Class name... is ignored here, but it is used in the generated parser code for casting the return. */ @Override public AST create(Token token, String s) { switch (ABLNodeType.getNodeType(token.getType())) { case RECORD_NAME: return new RecordNameNode((ProToken) token); case PROPARSEDIRECTIVE: return new ProparseDirectiveNode((ProToken) token); case DO: case FOR: case REPEAT: case FUNCTION: case PROCEDURE: case CONSTRUCTOR: case DESTRUCTOR: case METHOD: case CANFIND: case CATCH: case ON: return new BlockNode((ProToken) token); default: throw new IllegalArgumentException("Proparse error creating AST node " + token.toString() + ", " + s); } }
message.append(token.toString()); } while (token.getType() != antlr.Token.EOF_TYPE); } catch (antlr.TokenStreamException e3) {
message.append(token.toString()); } while (token.getType() != antlr.Token.EOF_TYPE); } catch (antlr.TokenStreamException e3) {