public codeLine(string __name, syntaxBlockLineDeclaration __declaration) { _declarationBase = __declaration; //_source = __source; _name = __name; _children = new codeElementCollection(this, typeof(codeLineToken)); //deployDeclaration(); }
/// <summary> /// Generates source code string for this line /// </summary> /// <param name="syntax"></param> /// <returns></returns> public String render(syntaxDeclaration syntax) { //if (__declaration == null) __declaration = declaration; // __declaration.className String output = ""; if (declaration == null) { output = "# error [" + name + "]:[" + GetType().Name + "]" + Environment.NewLine; } else { syntaxLineClassDeclaration lineclass = syntax.lineClasses.getClass(declaration.className); syntaxBlockLineDeclaration sLD = null; if (parent != null) { syntaxBlockDeclaration sBD = syntax.blocks.find(parent.name) as syntaxBlockDeclaration; sLD = sBD.lines.find(name); if (sLD == null) { output = "# not supported: [" + name + "]:[" + GetType().Name + "]" + Environment.NewLine; return(output); } } //syntax.blocks.find() List <String> values = new List <String>(); foreach (codeLineToken tk in children.items) { values.Add(tk.getValue()); } if (sLD != null) { values[0] = sLD.name; } else { } if (!String.IsNullOrEmpty(values[0])) { output = String.Format(lineclass.template, values.ToArray()); } else { } } return(output); }
public void deployCode(codeSourceElement el, syntaxDeclaration syntax) { codeSourceElementCollection subElements = new codeSourceElementCollection(el, syntax); syntaxBlockDeclaration sb; foreach (codeSourceElement subEl in subElements.codeElements) { if (subEl.lineClass != null) { switch (subEl.lineClass.lineType) { case syntaxBlockLineType.normal: codeLine cl = children.getElement <codeLine>(subEl.name); if (cl == null) { syntaxBlockLineDeclaration cld = declaration.lines.Find(x => x.name == subEl.name); cl = new codeLine(subEl.name, cld); children.Add(cl); } cl.deployDeclaration(syntax); cl.deployCode(subEl); break; case syntaxBlockLineType.block: sb = syntax.blocks.find(subEl.name); codeBlock cb = children.getElement <codeBlock>(subEl.name); if (cb == null) { cb = new codeBlock(subEl.name, sb); children.Add(cb); } // cb.deployDeclaration(syntax); cb.deployCode(subEl, syntax); ////// ovde poziva obradu koda break; case syntaxBlockLineType.emptyLine: break; default: break; } } } }