Skip to content
This repository was archived by the owner on Nov 9, 2022. It is now read-only.

Commit 2fea1cc

Browse files
committed
Merge rule branch
2 parents 0e862b0 + 5cdb307 commit 2fea1cc

17 files changed

+285
-3
lines changed

gherkin-languages.json

Lines changed: 222 additions & 0 deletions
Large diffs are not rendered by default.

gherkin.berp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
[
2-
Tokens -> #Empty,#Comment,#TagLine,#FeatureLine,#BackgroundLine,#ScenarioLine,#ExamplesLine,#StepLine,#DocStringSeparator,#TableRow,#Language
2+
Tokens -> #Empty,#Comment,#TagLine,#FeatureLine,#RuleLine,#BackgroundLine,#ScenarioLine,#ExamplesLine,#StepLine,#DocStringSeparator,#TableRow,#Language
33
IgnoredTokens -> #Comment,#Empty
44
ClassName -> Parser
55
Namespace -> Gherkin
66
]
77

88
GherkinDocument! := Feature?
9-
Feature! := FeatureHeader Background? ScenarioDefinition*
9+
Feature! := FeatureHeader Background? ScenarioDefinition* Rule*
1010
FeatureHeader! := #Language? Tags? #FeatureLine DescriptionHelper
1111

12+
Rule! := RuleHeader Background? ScenarioDefinition*
13+
RuleHeader! := #RuleLine DescriptionHelper
14+
1215
Background! := #BackgroundLine DescriptionHelper Step*
1316

1417
// we could avoid defining ScenarioDefinition, but that would require regular look-aheads, so worse performance
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{"data":"Feature: Inconsistent cell counts\n\n Scenario: minimalistic\n Given a data table with inconsistent cell count\n | foo | bar |\n | boz | \n\n\n Scenario Outline: minimalistic\n Given the <what>\n\n Examples: \n | what |\n | minimalism | extra |\n","media":{"contentType":"text/x.cucumber.gherkin+plain","encoding":"UTF-8"},"uri":"testdata/bad/inconsistent_cell_count.feature"}
2+
{"data":"(6:7): inconsistent cell count within the table","source":{"location":{"column":7,"line":6},"uri":"testdata/bad/inconsistent_cell_count.feature"}}
3+
{"data":"(14:5): inconsistent cell count within the table","source":{"location":{"column":5,"line":14},"uri":"testdata/bad/inconsistent_cell_count.feature"}}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{"data":"\ninvalid line here\n\nFeature: Multiple parser errors\n\n Scenario: minimalistic\n Given the minimalism\n\nanother invalid line here\n","media":{"contentType":"text/x.cucumber.gherkin+plain","encoding":"UTF-8"},"uri":"testdata/bad/multiple_parser_errors.feature"}
22
{"data":"(2:1): expected: #EOF, #Language, #TagLine, #FeatureLine, #Comment, #Empty, got 'invalid line here'","source":{"location":{"column":1,"line":2},"uri":"testdata/bad/multiple_parser_errors.feature"}}
3-
{"data":"(9:1): expected: #EOF, #TableRow, #DocStringSeparator, #StepLine, #TagLine, #ExamplesLine, #ScenarioLine, #Comment, #Empty, got 'another invalid line here'","source":{"location":{"column":1,"line":9},"uri":"testdata/bad/multiple_parser_errors.feature"}}
3+
{"data":"(9:1): expected: #EOF, #TableRow, #DocStringSeparator, #StepLine, #TagLine, #ExamplesLine, #ScenarioLine, #RuleLine, #Comment, #Empty, got 'another invalid line here'","source":{"location":{"column":1,"line":9},"uri":"testdata/bad/multiple_parser_errors.feature"}}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"feature":{"children":[{"scenario":{"keyword":"Scenario","location":{"column":3,"line":3},"name":"minimalistic","steps":[{"dataTable":{"rows":[{"cells":[{"location":{"column":9,"line":5},"value":"foo"},{"location":{"column":15,"line":5},"value":"bar"}],"location":{"column":7,"line":5}},{"cells":[{"location":{"column":9,"line":6},"value":"boz"},{"location":{"column":15,"line":6},"value":"boo"}],"location":{"column":7,"line":6}}]},"keyword":"Given ","location":{"column":5,"line":4},"text":"a simple data table"},{"dataTable":{"rows":[{"cells":[{"location":{"column":9,"line":8},"value":"foo"}],"location":{"column":7,"line":8}}]},"keyword":"And ","location":{"column":5,"line":7},"text":"a data table with a single cell"},{"dataTable":{"rows":[{"cells":[{"location":{"column":11,"line":10},"value":"foo"},{"location":{"column":15,"line":10},"value":"bar"},{"location":{"column":23,"line":10},"value":"boz"}],"location":{"column":7,"line":10}}]},"keyword":"And ","location":{"column":5,"line":9},"text":"a data table with different fromatting"},{"dataTable":{"rows":[{"cells":[{"location":{"column":8,"line":12},"value":"foo"},{"location":{"column":12,"line":12}},{"location":{"column":13,"line":12},"value":"boz"}],"location":{"column":7,"line":12}}]},"keyword":"And ","location":{"column":5,"line":11},"text":"a data table with an empty cell"},{"dataTable":{"rows":[{"cells":[{"location":{"column":9,"line":14},"value":"foo"},{"location":{"column":15,"line":14},"value":"bar"}],"location":{"column":7,"line":14}},{"cells":[{"location":{"column":9,"line":16},"value":"boz"},{"location":{"column":16,"line":16},"value":"boo"}],"location":{"column":7,"line":16}},{"cells":[{"location":{"column":9,"line":18},"value":"boz2"},{"location":{"column":16,"line":18},"value":"boo2"}],"location":{"column":7,"line":18}}]},"keyword":"And ","location":{"column":5,"line":13},"text":"a data table with comments and newlines inside"}]}}],"keyword":"Feature","language":"en","location":{"column":1,"line":1},"name":"DataTables"}}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"language":"en","locations":[{"column":3,"line":3}],"name":"minimalistic","steps":[{"dataTable":{"rows":[{"cells":[{"location":{"column":9,"line":5},"value":"foo"},{"location":{"column":15,"line":5},"value":"bar"}]},{"cells":[{"location":{"column":9,"line":6},"value":"boz"},{"location":{"column":15,"line":6},"value":"boo"}]}]},"locations":[{"column":5,"line":4}],"text":"a simple data table"},{"dataTable":{"rows":[{"cells":[{"location":{"column":9,"line":8},"value":"foo"}]}]},"locations":[{"column":5,"line":7}],"text":"a data table with a single cell"},{"dataTable":{"rows":[{"cells":[{"location":{"column":11,"line":10},"value":"foo"},{"location":{"column":15,"line":10},"value":"bar"},{"location":{"column":23,"line":10},"value":"boz"}]}]},"locations":[{"column":5,"line":9}],"text":"a data table with different fromatting"},{"dataTable":{"rows":[{"cells":[{"location":{"column":8,"line":12},"value":"foo"},{"location":{"column":12,"line":12}},{"location":{"column":13,"line":12},"value":"boz"}]}]},"locations":[{"column":5,"line":11}],"text":"a data table with an empty cell"},{"dataTable":{"rows":[{"cells":[{"location":{"column":9,"line":14},"value":"foo"},{"location":{"column":15,"line":14},"value":"bar"}]},{"cells":[{"location":{"column":9,"line":16},"value":"boz"},{"location":{"column":16,"line":16},"value":"boo"}]},{"cells":[{"location":{"column":9,"line":18},"value":"boz2"},{"location":{"column":16,"line":18},"value":"boo2"}]}]},"locations":[{"column":5,"line":13}],"text":"a data table with comments and newlines inside"}],"uri":"testdata/good/datatables.feature"}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"feature":{"children":[{"scenario":{"keyword":"Scenario","location":{"column":3,"line":5},"name":"They are the future","steps":[{"dataTable":{"rows":[{"cells":[{"location":{"column":9,"line":7},"value":"æ"},{"location":{"column":13,"line":7},"value":"o"}],"location":{"column":7,"line":7}},{"cells":[{"location":{"column":9,"line":8},"value":"a"},{"location":{"column":13,"line":8},"value":"ø"}],"location":{"column":7,"line":8}}]},"keyword":"Given ","location":{"column":5,"line":6},"text":"they have arrived"},{"dataTable":{"rows":[{"cells":[{"location":{"column":9,"line":10},"value":"|æ\\n"},{"location":{"column":22,"line":10},"value":"\\o\no\\"}],"location":{"column":7,"line":10}},{"cells":[{"location":{"column":9,"line":11},"value":"\\|a\\\\n"},{"location":{"column":22,"line":11},"value":"ø\\\nø\\"}],"location":{"column":7,"line":11}}]},"keyword":"Given ","location":{"column":5,"line":9},"text":"they have arrived"}]}}],"description":" The \\-character will be considered as an escape in table cell\n iff it is followed by a |-character, a \\-character or an n.","keyword":"Feature","language":"en","location":{"column":1,"line":1},"name":"Escaped pipes"}}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"language":"en","locations":[{"column":3,"line":5}],"name":"They are the future","steps":[{"dataTable":{"rows":[{"cells":[{"location":{"column":9,"line":7},"value":"æ"},{"location":{"column":13,"line":7},"value":"o"}]},{"cells":[{"location":{"column":9,"line":8},"value":"a"},{"location":{"column":13,"line":8},"value":"ø"}]}]},"locations":[{"column":5,"line":6}],"text":"they have arrived"},{"dataTable":{"rows":[{"cells":[{"location":{"column":9,"line":10},"value":"|æ\\n"},{"location":{"column":22,"line":10},"value":"\\o\no\\"}]},{"cells":[{"location":{"column":9,"line":11},"value":"\\|a\\\\n"},{"location":{"column":22,"line":11},"value":"ø\\\nø\\"}]}]},"locations":[{"column":5,"line":9}],"text":"they have arrived"}],"uri":"testdata/good/escaped_pipes.feature"}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"feature":{"children":[{"scenario":{"examples":[{"keyword":"Examples","location":{"column":5,"line":11},"tableBody":[{"cells":[{"location":{"column":9,"line":13},"value":"un"},{"location":{"column":15,"line":13},"value":"deux"},{"location":{"column":22,"line":13},"value":"trois"},{"location":{"column":30,"line":13},"value":"quatre"},{"location":{"column":39,"line":13},"value":"cinq"}],"location":{"column":7,"line":13}},{"cells":[{"location":{"column":9,"line":14},"value":"uno"},{"location":{"column":15,"line":14},"value":"dos"},{"location":{"column":22,"line":14},"value":"tres"},{"location":{"column":30,"line":14},"value":"quatro"},{"location":{"column":39,"line":14},"value":"cinco"}],"location":{"column":7,"line":14}}],"tableHeader":{"cells":[{"location":{"column":9,"line":12},"value":"one"},{"location":{"column":15,"line":12},"value":"two"},{"location":{"column":22,"line":12},"value":"three"},{"location":{"column":30,"line":12},"value":"four"},{"location":{"column":39,"line":12},"value":"five"}],"location":{"column":7,"line":12}}}],"keyword":"Scenario Outline","location":{"column":3,"line":3},"name":"the <one>","steps":[{"docString":{"content":"<three>","location":{"column":7,"line":5}},"keyword":"Given ","location":{"column":5,"line":4},"text":"the <two>:"},{"dataTable":{"rows":[{"cells":[{"location":{"column":9,"line":9},"value":"<five>"}],"location":{"column":7,"line":9}}]},"keyword":"Given ","location":{"column":5,"line":8},"text":"the <four>:"}]}}],"keyword":"Feature","language":"en","location":{"column":1,"line":1},"name":"Example tokens everywhere"}}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
{"language":"en","locations":[{"column":7,"line":13},{"column":3,"line":3}],"name":"the un","steps":[{"docString":{"content":"trois","location":{"column":7,"line":5}},"locations":[{"column":7,"line":13},{"column":11,"line":4}],"text":"the deux:"},{"dataTable":{"rows":[{"cells":[{"location":{"column":9,"line":9},"value":"cinq"}]}]},"locations":[{"column":7,"line":13},{"column":11,"line":8}],"text":"the quatre:"}],"uri":"testdata/good/example_tokens_everywhere.feature"}
2+
{"language":"en","locations":[{"column":7,"line":14},{"column":3,"line":3}],"name":"the uno","steps":[{"docString":{"content":"tres","location":{"column":7,"line":5}},"locations":[{"column":7,"line":14},{"column":11,"line":4}],"text":"the dos:"},{"dataTable":{"rows":[{"cells":[{"location":{"column":9,"line":9},"value":"cinco"}]}]},"locations":[{"column":7,"line":14},{"column":11,"line":8}],"text":"the quatro:"}],"uri":"testdata/good/example_tokens_everywhere.feature"}

0 commit comments

Comments
 (0)