internal override Tree.Statement Gen(InfixGenerator lg) { return Tree.Ast.Block( Tree.Ast.Empty(_start), _body != null ? _body.Gen(lg) : Tree.Ast.Empty(), Tree.Ast.Empty(_end) ); }
internal override Tree.Expression Gen(InfixGenerator lg) { return Tree.Ast.Convert( Tree.Ast.Constant( _value ), typeof(object) ); }
internal override Tree.Statement Gen(InfixGenerator lg) { return Tree.Ast.Statement( Span, Tree.Ast.Call( typeof(InfixOps).GetMethod("Visible"), _expression.Gen(lg) ) ); }
internal override Tree.Expression Gen(InfixGenerator lg) { Operators op = DlrOperator(_op); return Tree.Ast.Action.Operator( op, typeof(object), _left.Gen(lg), _right.Gen(lg) ); }
internal override Tree.Statement Gen(InfixGenerator lg) { if (_statements != null) { Tree.Statement[] statements = new Tree.Statement[_statements.Length]; for (int i = 0; i < statements.Length; i++) { statements[i] = _statements[i].Gen(lg); } return Tree.Ast.Block( statements ); } else { return Tree.Ast.Empty(); } }
internal abstract Tree.Statement Gen(InfixGenerator gen);
internal virtual Tree.Statement GenSet(SourceSpan span, InfixGenerator lg, Operators op, Tree.Expression right) { throw new InvalidOperationException("Cannot assign to " + this.GetType().Name); }
internal abstract Tree.Expression Gen(InfixGenerator lg);