Example #1
0
            internal static expr Convert(Compiler.Ast.Expression expr, expr_context ctx) {
                expr ast;

                if (expr is ConstantExpression)
                    ast = Convert((ConstantExpression)expr);
                else if (expr is NameExpression)
                    ast = new Name((NameExpression)expr, ctx);
                else if (expr is UnaryExpression)
                    ast = new UnaryOp((UnaryExpression)expr);
                else if (expr is BinaryExpression)
                    ast = Convert((BinaryExpression)expr);
                else if (expr is AndExpression)
                    ast = new BoolOp((AndExpression)expr);
                else if (expr is OrExpression)
                    ast = new BoolOp((OrExpression)expr);
                else if (expr is CallExpression)
                    ast = new Call((CallExpression)expr);
                else if (expr is ParenthesisExpression)
                    return Convert(((ParenthesisExpression)expr).Expression);
                else if (expr is LambdaExpression)
                    ast = new Lambda((LambdaExpression)expr);
                else if (expr is ListExpression)
                    ast = new List((ListExpression)expr, ctx);
                else if (expr is TupleExpression)
                    ast = new Tuple((TupleExpression)expr, ctx);
                else if (expr is DictionaryExpression)
                    ast = new Dict((DictionaryExpression)expr);
                else if (expr is ListComprehension)
                    ast = new ListComp((ListComprehension)expr);
                else if (expr is GeneratorExpression)
                    ast = new GeneratorExp((GeneratorExpression)expr);
                else if (expr is MemberExpression)
                    ast = new Attribute((MemberExpression)expr, ctx);
                else if (expr is YieldExpression)
                    ast = new Yield((YieldExpression)expr);
                else if (expr is ConditionalExpression)
                    ast = new IfExp((ConditionalExpression)expr);
                else if (expr is IndexExpression)
                    ast = new Subscript((IndexExpression)expr, ctx);
                else if (expr is SliceExpression)
                    ast = new Slice((SliceExpression)expr);
                else if (expr is BackQuoteExpression)
                    ast = new Repr((BackQuoteExpression)expr);
                else
                    throw new ArgumentTypeException("Unexpected expression type: " + expr.GetType());

                ast.GetSourceLocation(expr);
                return ast;
            }
Example #2
0
 internal Attribute(MemberExpression attr, expr_context ctx)
     : this() {
     _value = Convert(attr.Target);
     _attr = attr.Name;
     _ctx = ctx;
 }
Example #3
0
            internal Subscript(IndexExpression expr, expr_context ctx)
                : this() {
                _value = Convert(expr.Target);
                AST index = Convert(expr.Index);
                if (index is expr)
                    if (index is Tuple && ((TupleExpression)expr.Index).IsExpandable)
                        _slice = new ExtSlice(((Tuple)index).elts);
                    else
                        _slice = new Index((expr)index);
                else if (index is slice) // includes Ellipsis
                    _slice = (slice)index;
                else
                    throw new ArgumentTypeException("Unexpected index expression: " + expr.Index.GetType());

                _ctx = ctx;
            }
Example #4
0
            internal Tuple(TupleExpression list, expr_context ctx)
                : this() {
                _elts = PythonOps.MakeEmptyList(list.Items.Count);
                foreach (Compiler.Ast.Expression expr in list.Items)
                    _elts.Add(Convert(expr, ctx));

                _ctx = ctx;
            }
Example #5
0
 internal Name(NameExpression expr, expr_context ctx)
     : this(expr.Name, ctx) {
 }
Example #6
0
 internal Name(string id, expr_context ctx)
     : this() {
     _id = id;
     _ctx = ctx;
 }
Example #7
0
 public Tuple(PythonList elts, expr_context ctx, [Optional]int? lineno, [Optional]int? col_offset)
     : this()
 {
     _elts = elts;
     _ctx = ctx;
     _lineno = lineno;
     _col_offset = col_offset;
 }
Example #8
0
 public Attribute(expr value, string attr, expr_context ctx,
     [Optional]int? lineno, [Optional]int? col_offset)
     : this()
 {
     _value = value;
     _attr = attr;
     _ctx = ctx;
     _lineno = lineno;
     _col_offset = col_offset;
 }
Example #9
0
 internal Subscript(IndexExpression expr, expr_context ctx)
     : this()
 {
     _value = Convert(expr.Target);
     _ctx = ctx;
     _slice = TrySliceConvert(expr.Index);
     if (_slice == null)
         _slice = new Index(Convert(expr.Index));
 }
Example #10
0
 public Subscript( expr value, slice slice, expr_context ctx, 
     [Optional]int? lineno, [Optional]int? col_offset )
     : this()
 {
     _value = value;
     _slice = slice;
     _ctx = ctx;
     _lineno = lineno;
     _col_offset = col_offset;
 }
Example #11
0
 internal Name(NameExpression expr, expr_context ctx)
     : this(expr.Name, ctx)
 {
     GetSourceLocation(expr);
 }
Example #12
0
 public Name(String id, expr_context ctx)
     : this(id, ctx, null, null)
 {
 }
Example #13
0
 public Name(string id, expr_context ctx, [Optional]int? lineno, [Optional]int? col_offset)
     : this()
 {
     _id = id;
     _ctx = ctx;
     _lineno = lineno;
     _col_offset = col_offset;
 }