def test_terminal(self): e0 = P.terminal("a") t0 = "abc" n0 = e0(t0) self.assertEqual(n0.node_type, P.ParseNodeType.terminal) self.assertTrue(n0.is_value) self.assertEqual(n0.value, "a") self.assertEqual(n0.position, -len(t0)) self.assertEqual(len(n0.children), 1) self.assertEqual(n0.children[0], "a") t1 = "bcd" with self.assertRaises(P.DeadEnd): e0(t1)
def op_add(self, text): """op_add = "+" ;""" self._attempting(text) return terminal("+")(text).retyped(TokenType.op_add)
def op_mult(self, text): """op_mult = "*" ;""" self._attempting(text) return terminal("*")(text).retyped(TokenType.op_mult)