private void print(ExpressionStatement node) throws IOException { print(node.getExpression()); writer.append(';'); }
public boolean hasResult() { return node.getType() == Token.EXPR_RESULT; } }
private Node transformExprStmt(ExpressionStatement node) { Node expr = transform(node.getExpression()); decompiler.addEOL(Token.SEMI); return new Node(node.getType(), expr, node.getLineno()); }
private AstNode defaultXmlNamespace() throws IOException { if (currentToken != Token.DEFAULT) codeBug(); consumeToken(); mustHaveXML(); setRequiresActivation(); int lineno = ts.lineno, pos = ts.tokenBeg; if (!(matchToken(Token.NAME) && "xml".equals(ts.getString()))) { reportError("msg.bad.namespace"); } if (!(matchToken(Token.NAME) && "namespace".equals(ts.getString()))) { reportError("msg.bad.namespace"); } if (!matchToken(Token.ASSIGN)) { reportError("msg.bad.namespace"); } AstNode e = expr(); UnaryExpression dxmln = new UnaryExpression(pos, getNodeEnd(e) - pos); dxmln.setOperator(Token.DEFAULTNAMESPACE); dxmln.setOperand(e); dxmln.setLineno(lineno); ExpressionStatement es = new ExpressionStatement(dxmln, true); return es; }
new ExpressionStatement(pn, !insideFunction()); es.setLineno(pn.getLineno()); return es;
/** * Sets the wrapped expression, and sets its parent to this node. * @throws IllegalArgumentException} if expression is {@code null} */ public void setExpression(AstNode expression) { assertNotNull(expression); expr = expression; expression.setParent(this); setLineno(expression.getLineno()); }
private static AstNode makeEmptyLabelStmt(String label) { Label l = new Label(); l.setName(label); LabeledStatement st = new LabeledStatement(); st.addLabel(l); ExpressionStatement ex = new ExpressionStatement(); ex.setExpression(new EmptyExpression()); st.setStatement(ex); return st; }
/** * Constructs a new {@code ExpressionStatement} * @param expr the wrapped {@link AstNode}. * The {@code ExpressionStatement}'s bounds are set to those of expr, * and expr's parent is set to this node. * @throws IllegalArgumentException if {@code expr} is null */ public ExpressionStatement(int pos, int len, AstNode expr) { super(pos, len); setExpression(expr); }
/** * Constructs a new {@code ExpressionStatement} wrapping * the specified expression. Sets this node's position to the * position of the wrapped node, and sets the wrapped node's * position to zero. Sets this node's length to the length of * the wrapped node. * @param expr the wrapped expression * @param hasResult {@code true} if this expression has side * effects. If true, sets node type to EXPR_RESULT, else to EXPR_VOID. */ public ExpressionStatement(AstNode expr, boolean hasResult) { this(expr); if (hasResult) setHasResult(); }
private Node transformExprStmt(ExpressionStatement node) { Node expr = transform(node.getExpression()); decompiler.addEOL(Token.SEMI); return new Node(node.getType(), expr, node.getLineno()); }
private AstNode defaultXmlNamespace() throws IOException { if (currentToken != Token.DEFAULT) codeBug(); consumeToken(); mustHaveXML(); setRequiresActivation(); int lineno = ts.lineno, pos = ts.tokenBeg; if (!(matchToken(Token.NAME) && "xml".equals(ts.getString()))) { reportError("msg.bad.namespace"); } if (!(matchToken(Token.NAME) && "namespace".equals(ts.getString()))) { reportError("msg.bad.namespace"); } if (!matchToken(Token.ASSIGN)) { reportError("msg.bad.namespace"); } AstNode e = expr(); UnaryExpression dxmln = new UnaryExpression(pos, getNodeEnd(e) - pos); dxmln.setOperator(Token.DEFAULTNAMESPACE); dxmln.setOperand(e); dxmln.setLineno(lineno); ExpressionStatement es = new ExpressionStatement(dxmln, true); return es; }
new ExpressionStatement(pn, !insideFunction()); es.setLineno(pn.getLineno()); return es;
/** * Sets the wrapped expression, and sets its parent to this node. * @throws IllegalArgumentException} if expression is {@code null} */ public void setExpression(AstNode expression) { assertNotNull(expression); expr = expression; expression.setParent(this); setLineno(expression.getLineno()); }
@Override public CAstNode visitLabeledStatement(LabeledStatement node, WalkContext arg) { ExpressionStatement ex = new ExpressionStatement(); ex.setExpression(new EmptyExpression()); CAstNode exNode = visit(ex, arg); arg.cfg().map(ex, exNode); WalkContext labelBodyContext = makeBreakContext(node, arg, ex); CAstNode result = visit(node.getStatement(), labelBodyContext); AstNode prev = node; for(Label label : node.getLabels()) { result = Ast.makeNode(CAstNode.LABEL_STMT, visit(label, arg), result); arg.cfg().map(prev, result); prev = label; } return Ast.makeNode(CAstNode.BLOCK_STMT, result, exNode); }
/** * Constructs a new {@code ExpressionStatement} * @param expr the wrapped {@link AstNode}. * The {@code ExpressionStatement}'s bounds are set to those of expr, * and expr's parent is set to this node. * @throws IllegalArgumentException if {@code expr} is null */ public ExpressionStatement(int pos, int len, AstNode expr) { super(pos, len); setExpression(expr); }
/** * Constructs a new {@code ExpressionStatement} wrapping * the specified expression. Sets this node's position to the * position of the wrapped node, and sets the wrapped node's * position to zero. Sets this node's length to the length of * the wrapped node. * @param expr the wrapped expression * @param hasResult {@code true} if this expression has side * effects. If true, sets node type to EXPR_RESULT, else to EXPR_VOID. */ public ExpressionStatement(AstNode expr, boolean hasResult) { this(expr); if (hasResult) setHasResult(); }
private Node transformExprStmt(ExpressionStatement node) { Node expr = transform(node.getExpression()); decompiler.addEOL(Token.SEMI); return new Node(node.getType(), expr, node.getLineno()); }
private void handle(AstNode block) { Node child = block.getFirstChild(); while (child != null) { Node next = child.getNext(); if (child instanceof ExpressionStatement) { ExpressionStatement statement = (ExpressionStatement) child; if (statement.getExpression() instanceof StringLiteral) { block.removeChild(child); } } child = next; } } }
private AstNode defaultXmlNamespace() throws IOException { if (currentToken != Token.DEFAULT) codeBug(); consumeToken(); mustHaveXML(); setRequiresActivation(); int lineno = ts.lineno, pos = ts.tokenBeg; if (!(matchToken(Token.NAME) && "xml".equals(ts.getString()))) { reportError("msg.bad.namespace"); } if (!(matchToken(Token.NAME) && "namespace".equals(ts.getString()))) { reportError("msg.bad.namespace"); } if (!matchToken(Token.ASSIGN)) { reportError("msg.bad.namespace"); } AstNode e = expr(); UnaryExpression dxmln = new UnaryExpression(pos, getNodeEnd(e) - pos); dxmln.setOperator(Token.DEFAULTNAMESPACE); dxmln.setOperand(e); dxmln.setLineno(lineno); ExpressionStatement es = new ExpressionStatement(dxmln, true); return es; }
new ExpressionStatement(pn, !insideFunction()); es.setLineno(pn.getLineno()); return es;