| /******************************************************************************* |
| * Copyright (c) 2007 University of Illinois at Urbana-Champaign and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * UIUC - Initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.photran.internal.core.parser; |
| |
| import org.eclipse.photran.internal.core.lexer.*; import org.eclipse.photran.internal.core.analysis.binding.ScopingNode; import org.eclipse.photran.internal.core.SyntaxException; import java.io.IOException; |
| |
| @SuppressWarnings("all") |
| public class ASTNodePair<T extends IASTNode, U extends IASTNode> extends ASTNode |
| { |
| public final T first; |
| public final U second; |
| |
| public ASTNodePair(T first, U second) |
| { |
| assert second != null; |
| |
| this.first = first; |
| this.second = second; |
| } |
| |
| @Override protected int getNumASTFields() |
| { |
| return first == null ? 1 : 2; |
| } |
| |
| @Override protected IASTNode getASTField(int index) |
| { |
| if (index == 0) |
| { |
| return first != null ? first : second; |
| } |
| else if (index == 1 && first != null) |
| { |
| return second; |
| } |
| else throw new IllegalArgumentException(); |
| } |
| |
| @Override protected void setASTField(int index, IASTNode newNode) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override public void accept(IASTVisitor visitor) |
| { |
| if (first != null) first.accept(visitor); |
| second.accept(visitor); |
| } |
| |
| /////////////////////////////////////////////////////////////////////////// |
| // Source Manipulation |
| /////////////////////////////////////////////////////////////////////////// |
| |
| @Override public void replaceChild(IASTNode node, IASTNode withNode) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override public void removeFromTree() |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override public void replaceWith(IASTNode newNode) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override public void replaceWith(String literalString) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| } |