public LanguageBlockNode(LanguageBlockNode rhs) : base(rhs) { CodeBlockNode = ProtoCore.Utils.NodeUtils.Clone(rhs.CodeBlockNode); codeblock = new ProtoCore.LanguageCodeBlock(rhs.codeblock); Attributes = new List<ImperativeNode>(); foreach (ImperativeNode aNode in rhs.Attributes) { ImperativeNode newNode = ProtoCore.Utils.NodeUtils.Clone(aNode); Attributes.Add(newNode); } }
public override AssociativeNode VisitLanguageBlockNode(LanguageBlockNode node) { var cbn = node.CodeBlockNode as CodeBlockNode; if (cbn == null) { return(base.VisitLanguageBlockNode(node)); } var nodeList = cbn.Body.Select(astNode => astNode.Accept(this)).ToList(); cbn.Body = nodeList; return(node); }
void languageblock(out Node node) { node = null; LanguageBlockNode langblock = new LanguageBlockNode(); Expect(6); Expect(1); if (0 == t.val.CompareTo("Imperative")) { langblock.codeblock.language = ProtoCore.Language.kImperative; } else if (0 == t.val.CompareTo("Associative")) { langblock.codeblock.language = ProtoCore.Language.kAssociative; } while (la.kind == 30) { Get(); string key; Expect(1); key = t.val; Expect(31); Expect(4); if ("fingerprint" == key) { langblock.codeblock.fingerprint = t.val; langblock.codeblock.fingerprint = langblock.codeblock.fingerprint.Remove(0, 1); langblock.codeblock.fingerprint = langblock.codeblock.fingerprint.Remove(langblock.codeblock.fingerprint.Length - 1, 1); } else if ("version" == key) { langblock.codeblock.version = t.val; langblock.codeblock.version = langblock.codeblock.version.Remove(0, 1); langblock.codeblock.version = langblock.codeblock.version.Remove(langblock.codeblock.version.Length - 1, 1); } } Expect(7); Expect(26); langblock.codeblock.body = t.val.Substring(2, t.val.Length - 4); node = langblock; ParseLanguageBlockNode(langblock); }
private void ParseLanguageBlockNode(LanguageBlockNode langblock) { if (!core.langverify.Verify(langblock.codeblock)) { return; } ProtoCore.ParserBase parser = null; System.IO.MemoryStream memstream = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(langblock.codeblock.body)); if (langblock.codeblock.language == ProtoCore.Language.kImperative) { parser = new Imperative.Parser(new Imperative.Scanner(memstream), core); } else if (langblock.codeblock.language == ProtoCore.Language.kAssociative) { parser = new Associative.Parser(new Associative.Scanner(memstream), core); } try { parser.errorStream = new System.IO.StringWriter(); parser.Parse(); if (parser.errorStream.ToString() != String.Empty) { core.BuildStatus.LogSyntaxError(parser.errorStream.ToString()); } core.BuildStatus.errorCount += parser.errorCount; langblock.codeBlockNode = parser.codeblock; } catch (ProtoCore.BuildHaltException e) { System.Console.WriteLine(e.errorMsg); } }
public virtual void VisitLanguageBlockNode(LanguageBlockNode node) { DefaultVisit(node); }
public virtual TAssociative VisitLanguageBlockNode(LanguageBlockNode node) { return(VisitAssociativeNode(node)); }
public virtual bool VisitLanguageBlockNode(LanguageBlockNode node) { return(DefaultVisit(node)); }