yog-script-analyze 0.6.1

Yog Script (.ys, .yns) analyzed: its lexer, parser and syntax tree, names resolved, the class index model — what the build and the editors read a source with.
Documentation
namespace System.Linq.Expressions;

using System.Reflection;

/// Code as a tree to read — a lambda given where an `Expression<Func<…>>`
/// is wanted, or one made by these factories — as .NET's expression trees.
[Intrinsic]
public readonly abstract class Expression {
    public ExpressionType NodeType { get; }
    /// What it gives.
    public Type Type { get; }

    public static ConstantExpression Constant(object? value);
    public static ConstantExpression Constant(object? value, Type type);
    public static ParameterExpression Parameter(Type type);
    public static ParameterExpression Parameter(Type type, string? name);

    public static BinaryExpression Add(Expression left, Expression right);
    public static BinaryExpression Subtract(Expression left, Expression right);
    public static BinaryExpression Multiply(Expression left, Expression right);
    public static BinaryExpression Divide(Expression left, Expression right);
    public static BinaryExpression Modulo(Expression left, Expression right);
    public static BinaryExpression And(Expression left, Expression right);
    public static BinaryExpression Or(Expression left, Expression right);
    public static BinaryExpression ExclusiveOr(Expression left, Expression right);
    public static BinaryExpression LeftShift(Expression left, Expression right);
    public static BinaryExpression RightShift(Expression left, Expression right);
    public static BinaryExpression AndAlso(Expression left, Expression right);
    public static BinaryExpression OrElse(Expression left, Expression right);
    public static BinaryExpression Equal(Expression left, Expression right);
    public static BinaryExpression NotEqual(Expression left, Expression right);
    public static BinaryExpression LessThan(Expression left, Expression right);
    public static BinaryExpression LessThanOrEqual(Expression left, Expression right);
    public static BinaryExpression GreaterThan(Expression left, Expression right);
    public static BinaryExpression GreaterThanOrEqual(Expression left, Expression right);
    /// `left ?? right`.
    public static BinaryExpression Coalesce(Expression left, Expression right);
    public static BinaryExpression ArrayIndex(Expression array, Expression index);

    /// `left binaryType right`; `method` the operator a type declares (`null`: the language's).
    public static BinaryExpression MakeBinary(ExpressionType binaryType, Expression left, Expression right, bool liftToNull, MethodInfo? method);
    /// `unaryType operand`, of `type`; `method` the operator a type declares (`null`: the language's).
    public static UnaryExpression MakeUnary(ExpressionType unaryType, Expression operand, Type type, MethodInfo? method);

    public static UnaryExpression Not(Expression expression);
    public static UnaryExpression Negate(Expression expression);
    public static UnaryExpression Convert(Expression expression, Type type);

    public static MemberExpression Field(Expression? expression, FieldInfo field);
    public static MemberExpression Property(Expression? expression, PropertyInfo property);
    /// Its property `propertyOrFieldName`, else its field of the name.
    public static MemberExpression PropertyOrField(Expression expression, string propertyOrFieldName);
    public static MethodCallExpression Call(Expression? instance, MethodInfo method, Expression[] arguments);
    public static ConditionalExpression Condition(Expression condition, Expression ifTrue, Expression ifFalse);
    public static NewExpression New(ConstructorInfo constructor, Expression[] arguments);
    /// A lambda of `parameters` giving `body`, a `TDelegate` when compiled.
    [Reified]
    public static Expression<TDelegate> Lambda<TDelegate>(Expression body, ParameterExpression[] parameters);

    public override string ToString();
}