Example #1
0
        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);
            }
        }
Example #2
0
        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);
        }