예제 #1
0
파일: Program.cs 프로젝트: whoisjake/Infix
 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)
     );
 }
예제 #2
0
파일: Constant.cs 프로젝트: whoisjake/Infix
 internal override Tree.Expression Gen(InfixGenerator lg)
 {
     return Tree.Ast.Convert(
         Tree.Ast.Constant(
             _value
         ),
         typeof(object)
     );
 }
예제 #3
0
 internal override Tree.Statement Gen(InfixGenerator lg)
 {
     return Tree.Ast.Statement(
         Span,
         Tree.Ast.Call(
             typeof(InfixOps).GetMethod("Visible"),
             _expression.Gen(lg)
         )
     );
 }
예제 #4
0
파일: Binary.cs 프로젝트: whoisjake/Infix
        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)
            );
        }
예제 #5
0
파일: Block.cs 프로젝트: whoisjake/Infix
 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();
     }
 }
예제 #6
0
 internal abstract Tree.Statement Gen(InfixGenerator gen);
예제 #7
0
 internal virtual Tree.Statement GenSet(SourceSpan span, InfixGenerator lg, Operators op, Tree.Expression right)
 {
     throw new InvalidOperationException("Cannot assign to " + this.GetType().Name);
 }
예제 #8
0
 internal abstract Tree.Expression Gen(InfixGenerator lg);