示例#1
0
        public void TestSimpleVariableDeclaration()
        {
            var Node = CParser.StaticParseBlock("int a = 0, b = 1, *c = 5 + 2;");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- DeclarationList:",
                "   - VariableDeclaration: int a",
                "      - BinaryExpression: =",
                "         - IdentifierExpression: a",
                "         - IntegerExpression: 0",
                "   - VariableDeclaration: int b",
                "      - BinaryExpression: =",
                "         - IdentifierExpression: b",
                "         - IntegerExpression: 1",
                "   - VariableDeclaration: int * c",
                "      - BinaryExpression: =",
                "         - IdentifierExpression: c",
                "         - BinaryExpression: +",
                "            - IntegerExpression: 5",
                "            - IntegerExpression: 2",
            },
                Node.ToYamlLines().ToArray()
                );
        }
示例#2
0
        public void TestMethod8()
        {
            var Node = CParser.StaticParseBlock(@"
				{
					int a = 0, b = 1;

					if (a == 0 && b == 1) {
						printf(""Hello World!"");
					} else {
						int c = 7 + atoi(""8"");
					}
				}
			"            );

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- CompoundStatement:",
                "   - DeclarationList:",
                "      - VariableDeclaration: int a",
                "         - BinaryExpression: =",
                "            - IdentifierExpression: a",
                "            - IntegerExpression: 0",
                "      - VariableDeclaration: int b",
                "         - BinaryExpression: =",
                "            - IdentifierExpression: b",
                "            - IntegerExpression: 1",
                "   - IfElseStatement:",
                "      - BinaryExpression: &&",
                "         - BinaryExpression: ==",
                "            - IdentifierExpression: a",
                "            - IntegerExpression: 0",
                "         - BinaryExpression: ==",
                "            - IdentifierExpression: b",
                "            - IntegerExpression: 1",
                "      - ExpressionStatement:",
                "         - FunctionCallExpression:",
                "            - IdentifierExpression: printf",
                "            - ExpressionCommaList:",
                "               - StringExpression: Hello World!",
                "      - VariableDeclaration: int c",
                "         - BinaryExpression: =",
                "            - IdentifierExpression: c",
                "            - BinaryExpression: +",
                "               - IntegerExpression: 7",
                "               - FunctionCallExpression:",
                "                  - IdentifierExpression: atoi",
                "                  - ExpressionCommaList:",
                "                     - StringExpression: 8",
            },
                Node.ToYamlLines().ToArray()
                );
        }
示例#3
0
        public void TestSimpleCompound()
        {
            var Node = CParser.StaticParseBlock("{ ; ; ; }");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- CompoundStatement:",
                "   - CompoundStatement:",
                "   - CompoundStatement:",
                "   - CompoundStatement:",
            },
                Node.ToYamlLines().ToArray()
                );
        }
示例#4
0
        public void TestIfElseEmpty()
        {
            var Node = CParser.StaticParseBlock("if (1 + 2) { } else ;");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- IfElseStatement:",
                "   - BinaryExpression: +",
                "      - IntegerExpression: 1",
                "      - IntegerExpression: 2",
                "   - CompoundStatement:",
                "   - CompoundStatement:",
            },
                Node.ToYamlLines().ToArray()
                );
        }
示例#5
0
        public void TestVectorInitializer()
        {
            var Node = CParser.StaticParseBlock(@"
				static const unsigned char p[] = {5,4,3,2,1,0};
			"            );

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- VariableDeclaration: const unsigned static char[6] p",
                "   - VectorInitializationExpression:",
                "      - BinaryExpression: =",
                "         - ArrayAccessExpression:",
                "            - IdentifierExpression: p",
                "            - IntegerExpression: 0",
                "         - IntegerExpression: 5",
                "      - BinaryExpression: =",
                "         - ArrayAccessExpression:",
                "            - IdentifierExpression: p",
                "            - IntegerExpression: 1",
                "         - IntegerExpression: 4",
                "      - BinaryExpression: =",
                "         - ArrayAccessExpression:",
                "            - IdentifierExpression: p",
                "            - IntegerExpression: 2",
                "         - IntegerExpression: 3",
                "      - BinaryExpression: =",
                "         - ArrayAccessExpression:",
                "            - IdentifierExpression: p",
                "            - IntegerExpression: 3",
                "         - IntegerExpression: 2",
                "      - BinaryExpression: =",
                "         - ArrayAccessExpression:",
                "            - IdentifierExpression: p",
                "            - IntegerExpression: 4",
                "         - IntegerExpression: 1",
                "      - BinaryExpression: =",
                "         - ArrayAccessExpression:",
                "            - IdentifierExpression: p",
                "            - IntegerExpression: 5",
                "         - IntegerExpression: 0",
            },
                Node.ToYamlLines().ToArray()
                );
        }
示例#6
0
        public void TestForEver()
        {
            var Node = CParser.StaticParseBlock("for (;;) ;");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- ForStatement:",
                "   - ExpressionStatement:",
                "      - (null)",
                "   - (null)",
                "   - ExpressionStatement:",
                "      - (null)",
                "   - CompoundStatement:",
            },
                Node.ToYamlLines().ToArray()
                );
        }
示例#7
0
        public void TestSimpleFor()
        {
            var Node = CParser.StaticParseBlock("for (n = 0; n < 10; n++) ;");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- ForStatement:",
                "   - ExpressionStatement:",
                "      - BinaryExpression: =",
                "         - IdentifierExpression: n",
                "         - IntegerExpression: 0",
                "   - BinaryExpression: <",
                "      - IdentifierExpression: n",
                "      - IntegerExpression: 10",
                "   - ExpressionStatement:",
                "      - UnaryExpression: ++ (Right)",
                "         - IdentifierExpression: n",
                "   - CompoundStatement:",
            },
                Node.ToYamlLines().ToArray()
                );
        }
示例#8
0
        public void TestArrayAccessInFunction()
        {
            var Node = CParser.StaticParseBlock(@"
				void test() {
					a()[0];
				}
			"            );

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- FunctionDeclaration: void test ()",
                "   - CompoundStatement:",
                "      - ExpressionStatement:",
                "         - ArrayAccessExpression:",
                "            - FunctionCallExpression:",
                "               - IdentifierExpression: a",
                "               - ExpressionCommaList:",
                "            - IntegerExpression: 0",
            },
                Node.ToYamlLines().ToArray()
                );
        }