Пример #1
0
        public void parse(CSsemi.CSemiExp semi)
        {
            // Note: rule returns true to tell parser to stop
            //       processing the current semiExp

            Display.displaySemiString(semi.displayStr());

            foreach (IRule rule in Rules)
            {
                if (rule.test(semi))
                {
                    break;
                }
            }
        }
Пример #2
0
        static void Main(string[] args)
        {
          CSsemi.CSemiExp newSemi = new CSsemi.CSemiExp();

            newSemi.Add("\n\n");
            newSemi.Add("\nusing");
            newSemi.Add("System;");
            newSemi.Add("");
            newSemi.Add("List");
            newSemi.Add("<");
            newSemi.Add("string");
            newSemi.Add(">");
            newSemi.Add("newList");
            newSemi.Add("=");
            newSemi.Add("new");
            newSemi.Add("List");
            newSemi.Add("<");
            newSemi.Add("string");
            newSemi.Add(">");
            newSemi.Add(";");

            CSsemi.CSemiExp a = GetLeftOfEqual(newSemi);
            CSsemi.CSemiExp b = GetRightOfEqual(newSemi);
            CSsemi.CSemiExp c = RemoveNewLines(newSemi);
            CSsemi.CSemiExp d = RemoveGenerics(newSemi);

            Console.WriteLine(a.displayStr());
            Console.WriteLine(b.displayStr());
            Console.WriteLine(c.displayStr());

            a = GetLeftOfEqual(newSemi);
            a = RemoveNewLines(a);
            a = RemoveGenerics(a);

            Console.WriteLine(a.displayStr());

            b = GetRightOfEqual(newSemi);
            b = RemoveNewLines(b);
            b = RemoveGenerics(b);

            Console.WriteLine(b.displayStr());

            CSsemi.CSemiExp newSemiCombine = new CSsemi.CSemiExp();
            newSemiCombine.Add("Namespace");
            newSemiCombine.Add(".");
            newSemiCombine.Add("Class");
            newSemiCombine.Add(".");
            newSemiCombine.Add("Function");
            newSemiCombine.Add("testFunc");
            newSemiCombine.Add("()");
            newSemiCombine.Add("=");
            newSemiCombine.Add("SuperNameSpace");
            newSemiCombine.Add(".");
            newSemiCombine.Add("SuperClass");
            newSemiCombine.Add(".");
            newSemiCombine.Add("SuperFunc");
            newSemiCombine.Add("superTestFunc");
            newSemiCombine.Add("(");
            newSemiCombine.Add(")");
            newSemiCombine.Add(";");

            c = CombineNamespace(newSemiCombine);
            Console.WriteLine(c.displayStr());

            newSemi.flush();
            newSemi.Add("pubilc");
            newSemi.Add("class");
            newSemi.Add("myClass");
            newSemi.Add(":");
            newSemi.Add("BaseClass");
            newSemi.Add(":");
            newSemi.Add("IInterface");
            newSemi.Add(":");
            newSemi.Add("IInterface");
            newSemi.Add("{");

            a = GetInheritance(newSemi);
            Console.WriteLine(a.displayStr());

            newSemi.flush();
            newSemi.Add("pubilc");
            newSemi.Add("void");
            newSemi.Add("parse");
            newSemi.Add("(");
            newSemi.Add("SuperNamespace");
            newSemi.Add(".");
            newSemi.Add("SuperClass");
            newSemi.Add(".");
            newSemi.Add("Parser");
            newSemi.Add("p");
            newSemi.Add(",");
            newSemi.Add("int");
            newSemi.Add("value");
            newSemi.Add(")");
            newSemi.Add("{");

            a = GetFunctionParameters(newSemi);
            Console.WriteLine(a.displayStr());

            int n = GetNumberOfParameters(a);
            Console.WriteLine("num parameters: {0}", n);
            List<string> parmList = GetFunctionParameterAtIndex(a, 0);
            Console.WriteLine("type: {0} value: {1}", parmList[0], parmList[1]);
            parmList = GetFunctionParameterAtIndex(a, 1);
            Console.WriteLine("type: {0} value: {1}", parmList[0], parmList[1]);

            newSemi.flush();
            newSemi.Add("pubilc");
            newSemi.Add("void");
            newSemi.Add("parse");
            newSemi.Add("=");
            newSemi.Add("new");
            newSemi.Add("BlockHead");
            newSemi.Add("(");
            newSemi.Add(")");
            newSemi.Add(";");

            List<string> usageList = GetNewUsages(newSemi);
            Console.WriteLine("type: {0} value: {1}", usageList[0], usageList[1]);
        }