diff options
author | Guido van Rossum <guido@python.org> | 2020-05-25 18:13:21 -0700 |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2020-05-25 22:15:56 -0700 |
commit | 9deae0ebb66bcc0680fb812cd0f72f91bb7068d0 (patch) | |
tree | 01c11acf9482002637780c88f81e7901058c2eb5 | |
parent | 8225723f29339043c641bb487afb6acd0d4c975d (diff) | |
download | cpython-git-soft-keywords.tar.gz |
Add some tests for soft keywordssoft-keywords
-rw-r--r-- | Lib/test/test_peg_generator/test_c_parser.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Lib/test/test_peg_generator/test_c_parser.py b/Lib/test/test_peg_generator/test_c_parser.py index f66b92def9..fcae5b2ff5 100644 --- a/Lib/test/test_peg_generator/test_c_parser.py +++ b/Lib/test/test_peg_generator/test_c_parser.py @@ -402,3 +402,34 @@ class TestCParser(TempdirManager, unittest.TestCase): parse.parse_string("a", mode=0) """ self.run_test(grammar_source, test_source) + + def test_no_soft_keywords(self) -> None: + grammar_source = """ + start: expr+ NEWLINE? ENDMARKER + expr: 'foo' + """ + grammar = parse_string(grammar_source, GrammarParser) + parser_source = generate_c_parser_source(grammar) + assert "expect_soft_keyword" not in parser_source + + def test_soft_keywords(self) -> None: + grammar_source = """ + start: expr+ NEWLINE? ENDMARKER + expr: "foo" + """ + grammar = parse_string(grammar_source, GrammarParser) + parser_source = generate_c_parser_source(grammar) + assert "expect_soft_keyword" in parser_source + + def test_soft_keywords_parse(self) -> None: + grammar_source = """ + @subheader "#undef D\\n#define D(x) x\\n" + start: "if" expr '+' expr NEWLINE + expr: NAME + """ + test_source = """ + valid_cases = ["if if + if"] + invalid_cases = ["if if"] + self.check_input_strings_for_grammar(valid_cases, invalid_cases) + """ + self.run_test(grammar_source, test_source) |