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); }
public override preCH_deltaScope scope(preCH_deltaScope SC) { preCH_deltaScope midSC = memaTR.scope(SC); if (assignTR == null) { return(midSC); } return(assignTR.scope(midSC)); }
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); }
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); }
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); }
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 }); }
public override preCH_deltaScope scope(preCH_deltaScope c) { return(c); }
public override preCH_deltaScope scope(preCH_deltaScope c) { return(rg_edgeTU.scope(c)); }