Пример #1
0
 public static NeuIdentifier?GetIdentifier(
     this NeuCallExpression callExpr)
 {
     return(callExpr
            .GetIdentifierExpression()?
            .GetIdentifier());
 }
    public static NeuOperation Execute(
        this NeuInterpreter interpreter,
        NeuCallExpression callExpression)
    {
        var name = callExpression.GetName();

        if (IsNullOrWhiteSpace(name))
        {
            throw new Exception();
        }


        ///

        var rawArgs = callExpression.GetArguments();

        ///

        return(interpreter.Call(name, rawArgs));

        // ///



        // ///

        // if (IsNeuPrimitive(name)) {


        // }
    }
Пример #3
0
    public static IEnumerable <Node> GetArguments(
        this NeuCallExpression callExpr)
    {
        var args = new List <Node>();

        ///

        var insideParen = false;

        var done = false;

        ///

        foreach (var child in callExpr.Children)
        {
            if (done)
            {
                break;
            }

            ///

            switch (child)
            {
            case NeuPunc p when p.PuncType == NeuPuncType.LeftParen:

                insideParen = true;

                break;

            ///

            case NeuPunc p when p.PuncType == NeuPuncType.RightParen:

                insideParen = false;

                done = true;

                break;

            ///

            case var _ when insideParen:

                args.Add(child);

                // yield return child;

                break;

            ///

            default:

                continue;
            }
        }

        ///

        return(args);
    }
Пример #4
0
 public static String?GetName(
     this NeuCallExpression callExpr)
 {
     return(callExpr.GetIdentifier()?.Source);
 }
Пример #5
0
 public static NeuIdentifierExpression?GetIdentifierExpression(
     this NeuCallExpression callExpr)
 {
     return(callExpr.GetFirstOrDefault <NeuIdentifierExpression>());
 }