bpo-40334: Support CO_FUTURE_BARRY_AS_BDFL in the new parser (GH-19721)

This commit also allows to pass flags to the new parser in all interfaces and fixes a bug in the parser generator that was causing to inline rules with actions, making them disappear.
diff --git a/Lib/test/test_flufl.py b/Lib/test/test_flufl.py
index 35ab934..b714428 100644
--- a/Lib/test/test_flufl.py
+++ b/Lib/test/test_flufl.py
@@ -4,7 +4,6 @@
 from test import support
 
 
-@support.skip_if_new_parser("Not supported by pegen yet")
 class FLUFLTests(unittest.TestCase):
 
     def test_barry_as_bdfl(self):
@@ -16,10 +15,13 @@
                     __future__.CO_FUTURE_BARRY_AS_BDFL)
         self.assertRegex(str(cm.exception),
                          "with Barry as BDFL, use '<>' instead of '!='")
-        self.assertEqual(cm.exception.text, '2 != 3\n')
+        self.assertIn('2 != 3', cm.exception.text)
         self.assertEqual(cm.exception.filename, '<FLUFL test>')
-        self.assertEqual(cm.exception.lineno, 2)
-        self.assertEqual(cm.exception.offset, 4)
+
+        self.assertTrue(cm.exception.lineno, 2)
+        # The old parser reports the end of the token and the new
+        # parser reports the start of the token
+        self.assertEqual(cm.exception.offset, 4 if support.use_old_parser() else 3)
 
     def test_guido_as_bdfl(self):
         code = '2 {0} 3'
@@ -27,10 +29,12 @@
         with self.assertRaises(SyntaxError) as cm:
             compile(code.format('<>'), '<FLUFL test>', 'exec')
         self.assertRegex(str(cm.exception), "invalid syntax")
-        self.assertEqual(cm.exception.text, '2 <> 3\n')
+        self.assertIn('2 <> 3', cm.exception.text)
         self.assertEqual(cm.exception.filename, '<FLUFL test>')
         self.assertEqual(cm.exception.lineno, 1)
-        self.assertEqual(cm.exception.offset, 4)
+        # The old parser reports the end of the token and the new
+        # parser reports the start of the token
+        self.assertEqual(cm.exception.offset, 4 if support.use_old_parser() else 3)
 
 
 if __name__ == '__main__':