Expression* parseTernary(TokenStream* tokens, FileContext* fileContext)
	{
		Expression* expression = parseInequality(tokens, fileContext);
		if (tokens->safePeekValue() == "?")
		{
			Token questionToken = tokens->pop();
			Expression* trueExpression = parseTernary(tokens, fileContext);
			tokens->popExpected(":");
			Expression* falseExpression = parseTernary(tokens, fileContext);
			expression = new Ternary(expression, questionToken, trueExpression, falseExpression, fileContext);
		}
		return expression;
	}
Exemple #2
0
bool parseConstrs(B& in, S& solver)
{
    vec<Lit> ps; vec<Int> Cs; vec<char> tmp;
    int     ineq;
    Int     rhs;
    while (*in != EOF){
        parseExpr(in, solver, ps, Cs, tmp);
        ineq = parseInequality(in);
        rhs  = parseInt(in);

        skipWhitespace(in);
        if (!skipText(in, ";")) throw xstrdup("Expecting ';' after constraint.");
        skipEndOfLine(in);

        if (!solver.addConstr(ps, Cs, rhs, ineq))
            return false;
        ps.clear();
        Cs.clear();
    }
    return true;
}