Example #1
0
 public NodeValueProg(NodeVoidProg voidProg, NodeExpr expr)
     : base((IToken)null)
 {
     _voidProg = voidProg;
     _expr     = expr;
 }
Example #2
0
 public abstract Task <NodeExpr> Eval(NodeExpr e, CancellationToken t, IVars v = null);
Example #3
0
 public abstract Task <bool> PrimeP(NodeExpr e, EAlgorithmPrimeP a, CancellationToken t);
Example #4
0
 public NodeIndex(NodeExpr target, Token spDot, NodeId index)
 {
     this.target = target;
     this.spDot = spDot;
     this.index = index;
 }
Example #5
0
 public void Set(string n, NodeExpr e)
 {
     mVars.Set(n, e);
 }
Example #6
0
 public NodeLet(Spanned<string> spName, Spanned<TyRef> spTy, NodeExpr value)
 {
     this.spName = spName;
     this.spTy = spTy;
     this.value = value;
 }
Example #7
0
 public IfBlock(NodeExpr condition, List<Node> body)
 {
     this.condition = condition;
     this.body = body;
 }
Example #8
0
 public NodeEnclosed(Token lparen, Token rparen, NodeExpr expr)
 {
     this.lparen = lparen;
     this.rparen = rparen;
     this.expr = expr;
 }
Example #9
0
 public NodeSuffix(NodeExpr target, Token op)
 {
     this.target = target;
     this.op = op;
 }
Example #10
0
 public NodeInfix(NodeExpr left, NodeExpr right, Token op)
 {
     this.left = left;
     this.right = right;
     this.op = op;
 }
Example #11
0
 public NodeRet(Token ret, NodeExpr value)
 {
     this.ret = ret;
     this.value = value;
 }
Example #12
0
 private NodeExpr ParseInfix(NodeExpr left, bool isEnclosed)
 {
     if (HasCurrent && CheckOp() && Current.span.start.line == left.Span.start.line)
     {
         var op = Current;
         Advance();
         if (HasCurrent)
         {
             bool isOnSameLine = Current.span.start.line == op.span.start.line;
             if (isOnSameLine || isEnclosed)
             {
                 var right = ParsePrimaryExpr(isEnclosed);
                 right = ParseInfix(right, isEnclosed);
                 return new NodeInfix(left, right, op);
             }
         }
         return new NodeSuffix(left, op);
     }
     return left;
 }
Example #13
0
 private NodeExpr ParseInvoke(NodeExpr node, bool isEnclosed)
 {
     if (!HasCurrent)
         return node;
     // TODO(kai): this is ugly, please fix it. Also submit feature request?
     NodeExpr expr;
     if ((Current.span.start.line == node.Span.start.line || isEnclosed) &&
         (expr = ParsePrimaryExpr(isEnclosed, false)) != null)
     {
         if (!(node is NodeId))
         {
             log.Error(node.Span, "Can only invoke functions.");
             return null; // TODO(kai): Should I return null?
         }
         var name = (node as NodeId).Image.Spanned(node.Span);
         List<NodeExpr> args = new List<NodeExpr>();
         args.Add(expr);
         while ((Current.span.start.line == node.Span.start.line || isEnclosed) &&
             (expr = ParsePrimaryExpr(isEnclosed, false)) != null)
         {
             args.Add(expr);
         }
         return new NodeInvoke(name, args);
     }
     return node;
 }
Example #14
0
 public NodeCCond(ITerminalNode cond, NodeExpr expr)
     : base(cond, null)
 {
     _expr = expr;
 }