1234567891011121314151617181920212223242526272829303132333435 |
- from evaluator import *
- DESCRIPTION = "Test if the model can understand a vague BNF-style grammar and write a Python function that evaluates expressions based on the grammar rules."
- TAGS = ['code', 'python']
- question = """
- Given this BNF-style grammar write a Python function `evaluate(str)` that evaluates the expression
- <expression> ::= <term> | <expression> '+' <term> | <expression> '-' <term>
- <term> ::= <factor> | <term> '*' <factor> | <term> '/' <factor>
- <factor> ::= <number> | '(' <expression> ')' | <prefix-op> <factor>
- <prefix-op> ::= 'sin' | 'cos'
- <number> ::= <digit> | <number> <digit>
- <digit> ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
- For example you can evaluate this
- sin(3 + 2 * 4) - cos(15) = -0.240302
- """
- test_case, answer = make_python_test([("round(evaluate('sin(35+2*4)-cos(15)'), 5)", "-0.07209")])
- TestSimpleBNF = question >> LLMRun() >> ExtractCode() >> PythonRun(test_case) >> SubstringEvaluator(answer)
- if __name__ == "__main__":
- print(run_test(TestSimpleBNF))
|