From 23e4596ec1d7de813fe88d05eca072d0f8249dfc Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Thu, 26 Jul 2018 17:06:09 -0700 Subject: [PATCH] Add test for handling of precedence within tokens --- .../precedence_on_token/corpus.txt | 22 +++++++ .../precedence_on_token/grammar.json | 61 +++++++++++++++++++ test/integration/test_grammars.cc | 2 - 3 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/test_grammars/precedence_on_token/corpus.txt create mode 100644 test/fixtures/test_grammars/precedence_on_token/grammar.json diff --git a/test/fixtures/test_grammars/precedence_on_token/corpus.txt b/test/fixtures/test_grammars/precedence_on_token/corpus.txt new file mode 100644 index 00000000..8c8fd541 --- /dev/null +++ b/test/fixtures/test_grammars/precedence_on_token/corpus.txt @@ -0,0 +1,22 @@ +========================================== +simple strings +========================================== + +"hi" + +--- + +(program (string)) + +========================================== +strings starting with double slashes +========================================== + +// comment +"//not \t a \t comment" + +--- + +(program + (comment) + (string (escape_sequence) (escape_sequence))) diff --git a/test/fixtures/test_grammars/precedence_on_token/grammar.json b/test/fixtures/test_grammars/precedence_on_token/grammar.json new file mode 100644 index 00000000..d9557add --- /dev/null +++ b/test/fixtures/test_grammars/precedence_on_token/grammar.json @@ -0,0 +1,61 @@ +{ + "name": "precedence_on_token", + + "extras": [ + {"type": "SYMBOL", "name": "comment"}, + {"type": "PATTERN", "value": "\\s"}, + ], + + "rules": { + "program": { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "string" + } + }, + + "comment": { + "type": "PATTERN", + "value": "//.*" + }, + + "string": { + "type": "SEQ", + "members": [ + {"type": "STRING", "value": "\""}, + + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "TOKEN", + "content": { + "type": "PREC", + "value": 1, + "content": { + "type": "PATTERN", + "value": "[^\"\n\\\\]+" + } + } + }, + { + "type": "SYMBOL", + "name": "escape_sequence" + } + ] + } + }, + + {"type": "STRING", "value": "\""} + ] + }, + + "escape_sequence": { + "type": "PATTERN", + "value": "\\\\." + } + } +} diff --git a/test/integration/test_grammars.cc b/test/integration/test_grammars.cc index 3741a3c9..d10523ae 100644 --- a/test/integration/test_grammars.cc +++ b/test/integration/test_grammars.cc @@ -9,8 +9,6 @@ START_TEST -if (TREE_SITTER_SEED == -1) return; - string grammars_dir_path = join_path({"test", "fixtures", "test_grammars"}); vector test_languages = list_directory(grammars_dir_path);