Пример #1
0
        public void AddPredefinedHeader(string code)
        {
            List <CodeToken> tokens  = NativeXCodeParser.Tokenize(code.ToCharArray());
            int         currentToken = 0;
            bool        parseSuccess = false;
            NativeXUnit unit         = NativeXCodeParser.ParseUnit(tokens, ref currentToken, ref parseSuccess);

            if (unit != null && parseSuccess)
            {
                unit.BuildScope(null);
                this.predefinedHeaders.Add(unit);
            }
        }
Пример #2
0
 public void TestParseUnit()
 {
     {
         string      code = File.ReadAllText("NativeXCodeForParser1.txt");
         NativeXUnit unit = Parse(code, NativeXCodeParser.ParseUnit);
         AssertUnit(unit);
         Assert.IsNull(unit.UsesUnits);
     }
     {
         string      code = File.ReadAllText("NativeXCodeForParser2.txt");
         NativeXUnit unit = Parse(code, NativeXCodeParser.ParseUnit);
         AssertUnit(unit);
         Assert.IsTrue(unit.UsesUnits.Select(u => u.UnitName).SequenceEqual(new string[] { "Utility", "Prelude" }));
     }
 }
Пример #3
0
 private void AssertUnit(NativeXUnit unit)
 {
     Assert.AreEqual("nativex_program_generated", unit.Name);
     Assert.AreEqual(12, unit.Declarations.Count);
     Assert.AreEqual("main", (unit.Declarations[0] as NativeXFunctionDeclaration).Name);
     Assert.AreEqual("main1", (unit.Declarations[1] as NativeXFunctionDeclaration).Name);
     Assert.AreEqual("main2", (unit.Declarations[2] as NativeXFunctionDeclaration).Name);
     Assert.AreEqual("Eq", (unit.Declarations[3] as NativeXConceptDeclaration).Name);
     Assert.AreEqual("Eq", (unit.Declarations[4] as NativeXInstanceDeclaration).ConceptName.ReferenceName);
     Assert.AreEqual("IntEquals", (unit.Declarations[5] as NativeXFunctionDeclaration).Name);
     Assert.AreEqual("IntNotEquals", (unit.Declarations[6] as NativeXFunctionDeclaration).Name);
     Assert.AreEqual("Vector", (unit.Declarations[7] as NativeXStructureDeclaration).Name);
     Assert.AreEqual("Eq", (unit.Declarations[8] as NativeXInstanceDeclaration).ConceptName.ReferenceName);
     Assert.AreEqual("VectorEquals", (unit.Declarations[9] as NativeXFunctionDeclaration).Name);
     Assert.AreEqual("VectorNotEquals", (unit.Declarations[10] as NativeXFunctionDeclaration).Name);
     Assert.AreEqual("FakeFunction", (unit.Declarations[11] as NativeXFunctionDeclaration).Name);
 }