📄 exprparser.java
字号:
public ASTNode getAST() { return root; } public boolean success(){ return go; } private int counter; private boolean methodBody; private HashMap curTable = new HashMap(); private LinkedList basStack = new LinkedList(); private LinkedList mayError = new LinkedList(); private LinkedList soError = new LinkedList(); private LinkedList varError = new LinkedList(); public HashMap majesty = new HashMap(); public HashMap methodTable = new HashMap(); private int blockTag = 0; private boolean defineTag = false; private boolean go = true; private boolean hasDefined(SimpleName n){ defineTag = false; ListIterator iter = basStack.listIterator(basStack.size()); HashMap temp = curTable; while(iter.hasPrevious()){ if(temp.containsKey(n.getIdentifier())) return true; temp = (HashMap)iter.previous(); } if (temp.containsKey(n.getIdentifier())) {defineTag = true;return true;} return false; } private Type typeClone(Type n){ if (n.isPrimitiveType()) return ast.newPrimitiveType(((PrimitiveType)n).getPrimitiveTypeCode()); else if (n.isArrayType()) { Type t =typeClone(((ArrayType)n).getComponentType()); ArrayType temp = ast.newArrayType(t); temp.setProperty("size",n.getProperty("size")); return temp; } else return ast.newSimpleType(ast.newSimpleName("String")); } private void parseError(String s,ASTNode x){ System.out.println("[LINE."+x.getStartPosition()+"]Error:"+s); go = false; } private void parseWarning(String s,ASTNode x){ System.out.println("[LINE."+x.getStartPosition()+"]Warning:"+s); }
private final ExprParser parser;
/** Constructor */
CUP$ExprParser$actions(ExprParser parser) {
this.parser = parser;
}
/** Method with the actual generated action code. */
public final java_cup.runtime.Symbol CUP$ExprParser$do_action(
int CUP$ExprParser$act_num,
java_cup.runtime.lr_parser CUP$ExprParser$parser,
java.util.Stack CUP$ExprParser$stack,
int CUP$ExprParser$top)
throws java.lang.Exception
{
/* Symbol object for return from actions */
java_cup.runtime.Symbol CUP$ExprParser$result;
/* select the action based on the action number */
switch (CUP$ExprParser$act_num)
{
/*. . . . . . . . . . . . . . . . . . . .*/
case 136: // name ::= IDENTIFIER
{
SimpleName RESULT =null;
int idleft = ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()).left; int idright = ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()).right; String id = (String)((java_cup.runtime.Symbol) CUP$ExprParser$stack.peek()).value; RESULT = ast.newSimpleName(id); RESULT.setSourceRange(idleft,1); /*ListIterator iter = basStack.listIterator(basStack.size()); HashMap temp = curTable; boolean hasDefined = false; while(iter.hasPrevious()){ hasDefined = temp.containsKey(RESULT.getIdentifier()); if (hasDefined) break; temp = (HashMap)iter.previous(); }*/ if (!hasDefined(RESULT)) { mayError.add(RESULT); //System.out.println(RESULT.getIdentifier()+"not found immediately"); }
CUP$ExprParser$result = parser.getSymbolFactory().newSymbol("name",43, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 135: // binary_operator ::= AND
{
InfixExpression.Operator RESULT =null;
RESULT = InfixExpression.Operator.CONDITIONAL_AND;
CUP$ExprParser$result = parser.getSymbolFactory().newSymbol("binary_operator",33, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 134: // binary_operator ::= OR
{
InfixExpression.Operator RESULT =null;
RESULT = InfixExpression.Operator.CONDITIONAL_OR;
CUP$ExprParser$result = parser.getSymbolFactory().newSymbol("binary_operator",33, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 133: // binary_operator ::= LESS_EQ
{
InfixExpression.Operator RESULT =null;
RESULT = InfixExpression.Operator.LESS_EQUALS;
CUP$ExprParser$result = parser.getSymbolFactory().newSymbol("binary_operator",33, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 132: // binary_operator ::= GREAT_EQ
{
InfixExpression.Operator RESULT =null;
RESULT = InfixExpression.Operator.GREATER_EQUALS;
CUP$ExprParser$result = parser.getSymbolFactory().newSymbol("binary_operator",33, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 131: // binary_operator ::= LESS
{
InfixExpression.Operator RESULT =null;
RESULT = InfixExpression.Operator.LESS;
CUP$ExprParser$result = parser.getSymbolFactory().newSymbol("binary_operator",33, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 130: // binary_operator ::= GREAT
{
InfixExpression.Operator RESULT =null;
RESULT = InfixExpression.Operator.GREATER;
CUP$ExprParser$result = parser.getSymbolFactory().newSymbol("binary_operator",33, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 129: // binary_operator ::= NOT_EQ
{
InfixExpression.Operator RESULT =null;
RESULT = InfixExpression.Operator.NOT_EQUALS;
CUP$ExprParser$result = parser.getSymbolFactory().newSymbol("binary_operator",33, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 128: // binary_operator ::= EQ_EQ
{
InfixExpression.Operator RESULT =null;
RESULT = InfixExpression.Operator.EQUALS;
CUP$ExprParser$result = parser.getSymbolFactory().newSymbol("binary_operator",33, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 127: // binary_operator ::= REMAINDER
{
InfixExpression.Operator RESULT =null;
RESULT = InfixExpression.Operator.REMAINDER;
CUP$ExprParser$result = parser.getSymbolFactory().newSymbol("binary_operator",33, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 126: // binary_operator ::= DIV
{
InfixExpression.Operator RESULT =null;
RESULT = InfixExpression.Operator.DIVIDE;
CUP$ExprParser$result = parser.getSymbolFactory().newSymbol("binary_operator",33, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 125: // binary_operator ::= MULT
{
InfixExpression.Operator RESULT =null;
RESULT = InfixExpression.Operator.TIMES;
CUP$ExprParser$result = parser.getSymbolFactory().newSymbol("binary_operator",33, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 124: // binary_operator ::= MINUS
{
InfixExpression.Operator RESULT =null;
RESULT = InfixExpression.Operator.MINUS;
CUP$ExprParser$result = parser.getSymbolFactory().newSymbol("binary_operator",33, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 123: // binary_operator ::= PLUS
{
InfixExpression.Operator RESULT =null;
RESULT = InfixExpression.Operator.PLUS;
CUP$ExprParser$result = parser.getSymbolFactory().newSymbol("binary_operator",33, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$ExprParser$stack.peek()), RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 122: // unary_operator ::= NOT
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -