コード例 #1
0
 public override preCH_deltaScope scope(preCH_deltaScope c)
 {
     // root_SG_edge doesnt do scopemafing
     foreach (var primStep in subsequent_Steps)
     {
         c = primStep.scope(c);
     }
     return(c);
 }
コード例 #2
0
        public override preCH_deltaScope scope(preCH_deltaScope SC)
        {
            preCH_deltaScope midSC = memaTR.scope(SC);

            if (assignTR == null)
            {
                return(midSC);
            }
            return(assignTR.scope(midSC));
        }
コード例 #3
0
        public override preCH_deltaScope scope(preCH_deltaScope c)
        {
            var c_out = c;

            foreach (var FE_TU in FanElemTUs)
            {
                c_out = FE_TU.scope(c_out);
            }
            return(c_out);
        }
コード例 #4
0
    public static ParserComb.NamedNode ScopeAndType(string src, CH_closedScope scopeIN, MG.PI StartProd, Func <ParserComb.NamedNode, TranslationUnit> TRInstantiate)
    {
        ParserComb.NamedNode NN = LexxAndParse_incomplete_tolerant(src, StartProd);

        // TR constructors do not provide a uniform interface because there is no need for it
        TranslationUnit TR            = TRInstantiate(NN);
        var             deltaScope    = new preCH_deltaScope(scopeIN);
        var             combinedScope = TR.scope(deltaScope);

        return(NN);
    }
コード例 #5
0
    public static ParserComb.NamedNode Scope(
        IEnumerable <PTok> toksIN,
        CH_closedScope scopeIN,
        MG.PI StartProd, Func <NamedNode, TranslationUnit> TRInstantiate,
        out TranslationUnit TRU)
    {
        var matches = MG.RUN_with_rest(StartProd, toksIN).ToArray();

        if (matches.Length.NLSend("matchlen") == 0 || matches[0].rest.Any())
        {
            throw new Exception();                                                                 // no match , or the most greedy match could not consume whole input
        }
        // MAJOR-TODO !!  ambigous grammars with epsilon consuming productions can yield
        //                an INFINITE number of alternatives , if there is a .ToArray() somewhere -> CRASH !!

        NamedNode       NN            = matches[0].N;
        TranslationUnit TR            = TRInstantiate(NN);
        var             deltaScope    = new preCH_deltaScope(scopeIN);
        var             combinedScope = TR.scope(deltaScope);

        TRU = TR;
        return(NN);
    }
コード例 #6
0
    public static Compilat TranslateFully(string src, GrammarEntry GE, TranslateLHS eval_LHS)
    {
        ParserComb.NamedNode NN = LexxAndParse(src, GE.StartProd);


        var TR         = GE.TR_constructor(NN);
        var deltaScope = new preCH_deltaScope(eval_LHS.scope);
        preCH_deltaScope combinedScope = TR.scope(deltaScope);

        var OPs     = TR.emit().ToArray();
        var VBoxTrs = TR.VBoxTUs;

        // basic compile sanity
        // if ( ! ( VBoxTrs.SelectMany ( vbx => vbx.emit()).Count() == OPs.Length ))throw new Exception();
        // figgn! ... im allgemeinen stimmt das gar nicht der OPSuiGen ist in keiner VBoxTU enthalten, so wie das im Moment generiert wird
        // ---

        return(new Compilat {
            deltaScope = (CH_deltaScope)combinedScope.instantiate(),
            OPs = OPs,
            src = src,
            VBoxTrs = VBoxTrs
        });
    }
コード例 #7
0
ファイル: NewBehaviourScript.cs プロジェクト: elkawee/UShell
 public override preCH_deltaScope scope(preCH_deltaScope c)
 {
     return(c);
 }
コード例 #8
0
ファイル: NewBehaviourScript.cs プロジェクト: elkawee/UShell
 public override preCH_deltaScope scope(preCH_deltaScope c)
 {
     return(rg_edgeTU.scope(c));
 }