Examples of CaseNode


Examples of org.jamesii.core.math.parsetree.control.CaseNode

    List<Pair<? extends Comparable<?>, INode>> caseTerms = new ArrayList<>();
    caseTerms.add(new Pair<Comparable<?>, INode>(2, new ValueNode<>(3)));
    caseTerms.add(new Pair<Comparable<?>, INode>(1, new AddNode(
        new ValueNode<>(3), new ValueNode<>(3))));

    CaseNode cn = new CaseNode(new ValueNode<>(2), caseTerms);
    ValueNode<Integer> res = cn.calc(null);
    assertTrue(res.getValue().compareTo(3) == 0);

    cn = new CaseNode(new ValueNode<>(1), caseTerms);
    res = cn.calc(null);
    assertTrue(res.getValue().compareTo(6) == 0);

    cn = new CaseNode(new ValueNode<>(4), caseTerms);
    res = cn.calc(null);
    assertTrue(res == null);

    caseTerms.add(new Pair<Comparable<?>, INode>(null, new ValueNode<>(31)));
    cn = new CaseNode(new ValueNode<>(4), caseTerms);
    res = cn.calc(null);
    assertTrue(res.getValue().compareTo(31) == 0);
  }
View Full Code Here

Examples of org.jamesii.core.math.parsetree.control.CaseNode

    ValueNode<Integer> caseStmt = new ValueNode<>(2);
    List<Pair<? extends Comparable<?>, INode>> caseTerms = new ArrayList<>();
    caseTerms.add(new Pair<Comparable<?>, INode>(2, new ValueNode<>(3)));
    caseTerms.add(new Pair<Comparable<?>, INode>(1, new AddNode(
        new ValueNode<>(3), new ValueNode<>(3))));
    CaseNode cn = new CaseNode(caseStmt, caseTerms);

    Node n2 = null;
    try {
      n2 = (Node) cn.clone();
    } catch (CloneNotSupportedException e) {
      fail(e.getMessage());
    }
    assertTrue(cn != n2);
View Full Code Here

Examples of org.jamesii.core.math.parsetree.control.CaseNode

    ValueNode<Integer> caseStmt = new ValueNode<>(2);
    List<Pair<? extends Comparable<?>, INode>> caseTerms = new ArrayList<>();
    caseTerms.add(new Pair<Comparable<?>, INode>(2, new ValueNode<>(3)));
    caseTerms.add(new Pair<Comparable<?>, INode>(1, new AddNode(
        new ValueNode<>(3), new ValueNode<>(3))));
    CaseNode cn = new CaseNode(caseStmt, caseTerms);
    assertEquals(caseStmt, cn.getCaseStmt());
    assertEquals(caseTerms, cn.getCaseTerms());
  }
View Full Code Here

Examples of org.jamesii.core.math.parsetree.control.CaseNode

    ValueNode<Integer> caseStmt = new ValueNode<>(2);
    List<Pair<? extends Comparable<?>, INode>> caseTerms = new ArrayList<>();
    caseTerms.add(new Pair<Comparable<?>, INode>(2, new ValueNode<>(3)));
    caseTerms.add(new Pair<Comparable<?>, INode>(1, new AddNode(
        new ValueNode<>(3), new ValueNode<>(3))));
    CaseNode cn = new CaseNode(caseStmt, caseTerms);
    List<INode> children = cn.getChildren();
    assertTrue(children.size() == 3);
    assertTrue(children.get(0) == caseStmt);
    assertTrue(children.get(1) == caseTerms.get(0).getSecondValue());
    assertTrue(children.get(2) == caseTerms.get(1).getSecondValue());
  }
View Full Code Here

Examples of org.jruby.ast.CaseNode

        context.getInvocationCompiler().invokeDynamic(callNode.getName(), receiverCallback, argsCallback, CallType.NORMAL, closureArg, callNode.getIterNode() instanceof IterNode);
    }

    public void compileCase(Node node, BodyCompiler context) {
        CaseNode caseNode = (CaseNode) node;

        boolean hasCase = false;
        if (caseNode.getCaseNode() != null) {
            compile(caseNode.getCaseNode(), context);
            hasCase = true;
        }

        context.pollThreadEvents();
       
        Node firstWhenNode = caseNode.getFirstWhenNode();

        // NOTE: Currently this optimization is limited to the following situations:
        // * No multi-valued whens
        // * All whens must be an int-ranged literal fixnum
        // It also still emits the code for the "safe" when logic, which is rather
View Full Code Here

Examples of org.jruby.ast.CaseNode

            if (SCOPE_AWARE_METHODS.contains(nameNode.getName())) {
                setFlag(SCOPE_AWARE);
            }
            break;
        case CASENODE:
            CaseNode caseNode = (CaseNode)node;
            inspect(caseNode.getCaseNode());
            inspect(caseNode.getFirstWhenNode());
            break;
        case CLASSNODE:
            setFlag(CLASS);
            break;
        case CLASSVARNODE:
View Full Code Here

Examples of org.jruby.ast.CaseNode

              }
  break;
case 299:
          // line 1108 "DefaultRubyParser.y"
  {
                  yyVal = new CaseNode(support.union(((Token)yyVals[-4+yyTop]), ((Token)yyVals[0+yyTop])), ((Node)yyVals[-3+yyTop]), ((Node)yyVals[-1+yyTop]));
              }
  break;
case 300:
          // line 1111 "DefaultRubyParser.y"
  {
/* TODO: MRI is just a when node.  We need this extra logic for IDE consumers (null in casenode statement should be implicit nil)*/
/*                  if (support.getConfiguration().hasExtraPositionInformation()) {*/
                      yyVal = new CaseNode(support.union(((Token)yyVals[-3+yyTop]), ((Token)yyVals[0+yyTop])), null, ((Node)yyVals[-1+yyTop]));
/*                  } else {*/
/*                      $$ = $3;*/
/*                  }*/
              }
  break;
View Full Code Here

Examples of org.jruby.ast.CaseNode

            if (SCOPE_AWARE_METHODS.contains(nameNode.getName())) {
                setFlag(node, SCOPE_AWARE);
            }
            break;
        case CASENODE:
            CaseNode caseNode = (CaseNode)node;
            inspect(caseNode.getCaseNode());
            for (Node when : caseNode.getCases().childNodes()) inspect(when);
            inspect(caseNode.getElseNode());
            break;
        case CLASSNODE:
            setFlag(node, CLASS);
            ClassNode classNode = (ClassNode)node;
            inspect(classNode.getCPath());
View Full Code Here

Examples of org.jruby.ast.CaseNode

        }
        return null;
    }

    public void compileCase(Node node, BodyCompiler context, boolean expr) {
        CaseNode caseNode = (CaseNode) node;

        boolean hasCase = caseNode.getCaseNode() != null;

        // aggregate when nodes into a list, unfortunately, this is no
        List<Node> cases = caseNode.getCases().childNodes();

        // last node, either !instanceof WhenNode or null, is the else
        Node elseNode = caseNode.getElseNode();

        compileWhen(caseNode.getCaseNode(), cases, elseNode, context, expr, hasCase);
    }
View Full Code Here

Examples of org.jruby.ast.CaseNode

     * @param firstWhenNode first when (which could also be the else)
     * @return a new case node
     */
    public CaseNode newCaseNode(ISourcePosition position, Node expression, Node firstWhenNode) {
        ArrayNode cases = new ArrayNode(firstWhenNode != null ? firstWhenNode.getPosition() : position);
        CaseNode caseNode = new CaseNode(position, expression, cases);

        for (Node current = firstWhenNode; current != null; current = ((WhenNode) current).getNextCase()) {
            if (current instanceof WhenOneArgNode) {
                cases.add(current);
            } else if (current instanceof WhenNode) {
                simplifyMultipleArgumentWhenNodes((WhenNode) current, cases);
            } else {
                caseNode.setElseNode(current);
                break;
            }
        }

        return caseNode;
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.