declarator.java

来自「plugin for eclipse」· Java 代码 · 共 205 行

JAVA
205
字号
/*
 * Created on May 5, 2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package isis.anp.nesc.ot;

import isis.anp.common.CodeLocation;
import isis.anp.common.ObjectTreeBuilderContext;
import isis.anp.common.ParserMessage;
import isis.anp.common.TNode;

/**
 * @author sallai
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
public class Declarator extends AbstractDeclarator {
	String name = null;

	TNode nameNode = null;

	InterfacePort interfacePort = null;

	FunctionPort functionPort = null;

	ParameterTypeList interfaceParameterTypeList;

	/**
	 * @return Returns the declName.
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param declName
	 *            The declName to set.
	 */
	public void setName(String declName) {
		this.name = declName;
		if (getNameNode() != null) {
			getNameNode().setText(declName);
		}
	}

	/**
	 * @return Returns the declNameNode.
	 */
	public TNode getNameNode() {
		return nameNode;
	}

	/**
	 * @param declNameNode
	 *            The declNameNode to set.
	 */
	public void setNameNode(TNode declNameNode) {
		// System.out.println("Setting name node: "+declNameNode.getText());
		this.nameNode = declNameNode;
		setName(declNameNode.getText());
	}

	/**
	 * @param nestedDecl
	 *            The nestedDecl to set.
	 */
	public void setNestedDecl(Declarator nestedDecl) {
		this.nestedDecl = nestedDecl;
	}

	public ParameterTypeList getInterfaceParameterTypeList() {
		return interfaceParameterTypeList;
	}

	public void setInterfaceParameterTypeList(
			ParameterTypeList interfaceParameterTypeList) {
		this.interfaceParameterTypeList = interfaceParameterTypeList;
	}

	/**
	 * @return Returns the interfacePort.
	 */
	public InterfacePort getInterfacePort() {
		return interfacePort;
	}

	/**
	 * @param interfacePort
	 *            The interfacePort to set.
	 */
	public void setInterfacePort(InterfacePort interfacePort) {
		this.interfacePort = interfacePort;
	}

	// private InterfacePort lookupInterfacePort(NesCObjectTreeBuilderContext
	// ctx,
	// TNode id1) {
	// // look up interface port and function port
	// if (ctx.getCurrentModule() != null) {
	// Port portObj = ctx.getCurrentModule().getPortByName(id1.getText());
	// if (portObj instanceof InterfacePort) {
	// InterfacePort ipObj = (InterfacePort) portObj;
	// return ipObj;
	// } else {
	// TypeResolutionException ex = new TypeResolutionException(
	// "Error processing declarator with interface alias: interface port not
	// found",
	// id1);
	// ctx.addMsg(new ParserMessage(ex, ex.getMessage(), new CodeLocation(
	// id1)));
	// }
	// } else {
	// TypeResolutionException ex = new TypeResolutionException(
	// "Error processing declarator with interface alias: Can't find module
	// reference",
	// id1);
	// ctx.addMsg(new ParserMessage(ex, ex.getMessage(), new
	// CodeLocation(id1)));
	// }
	// return null;
	// }

	public void setNameNodes(ObjectTreeBuilderContext ctx, TNode id1, TNode id2) {
		String portName = id1.getText();
		String interfaceName = null;
		if (id2 != null) {
			interfaceName = portName;
			portName = id2.getText();
			this.setNameNode(id2);
		} else {
			this.setNameNode(id1);
		}

		if (interfaceName != null) {
			if (ctx.getCurrentModule() != null) {

				// look up interface port
				Port ip = ctx.getCurrentModule().getPortByName(interfaceName);
				if (ip instanceof InterfacePort) {
					this.setInterfacePort((InterfacePort) ip);
					// look up function port within interface port
					Port fp = ((InterfacePort) ip)
							.getFunctionPortByName(portName);
					if (fp instanceof FunctionPort) {
						this.setFunctionPort((FunctionPort) fp);
					} else {
						TypeResolutionException ex = new TypeResolutionException(
								"Error processing declarator with interface alias: function port "
										+ id2.getText()
										+ " not found in interface "
										+ id1.getText(), id2);
						// ctx.addMsg(new ParserMessage(ex, ex.getMessage(),
						// new CodeLocation(id2)));
						ctx.addMsg(new ParserMessage(ParserMessage.ERROR, ex
								.getMessage(), new CodeLocation(id2), ex));
					}
				} else {
					TypeResolutionException ex = new TypeResolutionException(
							"Error processing declarator with interface alias: interface port "
									+ id1.getText() + " not found", id1);
					// ctx.addMsg(new ParserMessage(ex, ex.getMessage(),
					// new CodeLocation(id1)));
					ctx.addMsg(new ParserMessage(ParserMessage.ERROR, ex
							.getMessage(), new CodeLocation(id1), ex));
				}
			} else {
				TypeResolutionException ex = new TypeResolutionException(
						"Error processing declarator with interface alias: Can't find module reference",
						id1);
				// ctx.addMsg(new ParserMessage(ex, ex.getMessage(), new
				// CodeLocation(
				// id1)));
				ctx.addMsg(new ParserMessage(ParserMessage.ERROR, ex
						.getMessage(), new CodeLocation(id1), ex));
			}
		} else {
			// try to look up function port
			if (ctx.getCurrentModule() != null) {
				Port fp = ctx.getCurrentModule().getPortByName(portName);
				if (fp instanceof FunctionPort) {
					this.setFunctionPort((FunctionPort) fp);
				}
			}
		}

	}

	/**
	 * @return Returns the functionPort.
	 */
	public FunctionPort getFunctionPort() {
		return functionPort;
	}

	/**
	 * @param functionPort
	 *            The functionPort to set.
	 */
	public void setFunctionPort(FunctionPort functionPort) {
		this.functionPort = functionPort;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?