예제 #1
0
  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)
예제 #2
0
파일: parser.py 프로젝트: treycucco/pyebnf
 def op_add(self, text):
   """op_add = "+" ;"""
   self._attempting(text)
   return terminal("+")(text).retyped(TokenType.op_add)
예제 #3
0
파일: parser.py 프로젝트: treycucco/pyebnf
 def op_mult(self, text):
   """op_mult = "*" ;"""
   self._attempting(text)
   return terminal("*")(text).retyped(TokenType.op_mult)