コード例 #1
0
 //adds to finish if node is a type that can be a finish dependency
 //otherwise adds to execute dependencies
 public void tryFinish(INode_Expression node)
 {
     if( node.typeName == "identifier" )
     _finishDepends.UnionWith(Depends.depends(node));
     else
     _executeDepends.UnionWith(Depends.depends(node));
 }
コード例 #2
0
        public Node_Argument(
	Node_Identifier @parameterName,
	INode_Expression @value,
	string @nodeSource )
        {
            m_parameterName = @parameterName;
            m_value = @value;
            m_nodeSource = @nodeSource;
        }
コード例 #3
0
        public Node_And(
	INode_Expression @first,
	INode_Expression @second,
	string @nodeSource )
        {
            m_first = @first;
            m_second = @second;
            m_nodeSource = @nodeSource;
        }
コード例 #4
0
        IScope _scope; //should have already been trimmed for closure

        #endregion Fields

        #region Constructors

        public Function_Client(
	IList<ParameterImpl> parameters, NType returnType,
	INode_Expression body, IScope scope )
        {
            _parameters = parameters;
            _returnType = returnType;
            _body = body;
            _scope = scope;
        }
コード例 #5
0
        public static void reserveAny( INode_Expression node, IScope scope )
        {
            switch(node.typeName) {

            //these nodes have scope
            //xxx automate
            case "conditional" :
            case "function" :
            case "object" :
            case "try-catch" :
            break;

            //these nodes cannot contain declare-* children
            //xxx automate
            case "identifier" :
            case "integer" :
            case "string" :
            case "rational" :
            break;

            //xxx these need to be moved into the below category
            case "and" :
            case "nand" :
            case "or" :
            case "nor" :
            case "xor" :
            case "xnor" :
            break;

            //can contain declare-* nodes, and don't have scope
            case "assign" :
            reserveAny( (node as Node_Assign).value, scope );
            break;
            case "call" :
            reserve(node as Node_Call, scope);
            break;
            case "compound" :
            reserve(node as Node_Compound, scope);
            break;
            case "declare-assign" :
            reserve(node as Node_DeclareAssign, scope);
            break;
            case "declare-empty" :
            reserve(node as Node_DeclareEmpty, scope);
            break;
            case "extract-member" :
            reserveAny( (node as Node_ExtractMember).source, scope );
            break;
            case "set-property" :
            reserveAny( (node as Node_SetProperty).source, scope );
            reserveAny( (node as Node_SetProperty).value, scope );
            break;
            default :
            throw new Exception(String.Format("unrecognized node type '{0}'", node.typeName));
            }
        }
コード例 #6
0
        public void add(
	IScidentre ws, INode_Expression typeExpr, INode_Expression valueExpr, IScope scope )
        {
            Entry entry = new Entry(
            ws,
            typeExpr, valueExpr,
            scope,
            null, null,
            State.EMPTY,
            new HashSet<Entry>() );
            _entries.Add(entry);
            _entryLookup.Add(ws, entry);
        }
コード例 #7
0
 Client_Generator(INode_Expression body, IScope scope)
 {
     _closure = GE.createClosure(Depends.depends(body), scope);
     _thread = new Thread(new ThreadStart(delegate() {
     try {
         Executor.executeAny(body, _closure);
     }
     catch(ClientException e) {
         _exception = e;
     }
     }));
     _thread.IsBackground = true;
     _yieldValues.Add(_thread, null);
 }
コード例 #8
0
        public Node_Catcher(
	INode_Expression @type,
	Node_Identifier @name,
	INode_Expression @test,
	INode_Expression @result,
	string @nodeSource )
        {
            m_type = @type;
            m_name = @name;
            m_test = @test;
            m_result = @result;
            m_nodeSource = @nodeSource;
        }
コード例 #9
0
        public Node_Case(
	IList<INode_Expression> @testValues,
	INode_Expression @result,
	string @nodeSource )
        {
            m_testValues = @testValues;
            m_result = @result;
            m_nodeSource = @nodeSource;
        }
コード例 #10
0
        public Node_Caller(
	INode_Expression @interface,
	Node_Identifier @methodName,
	string @nodeSource )
        {
            m_interface = @interface;
            m_methodName = @methodName;
            m_nodeSource = @nodeSource;
        }
コード例 #11
0
        public Node_ParameterInfo(
	Node_Direction @direction,
	INode_Expression @type,
	Node_Identifier @name,
	Node_Boolean @hasDefaultValue,
	string @nodeSource )
        {
            m_direction = @direction;
            m_type = @type;
            m_name = @name;
            m_hasDefaultValue = @hasDefaultValue;
            m_nodeSource = @nodeSource;
        }
コード例 #12
0
 public static IType tryWrap( INode_Expression node, IScope scope )
 {
     //xxx
     return new NType();
 }
コード例 #13
0
        public Node_DeclareEmpty(
	Node_Identifier @name,
	INode_Expression @type,
	string @nodeSource )
        {
            m_name = @name;
            m_type = @type;
            m_nodeSource = @nodeSource;
        }
コード例 #14
0
        public Node_DeclareAssign(
	Node_Identifier @name,
	Node_Boolean @constant,
	INode_Expression @type,
	Node_Boolean @breed,
	INode_Expression @value,
	string @nodeSource )
        {
            m_name = @name;
            m_constant = @constant;
            m_type = @type;
            m_breed = @breed;
            m_value = @value;
            m_nodeSource = @nodeSource;
        }
コード例 #15
0
        public Node_TryCatch(
	INode_Expression @try,
	IList<Node_Catcher> @catchers,
	INode_Expression @onSuccess,
	INode_Expression @finally,
	string @nodeSource )
        {
            m_try = @try;
            m_catchers = @catchers;
            m_onSuccess = @onSuccess;
            m_finally = @finally;
            m_nodeSource = @nodeSource;
        }
コード例 #16
0
        public Node_SetProperty(
	INode_Expression @source,
	Node_Identifier @propertyName,
	INode_Expression @value,
	string @nodeSource )
        {
            m_source = @source;
            m_propertyName = @propertyName;
            m_value = @value;
            m_nodeSource = @nodeSource;
        }
コード例 #17
0
        public Node_Select(
	INode_Expression @inputValue,
	IList<Node_Case> @cases,
	INode_Expression @else,
	string @nodeSource )
        {
            m_inputValue = @inputValue;
            m_cases = @cases;
            m_else = @else;
            m_nodeSource = @nodeSource;
        }
コード例 #18
0
        public Node_Breeder(
	INode_Expression @type,
	string @nodeSource )
        {
            m_type = @type;
            m_nodeSource = @nodeSource;
        }
コード例 #19
0
        public Node_Raise(
	INode_Expression @value,
	string @nodeSource )
        {
            m_value = @value;
            m_nodeSource = @nodeSource;
        }
コード例 #20
0
        public Node_Property(
	Node_Identifier @name,
	Node_Boolean @writable,
	INode_Expression @type,
	string @nodeSource )
        {
            m_name = @name;
            m_writable = @writable;
            m_type = @type;
            m_nodeSource = @nodeSource;
        }
コード例 #21
0
        public Node_Method(
	Node_Identifier @name,
	INode_Expression @interface,
	string @nodeSource )
        {
            m_name = @name;
            m_interface = @interface;
            m_nodeSource = @nodeSource;
        }
コード例 #22
0
        public Node_Conditional(
	INode_Expression @test,
	INode_Expression @result,
	INode_Expression @else,
	string @nodeSource )
        {
            m_test = @test;
            m_result = @result;
            m_else = @else;
            m_nodeSource = @nodeSource;
        }
コード例 #23
0
        public Node_Curry(
	INode_Expression @function,
	IList<Node_Argument> @arguments,
	Node_Boolean @call,
	string @nodeSource )
        {
            m_function = @function;
            m_arguments = @arguments;
            m_call = @call;
            m_nodeSource = @nodeSource;
        }
コード例 #24
0
        public Node_MemberImplementation(
	Node_MemberType @memberType,
	Node_Identifier @name,
	INode_Expression @interface,
	INode_Expression @function,
	string @nodeSource )
        {
            m_memberType = @memberType;
            m_name = @name;
            m_interface = @interface;
            m_function = @function;
            m_nodeSource = @nodeSource;
        }
コード例 #25
0
        public Node_Worker(
	INode_Expression @face,
	IList<Node_Worker> @childWorkers,
	IList<Node_MemberImplementation> @memberImplementations,
	string @nodeSource )
        {
            m_face = @face;
            m_childWorkers = @childWorkers;
            m_memberImplementations = @memberImplementations;
            m_nodeSource = @nodeSource;
        }
コード例 #26
0
        public Node_Call(
	INode_Expression @receiver,
	IList<Node_Argument> @arguments,
	string @nodeSource )
        {
            m_receiver = @receiver;
            m_arguments = @arguments;
            m_nodeSource = @nodeSource;
        }
コード例 #27
0
        public Node_DeclareFirst(
	Node_Identifier @name,
	Node_Boolean @overload,
	INode_Expression @type,
	Node_Boolean @breed,
	INode_Expression @value,
	string @nodeSource )
        {
            m_name = @name;
            m_overload = @overload;
            m_type = @type;
            m_breed = @breed;
            m_value = @value;
            m_nodeSource = @nodeSource;
        }
コード例 #28
0
        public Node_Callee(
	IList<Node_ParameterInfo> @parameterInfos,
	INode_Expression @returnType,
	string @nodeSource )
        {
            m_parameterInfos = @parameterInfos;
            m_returnType = @returnType;
            m_nodeSource = @nodeSource;
        }
コード例 #29
0
        public Node_TypeSelect(
	INode_Expression @inputValue,
	Node_Identifier @castedName,
	Node_Boolean @requireMatch,
	IList<Node_TypeCase> @typeCases,
	INode_Expression @else,
	string @nodeSource )
        {
            m_inputValue = @inputValue;
            m_castedName = @castedName;
            m_requireMatch = @requireMatch;
            m_typeCases = @typeCases;
            m_else = @else;
            m_nodeSource = @nodeSource;
        }
コード例 #30
0
        public Node_Breed(
	INode_Expression @parent,
	INode_Expression @interface,
	string @nodeSource )
        {
            m_parent = @parent;
            m_interface = @interface;
            m_nodeSource = @nodeSource;
        }