We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 308bf5c commit 6cbfaaeCopy full SHA for 6cbfaae
ometa/test/test_pymeta.py
@@ -359,6 +359,23 @@ def test_leftrecursion(self):
359
self.assertEqual(g.num("32767"), 32767)
360
361
362
+ def test_mutual_leftrecursion(self):
363
+ g = self.compile("""
364
+ num ::= (<num>:n <digit>:d => n * 10 + d
365
+ | <digit>)
366
+ digit ::= :x ?(x.isdigit()) => int(x)
367
+ x ::= <expr>
368
+ expr ::= <expr>:e '-' <num>:n => e - n
369
+ | <num>
370
+ """)
371
+ self.assertEqual(g.expr("3"), 3)
372
+ self.assertEqual(g.expr("3-2"), 1)
373
+ self.assertEqual(g.expr("3-2-1"), 0)
374
+ self.assertEqual(g.x("3"), 3)
375
+ self.assertEqual(g.x("3-2"), 1)
376
+ self.assertEqual(g.x("3-2-1"), 0)
377
+
378
379
def test_characterVsSequence(self):
380
"""
381
Characters (in single-quotes) are not regarded as sequences.
0 commit comments