Example #1
0
long expression0() {
	long result = expression1();
	while (peek() == '+' || peek() == '-')
		if (get() == '+')
			result += expression1();
		else
			result -= expression1();
	return result;
}
Example #2
0
Astnode *expression()
{
    Astnode *tnode  = term();
    Astnode *e1node = expression1();

    return create_node(OP_ADD, tnode, e1node);
}
Example #3
0
Astnode *expression1()
{
    Astnode *tnode;
    Astnode *e1node;

    switch (g_token.type) {
    case ADD:
        next_token();
        tnode  = term();
        e1node = expression1();

        return create_node(OP_ADD, e1node, tnode);
    case SUB:
        next_token();
        tnode  = term();
        e1node = expression1();

        return create_node(OP_SUB, e1node, tnode);
    }

    return create_numbernode(0);
}
Example #4
0
    void TestWriteVectorOfRegexWithIndex(void)
    {
        // Marshal a vector of SCXRegexWithIndex structures
        stringstream stream;
        SCXCoreLib::Marshal msobj(stream);
        vector<SCXCoreLib::SCXRegexWithIndex> vri;

        SCXCoreLib::SCXRegexWithIndex ri1;
        std::wstring expression1(L"abc");
        ri1.index = 1;
        ri1.regex = new SCXCoreLib::SCXRegex(expression1);
        SCXCoreLib::SCXRegexWithIndex ri2;
        std::wstring expression2(L"def");
        ri2.index = 2;
        ri2.regex = new SCXCoreLib::SCXRegex(expression2);

        vri.push_back(ri1);
        vri.push_back(ri2);
        msobj.Write(vri);

        // UnMarshal and verify that it's correct
        SCXCoreLib::UnMarshal unobj(stream);

        vector<SCXCoreLib::SCXRegexWithIndex> vri2;
        unobj.Read(vri2);

        CPPUNIT_ASSERT_EQUAL(vri.size(), vri2.size());
        for(int ii = 0; ii < (int) vri.size(); ii++)
        {
            CPPUNIT_ASSERT_EQUAL(vri[ii].index, vri2[ii].index);
            CPPUNIT_ASSERT(vri[ii].regex->Get() == vri2[ii].regex->Get());
        }

        // Assure that the received regular expressions are actually correct
        CPPUNIT_ASSERT_EQUAL(std::string("abc"), SCXCoreLib::StrToUTF8(vri2[0].regex->Get()));
        CPPUNIT_ASSERT_EQUAL(std::string("def"), SCXCoreLib::StrToUTF8(vri2[1].regex->Get()));
    }
Example #5
0
int expression(void)
{
	return i*expression1();
}