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 + -
显示快捷键?