Beispiel #1
0
 def test_epsilon(self):
     x = Grammar([
         "S -> A B C", "A -> a | #", "B -> A D | b", "C -> c d",
         "D -> d | #"
     ])
     self.assertEqual(
         x.first_sets(), {
             "S": {"a", "d", "b", "c"},
             "A": {"a", "#"},
             "B": {"a", "d", "b", "#"},
             "C": {"c"},
             "D": {"d", "#"},
         })
Beispiel #2
0
 def test_basic(self):
     x = Grammar([
         "S -> C C",
         "C -> e C | d",
     ])
     self.assertEqual(x.first_sets(), {"S": {"e", "d"}, "C": {"e", "d"}})