477 */ 478 public static LiteralNode<?> newInstance(final Node parent, final String value) { 479 return new StringLiteralNode(parent.getSource(), parent.getToken(), parent.getFinish(), value); 480 } 481 482 private static class LexerTokenLiteralNode extends LiteralNode<LexerToken> { 483 private LexerTokenLiteralNode(final Source source, final long token, final int finish, final LexerToken value) { 484 super(source, Token.recast(token, TokenType.STRING), finish, value); //TODO is string the correct token type here? 485 } 486 487 private LexerTokenLiteralNode(final LexerTokenLiteralNode literalNode) { 488 super(literalNode); 489 } 490 491 @Override 492 protected Node copy(final CopyState cs) { 493 return new LexerTokenLiteralNode(this); 494 } 495 496 @Override 497 public void toString(final StringBuilder sb) { 498 sb.append(value.toString()); 499 } 500 } 501 502 /** 503 * Create a new literal node for a lexer token 504 * 505 * @param source the source 506 * @param token token 507 * @param finish finish 508 * @param value lexer token value 509 * 510 * @return the new literal node 511 */ 512 public static LiteralNode<LexerToken> newInstance(final Source source, final long token, final int finish, final LexerToken value) { 513 return new LexerTokenLiteralNode(source, token, finish, value); 514 } 515 516 /** | 477 */ 478 public static LiteralNode<?> newInstance(final Node parent, final String value) { 479 return new StringLiteralNode(parent.getSource(), parent.getToken(), parent.getFinish(), value); 480 } 481 482 private static class LexerTokenLiteralNode extends LiteralNode<LexerToken> { 483 private LexerTokenLiteralNode(final Source source, final long token, final int finish, final LexerToken value) { 484 super(source, Token.recast(token, TokenType.STRING), finish, value); //TODO is string the correct token type here? 485 } 486 487 private LexerTokenLiteralNode(final LexerTokenLiteralNode literalNode) { 488 super(literalNode); 489 } 490 491 @Override 492 protected Node copy(final CopyState cs) { 493 return new LexerTokenLiteralNode(this); 494 } 495 496 @Override 497 public Type getType() { 498 return Type.OBJECT; 499 } 500 501 @Override 502 public void toString(final StringBuilder sb) { 503 sb.append(value.toString()); 504 } 505 } 506 507 /** 508 * Create a new literal node for a lexer token 509 * 510 * @param source the source 511 * @param token token 512 * @param finish finish 513 * @param value lexer token value 514 * 515 * @return the new literal node 516 */ 517 public static LiteralNode<LexerToken> newInstance(final Source source, final long token, final int finish, final LexerToken value) { 518 return new LexerTokenLiteralNode(source, token, finish, value); 519 } 520 521 /** |