58 * @param lc lexical context |
58 * @param lc lexical context |
59 * @param visitor node visitor |
59 * @param visitor node visitor |
60 * |
60 * |
61 * @return new node or same node depending on state change |
61 * @return new node or same node depending on state change |
62 */ |
62 */ |
63 protected abstract Node accept(final LexicalContext lc, final NodeVisitor visitor); |
63 protected abstract Node accept(final LexicalContext lc, final NodeVisitor<? extends LexicalContext> visitor); |
64 |
64 |
65 @Override |
65 @Override |
66 public Node accept(final NodeVisitor visitor) { |
66 public Node accept(final NodeVisitor<? extends LexicalContext> visitor) { |
67 final LexicalContext lc = visitor.getLexicalContext(); |
67 final LexicalContext lc = visitor.getLexicalContext(); |
68 lc.push(this); |
68 lc.push(this); |
69 final LexicalContextNode newNode = (LexicalContextNode)accept(lc, visitor); |
69 final LexicalContextNode newNode = (LexicalContextNode)accept(lc, visitor); |
70 return lc.pop(newNode); |
70 return lc.pop(newNode); |
71 } |
71 } |