kosmas58-cucumber 0.1.99.21 → 0.1.99.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (290) hide show
  1. metadata +17 -300
  2. data/History.txt +0 -513
  3. data/License.txt +0 -20
  4. data/Manifest.txt +0 -0
  5. data/README.txt +0 -4
  6. data/Rakefile +0 -9
  7. data/bin/cucumber +0 -6
  8. data/config/hoe.rb +0 -75
  9. data/config/requirements.rb +0 -15
  10. data/cucumber.yml +0 -3
  11. data/examples/cs/README.textile +0 -1
  12. data/examples/cs/Rakefile +0 -12
  13. data/examples/cs/compile.bat +0 -1
  14. data/examples/cs/features/addition.feature +0 -16
  15. data/examples/cs/features/step_definitons/calculator_steps.rb +0 -19
  16. data/examples/cs/src/demo/Calculator.cs +0 -20
  17. data/examples/dos_line_endings/Rakefile +0 -6
  18. data/examples/dos_line_endings/features/dos_line_endings.feature +0 -9
  19. data/examples/i18n/README.textile +0 -18
  20. data/examples/i18n/Rakefile +0 -32
  21. data/examples/i18n/ar/Rakefile +0 -6
  22. data/examples/i18n/ar/features/addition.feature +0 -17
  23. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +0 -28
  24. data/examples/i18n/ar/lib/calculator.rb +0 -10
  25. data/examples/i18n/da/Rakefile +0 -6
  26. data/examples/i18n/da/features/step_definitons/kalkulator_steps.rb +0 -24
  27. data/examples/i18n/da/features/summering.feature +0 -17
  28. data/examples/i18n/da/lib/kalkulator.rb +0 -11
  29. data/examples/i18n/de/Rakefile +0 -6
  30. data/examples/i18n/de/features/addition.feature +0 -16
  31. data/examples/i18n/de/features/division.feature +0 -9
  32. data/examples/i18n/de/features/step_definitons/calculator_steps.rb +0 -24
  33. data/examples/i18n/de/lib/calculator.rb +0 -14
  34. data/examples/i18n/en/Rakefile +0 -6
  35. data/examples/i18n/en/features/addition.feature +0 -16
  36. data/examples/i18n/en/features/division.feature +0 -9
  37. data/examples/i18n/en/features/step_definitons/calculator_steps.rb +0 -24
  38. data/examples/i18n/en/lib/calculator.rb +0 -14
  39. data/examples/i18n/es/Rakefile +0 -6
  40. data/examples/i18n/es/features/adicion.feature +0 -16
  41. data/examples/i18n/es/features/step_definitons/calculador_steps.rb +0 -21
  42. data/examples/i18n/es/lib/calculador.rb +0 -14
  43. data/examples/i18n/et/Rakefile +0 -6
  44. data/examples/i18n/et/features/liitmine.feature +0 -17
  45. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +0 -24
  46. data/examples/i18n/et/lib/kalkulaator.rb +0 -10
  47. data/examples/i18n/fi/Rakefile +0 -6
  48. data/examples/i18n/fi/features/jakolasku.feature +0 -9
  49. data/examples/i18n/fi/features/step_definitons/laskin_steps.rb +0 -24
  50. data/examples/i18n/fi/features/yhteenlasku.feature +0 -16
  51. data/examples/i18n/fi/lib/laskin.rb +0 -14
  52. data/examples/i18n/fr/Rakefile +0 -6
  53. data/examples/i18n/fr/features/addition.feature +0 -15
  54. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +0 -27
  55. data/examples/i18n/fr/lib/calculatrice.rb +0 -10
  56. data/examples/i18n/id/Rakefile +0 -6
  57. data/examples/i18n/id/features/addition.feature +0 -16
  58. data/examples/i18n/id/features/division.feature +0 -9
  59. data/examples/i18n/id/features/step_definitons/calculator_steps.rb +0 -24
  60. data/examples/i18n/id/lib/calculator.rb +0 -14
  61. data/examples/i18n/it/Rakefile +0 -6
  62. data/examples/i18n/it/features/somma.feature +0 -10
  63. data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +0 -24
  64. data/examples/i18n/it/lib/calcolatrice.rb +0 -11
  65. data/examples/i18n/ja/README.txt +0 -5
  66. data/examples/i18n/ja/Rakefile +0 -6
  67. data/examples/i18n/ja/features/addition.feature +0 -16
  68. data/examples/i18n/ja/features/division.feature +0 -9
  69. data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +0 -24
  70. data/examples/i18n/ja/lib/calculator.rb +0 -14
  71. data/examples/i18n/ko/Rakefile +0 -6
  72. data/examples/i18n/ko/features/addition.feature +0 -16
  73. data/examples/i18n/ko/features/division.feature +0 -10
  74. data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +0 -24
  75. data/examples/i18n/ko/lib/calculator.rb +0 -14
  76. data/examples/i18n/lt/Rakefile +0 -6
  77. data/examples/i18n/lt/features/addition.feature +0 -17
  78. data/examples/i18n/lt/features/division.feature +0 -9
  79. data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +0 -24
  80. data/examples/i18n/lt/lib/calculator.rb +0 -14
  81. data/examples/i18n/no/Rakefile +0 -6
  82. data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +0 -24
  83. data/examples/i18n/no/features/summering.feature +0 -18
  84. data/examples/i18n/no/lib/kalkulator.rb +0 -11
  85. data/examples/i18n/pt/Rakefile +0 -6
  86. data/examples/i18n/pt/features/adicao.feature +0 -10
  87. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +0 -24
  88. data/examples/i18n/pt/lib/calculadora.rb +0 -10
  89. data/examples/i18n/ro/Rakefile +0 -6
  90. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +0 -24
  91. data/examples/i18n/ro/features/suma.feature +0 -10
  92. data/examples/i18n/ro/lib/calculator.rb +0 -11
  93. data/examples/i18n/se/Rakefile +0 -6
  94. data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +0 -24
  95. data/examples/i18n/se/features/summering.feature +0 -17
  96. data/examples/i18n/se/lib/kalkulator.rb +0 -11
  97. data/examples/i18n/zh-CN/Rakefile +0 -6
  98. data/examples/i18n/zh-CN/features/addition.feature +0 -17
  99. data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +0 -26
  100. data/examples/i18n/zh-CN/lib/calculator.rb +0 -10
  101. data/examples/java/README.textile +0 -22
  102. data/examples/java/Rakefile +0 -12
  103. data/examples/java/features/hello.feature +0 -11
  104. data/examples/java/features/step_definitons/hello_steps.rb +0 -25
  105. data/examples/java/features/step_definitons/tree_steps.rb +0 -14
  106. data/examples/java/features/tree.feature +0 -9
  107. data/examples/java/src/cucumber/demo/Hello.java +0 -16
  108. data/examples/jbehave/README.textile +0 -17
  109. data/examples/jbehave/features/support/env.rb +0 -7
  110. data/examples/jbehave/features/trading.feature +0 -24
  111. data/examples/jbehave/pom.xml +0 -48
  112. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/converters/TraderConverter.java +0 -32
  113. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/model/Stock.java +0 -42
  114. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/model/Trader.java +0 -29
  115. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/persistence/TraderPersister.java +0 -22
  116. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/scenarios/TraderSteps.java +0 -65
  117. data/examples/selenium/Rakefile +0 -6
  118. data/examples/selenium/features/search.feature +0 -9
  119. data/examples/selenium/features/step_definitons/stories_steps.rb +0 -40
  120. data/examples/self_test/README.textile +0 -6
  121. data/examples/self_test/Rakefile +0 -6
  122. data/examples/self_test/features/background/failing_background.feature +0 -10
  123. data/examples/self_test/features/background/failing_background_after_success.feature +0 -11
  124. data/examples/self_test/features/background/multiline_args_background.feature +0 -32
  125. data/examples/self_test/features/background/passing_background.feature +0 -10
  126. data/examples/self_test/features/background/pending_background.feature +0 -10
  127. data/examples/self_test/features/background/scenario_outline_failing_background.feature +0 -16
  128. data/examples/self_test/features/background/scenario_outline_passing_background.feature +0 -16
  129. data/examples/self_test/features/call_undefined_step_from_step_def.feature +0 -7
  130. data/examples/self_test/features/lots_of_undefined.feature +0 -8
  131. data/examples/self_test/features/outline_sample.feature +0 -15
  132. data/examples/self_test/features/sample.feature +0 -19
  133. data/examples/self_test/features/step_definitions/sample_steps.rb +0 -62
  134. data/examples/self_test/features/support/env.rb +0 -1
  135. data/examples/self_test/features/support/tag_count_formatter.rb +0 -25
  136. data/examples/test_unit/Rakefile +0 -6
  137. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +0 -26
  138. data/examples/test_unit/features/test_unit.feature +0 -9
  139. data/examples/tickets/Rakefile +0 -11
  140. data/examples/tickets/cucumber.yml +0 -2
  141. data/examples/tickets/features/172.feature +0 -28
  142. data/examples/tickets/features/177/1.feature +0 -29
  143. data/examples/tickets/features/177/2.feature +0 -21
  144. data/examples/tickets/features/177/3.feature +0 -18
  145. data/examples/tickets/features/180.feature +0 -7
  146. data/examples/tickets/features/lib/eatting_machine.rb +0 -18
  147. data/examples/tickets/features/lib/pantry.rb +0 -20
  148. data/examples/tickets/features/scenario_outline.feature +0 -95
  149. data/examples/tickets/features/step_definitons/scenario_outline_steps.rb +0 -42
  150. data/examples/tickets/features/step_definitons/tickets_steps.rb +0 -60
  151. data/examples/tickets/features/tickets.feature +0 -28
  152. data/examples/watir/README.textile +0 -16
  153. data/examples/watir/Rakefile +0 -6
  154. data/examples/watir/features/search.feature +0 -9
  155. data/examples/watir/features/step_definitons/search_steps.rb +0 -24
  156. data/examples/watir/features/support/env.rb +0 -32
  157. data/features/background.feature +0 -223
  158. data/features/cucumber_cli.feature +0 -343
  159. data/features/cucumber_cli_outlines.feature +0 -90
  160. data/features/custom_formatter.feature +0 -11
  161. data/features/report_called_undefined_steps.feature +0 -32
  162. data/features/step_definitions/cucumber_steps.rb +0 -31
  163. data/features/step_definitions/extra_steps.rb +0 -2
  164. data/features/support/env.rb +0 -8
  165. data/gem_tasks/deployment.rake +0 -11
  166. data/gem_tasks/environment.rake +0 -7
  167. data/gem_tasks/features.rake +0 -9
  168. data/gem_tasks/fix_cr_lf.rake +0 -10
  169. data/gem_tasks/flog.rake +0 -4
  170. data/gem_tasks/gemspec.rake +0 -10
  171. data/gem_tasks/jar.rake +0 -67
  172. data/gem_tasks/rspec.rake +0 -38
  173. data/gem_tasks/yard.rake +0 -8
  174. data/lib/autotest/cucumber.rb +0 -6
  175. data/lib/autotest/cucumber_mixin.rb +0 -124
  176. data/lib/autotest/cucumber_rails.rb +0 -6
  177. data/lib/autotest/cucumber_rails_rspec.rb +0 -6
  178. data/lib/autotest/cucumber_rspec.rb +0 -6
  179. data/lib/autotest/discover.rb +0 -9
  180. data/lib/cucumber/ast/background.rb +0 -88
  181. data/lib/cucumber/ast/comment.rb +0 -26
  182. data/lib/cucumber/ast/examples.rb +0 -26
  183. data/lib/cucumber/ast/feature.rb +0 -66
  184. data/lib/cucumber/ast/features.rb +0 -39
  185. data/lib/cucumber/ast/filter.rb +0 -22
  186. data/lib/cucumber/ast/outline_table.rb +0 -49
  187. data/lib/cucumber/ast/py_string.rb +0 -52
  188. data/lib/cucumber/ast/scenario.rb +0 -103
  189. data/lib/cucumber/ast/scenario_outline.rb +0 -92
  190. data/lib/cucumber/ast/step.rb +0 -161
  191. data/lib/cucumber/ast/steps.rb +0 -13
  192. data/lib/cucumber/ast/table.rb +0 -218
  193. data/lib/cucumber/ast/tags.rb +0 -40
  194. data/lib/cucumber/ast/visitor.rb +0 -109
  195. data/lib/cucumber/ast.rb +0 -29
  196. data/lib/cucumber/broadcaster.rb +0 -15
  197. data/lib/cucumber/cli/configuration.rb +0 -339
  198. data/lib/cucumber/cli/language_help_formatter.rb +0 -59
  199. data/lib/cucumber/cli/main.rb +0 -100
  200. data/lib/cucumber/core_ext/exception.rb +0 -53
  201. data/lib/cucumber/core_ext/instance_exec.rb +0 -54
  202. data/lib/cucumber/core_ext/proc.rb +0 -33
  203. data/lib/cucumber/core_ext/string.rb +0 -48
  204. data/lib/cucumber/formatter/ansicolor.rb +0 -103
  205. data/lib/cucumber/formatter/color_io.rb +0 -17
  206. data/lib/cucumber/formatter/console.rb +0 -119
  207. data/lib/cucumber/formatter/cucumber.css +0 -55
  208. data/lib/cucumber/formatter/cucumber.sass +0 -49
  209. data/lib/cucumber/formatter/html.rb +0 -121
  210. data/lib/cucumber/formatter/pretty.rb +0 -167
  211. data/lib/cucumber/formatter/profile.rb +0 -77
  212. data/lib/cucumber/formatter/progress.rb +0 -68
  213. data/lib/cucumber/formatter/rerun.rb +0 -35
  214. data/lib/cucumber/formatter/unicode.rb +0 -35
  215. data/lib/cucumber/formatter.rb +0 -1
  216. data/lib/cucumber/formatters/unicode.rb +0 -2
  217. data/lib/cucumber/jbehave.rb +0 -102
  218. data/lib/cucumber/languages.yml +0 -339
  219. data/lib/cucumber/parser/basic.rb +0 -0
  220. data/lib/cucumber/parser/feature.rb +0 -1490
  221. data/lib/cucumber/parser/feature.tt +0 -188
  222. data/lib/cucumber/parser/i18n.tt +0 -31
  223. data/lib/cucumber/parser/table.rb +0 -402
  224. data/lib/cucumber/parser/table.tt +0 -59
  225. data/lib/cucumber/parser/treetop_ext.rb +0 -75
  226. data/lib/cucumber/parser.rb +0 -43
  227. data/lib/cucumber/platform.rb +0 -18
  228. data/lib/cucumber/rails/rspec.rb +0 -8
  229. data/lib/cucumber/rails/world.rb +0 -73
  230. data/lib/cucumber/rake/task.rb +0 -111
  231. data/lib/cucumber/step_definition.rb +0 -87
  232. data/lib/cucumber/step_mother.rb +0 -183
  233. data/lib/cucumber/version.rb +0 -10
  234. data/lib/cucumber.rb +0 -71
  235. data/rails_generators/cucumber/USAGE +0 -14
  236. data/rails_generators/cucumber/cucumber_generator.rb +0 -54
  237. data/rails_generators/cucumber/templates/cucumber +0 -8
  238. data/rails_generators/cucumber/templates/cucumber.rake +0 -12
  239. data/rails_generators/cucumber/templates/env.rb +0 -16
  240. data/rails_generators/cucumber/templates/paths.rb +0 -12
  241. data/rails_generators/cucumber/templates/webrat_steps.rb +0 -99
  242. data/rails_generators/feature/USAGE +0 -15
  243. data/rails_generators/feature/feature_generator.rb +0 -60
  244. data/rails_generators/feature/templates/feature.erb +0 -31
  245. data/rails_generators/feature/templates/steps.erb +0 -24
  246. data/spec/cucumber/ast/background_spec.rb +0 -58
  247. data/spec/cucumber/ast/feature_factory.rb +0 -54
  248. data/spec/cucumber/ast/feature_spec.rb +0 -60
  249. data/spec/cucumber/ast/py_string_spec.rb +0 -40
  250. data/spec/cucumber/ast/scenario_outline_spec.rb +0 -64
  251. data/spec/cucumber/ast/scenario_spec.rb +0 -82
  252. data/spec/cucumber/ast/step_spec.rb +0 -45
  253. data/spec/cucumber/ast/table_spec.rb +0 -81
  254. data/spec/cucumber/ast/tags_spec.rb +0 -23
  255. data/spec/cucumber/broadcaster_spec.rb +0 -14
  256. data/spec/cucumber/cli/configuration_spec.rb +0 -239
  257. data/spec/cucumber/cli/main_spec.rb +0 -164
  258. data/spec/cucumber/core_ext/proc_spec.rb +0 -37
  259. data/spec/cucumber/core_ext/string_spec.rb +0 -42
  260. data/spec/cucumber/formatter/ansicolor_spec.rb +0 -35
  261. data/spec/cucumber/formatter/html/cucumber.css +0 -37
  262. data/spec/cucumber/formatter/html/cucumber.js +0 -13
  263. data/spec/cucumber/formatter/html/index.html +0 -45
  264. data/spec/cucumber/formatter/html/jquery-1.3.min.js +0 -19
  265. data/spec/cucumber/formatter/html/jquery.uitableedit.js +0 -100
  266. data/spec/cucumber/formatters/profile_formatter_spec.rb +0 -198
  267. data/spec/cucumber/parser/feature_parser_spec.rb +0 -281
  268. data/spec/cucumber/parser/table_parser_spec.rb +0 -48
  269. data/spec/cucumber/rails/stubs/mini_rails.rb +0 -18
  270. data/spec/cucumber/rails/stubs/test_help.rb +0 -1
  271. data/spec/cucumber/rails/world_spec.rb +0 -11
  272. data/spec/cucumber/sell_cucumbers.feature +0 -19
  273. data/spec/cucumber/step_definition_spec.rb +0 -62
  274. data/spec/cucumber/step_mother_spec.rb +0 -73
  275. data/spec/cucumber/treetop_parser/empty_feature.feature +0 -4
  276. data/spec/cucumber/treetop_parser/empty_scenario.feature +0 -9
  277. data/spec/cucumber/treetop_parser/empty_scenario_outline.feature +0 -3
  278. data/spec/cucumber/treetop_parser/fit_scenario.feature +0 -8
  279. data/spec/cucumber/treetop_parser/given_scenario.feature +0 -9
  280. data/spec/cucumber/treetop_parser/invalid_scenario_outlines.feature +0 -7
  281. data/spec/cucumber/treetop_parser/multiline_steps.feature +0 -17
  282. data/spec/cucumber/treetop_parser/multiple_tables.feature +0 -27
  283. data/spec/cucumber/treetop_parser/scenario_outline.feature +0 -16
  284. data/spec/cucumber/treetop_parser/spaces.feature +0 -12
  285. data/spec/cucumber/treetop_parser/test_dos.feature +0 -25
  286. data/spec/cucumber/treetop_parser/with_comments.feature +0 -10
  287. data/spec/cucumber/treetop_parser/with_tags.feature +0 -18
  288. data/spec/cucumber/world/pending_spec.rb +0 -47
  289. data/spec/spec.opts +0 -3
  290. data/spec/spec_helper.rb +0 -21
@@ -1,1490 +0,0 @@
1
- module Cucumber
2
- module Parser
3
- # TIP: When you hack on the grammar, just delete feature.rb in this directory.
4
- # Also make sure you have uninstalled all cucumber gems (don't forget xxx-cucumber
5
- # github gems).
6
- #
7
- # Treetop will then generate the parser in-memory. When you're happy, just generate
8
- # the rb file with tt feature.tt
9
- module Feature
10
- include Treetop::Runtime
11
-
12
- def root
13
- @root || :feature
14
- end
15
-
16
- include I18n
17
-
18
- include Table
19
-
20
- module Feature0
21
- end
22
-
23
- module Feature1
24
- def white
25
- elements[0]
26
- end
27
-
28
- def comment
29
- elements[1]
30
- end
31
-
32
- def white
33
- elements[2]
34
- end
35
-
36
- def tags
37
- elements[3]
38
- end
39
-
40
- def white
41
- elements[4]
42
- end
43
-
44
- def header
45
- elements[5]
46
- end
47
-
48
- def background
49
- elements[6]
50
- end
51
-
52
- def feature_elements
53
- elements[7]
54
- end
55
-
56
- end
57
-
58
- module Feature2
59
- def build
60
- if background.respond_to?(:build)
61
- Ast::Feature.new(comment.build, tags.build, header.text_value, feature_elements.build, background.build)
62
- else
63
- Ast::Feature.new(comment.build, tags.build, header.text_value, feature_elements.build)
64
- end
65
- end
66
- end
67
-
68
- def _nt_feature
69
- start_index = index
70
- if node_cache[:feature].has_key?(index)
71
- cached = node_cache[:feature][index]
72
- @index = cached.interval.end if cached
73
- return cached
74
- end
75
-
76
- i0, s0 = index, []
77
- r1 = _nt_white
78
- s0 << r1
79
- if r1
80
- r2 = _nt_comment
81
- s0 << r2
82
- if r2
83
- r3 = _nt_white
84
- s0 << r3
85
- if r3
86
- r4 = _nt_tags
87
- s0 << r4
88
- if r4
89
- r5 = _nt_white
90
- s0 << r5
91
- if r5
92
- s6, i6 = [], index
93
- loop do
94
- i7, s7 = index, []
95
- i8 = index
96
- i9 = index
97
- r10 = _nt_scenario_outline
98
- if r10
99
- r9 = r10
100
- else
101
- r11 = _nt_scenario
102
- if r11
103
- r9 = r11
104
- else
105
- r12 = _nt_background
106
- if r12
107
- r9 = r12
108
- else
109
- self.index = i9
110
- r9 = nil
111
- end
112
- end
113
- end
114
- if r9
115
- r8 = nil
116
- else
117
- self.index = i8
118
- r8 = SyntaxNode.new(input, index...index)
119
- end
120
- s7 << r8
121
- if r8
122
- if index < input_length
123
- r13 = (SyntaxNode).new(input, index...(index + 1))
124
- @index += 1
125
- else
126
- terminal_parse_failure("any character")
127
- r13 = nil
128
- end
129
- s7 << r13
130
- end
131
- if s7.last
132
- r7 = (SyntaxNode).new(input, i7...index, s7)
133
- r7.extend(Feature0)
134
- else
135
- self.index = i7
136
- r7 = nil
137
- end
138
- if r7
139
- s6 << r7
140
- else
141
- break
142
- end
143
- end
144
- r6 = SyntaxNode.new(input, i6...index, s6)
145
- s0 << r6
146
- if r6
147
- r15 = _nt_background
148
- if r15
149
- r14 = r15
150
- else
151
- r14 = SyntaxNode.new(input, index...index)
152
- end
153
- s0 << r14
154
- if r14
155
- r16 = _nt_feature_elements
156
- s0 << r16
157
- if r16
158
- r18 = _nt_comment
159
- if r18
160
- r17 = r18
161
- else
162
- r17 = SyntaxNode.new(input, index...index)
163
- end
164
- s0 << r17
165
- end
166
- end
167
- end
168
- end
169
- end
170
- end
171
- end
172
- end
173
- if s0.last
174
- r0 = (SyntaxNode).new(input, i0...index, s0)
175
- r0.extend(Feature1)
176
- r0.extend(Feature2)
177
- else
178
- self.index = i0
179
- r0 = nil
180
- end
181
-
182
- node_cache[:feature][start_index] = r0
183
-
184
- return r0
185
- end
186
-
187
- module Tags0
188
- def tag
189
- elements[0]
190
- end
191
-
192
- end
193
-
194
- module Tags1
195
- def white
196
- elements[0]
197
- end
198
-
199
- def ts
200
- elements[1]
201
- end
202
- end
203
-
204
- module Tags2
205
- def build
206
- tag_names = ts.elements.map{|e| e.tag.tag_name.text_value}
207
- Ast::Tags.new(ts.line, tag_names)
208
- end
209
- end
210
-
211
- def _nt_tags
212
- start_index = index
213
- if node_cache[:tags].has_key?(index)
214
- cached = node_cache[:tags][index]
215
- @index = cached.interval.end if cached
216
- return cached
217
- end
218
-
219
- i0, s0 = index, []
220
- r1 = _nt_white
221
- s0 << r1
222
- if r1
223
- s2, i2 = [], index
224
- loop do
225
- i3, s3 = index, []
226
- r4 = _nt_tag
227
- s3 << r4
228
- if r4
229
- s5, i5 = [], index
230
- loop do
231
- i6 = index
232
- r7 = _nt_space
233
- if r7
234
- r6 = r7
235
- else
236
- r8 = _nt_eol
237
- if r8
238
- r6 = r8
239
- else
240
- self.index = i6
241
- r6 = nil
242
- end
243
- end
244
- if r6
245
- s5 << r6
246
- else
247
- break
248
- end
249
- end
250
- if s5.empty?
251
- self.index = i5
252
- r5 = nil
253
- else
254
- r5 = SyntaxNode.new(input, i5...index, s5)
255
- end
256
- s3 << r5
257
- end
258
- if s3.last
259
- r3 = (SyntaxNode).new(input, i3...index, s3)
260
- r3.extend(Tags0)
261
- else
262
- self.index = i3
263
- r3 = nil
264
- end
265
- if r3
266
- s2 << r3
267
- else
268
- break
269
- end
270
- end
271
- r2 = SyntaxNode.new(input, i2...index, s2)
272
- s0 << r2
273
- end
274
- if s0.last
275
- r0 = (SyntaxNode).new(input, i0...index, s0)
276
- r0.extend(Tags1)
277
- r0.extend(Tags2)
278
- else
279
- self.index = i0
280
- r0 = nil
281
- end
282
-
283
- node_cache[:tags][start_index] = r0
284
-
285
- return r0
286
- end
287
-
288
- module Tag0
289
- def tag_name
290
- elements[1]
291
- end
292
- end
293
-
294
- def _nt_tag
295
- start_index = index
296
- if node_cache[:tag].has_key?(index)
297
- cached = node_cache[:tag][index]
298
- @index = cached.interval.end if cached
299
- return cached
300
- end
301
-
302
- i0, s0 = index, []
303
- if input.index('@', index) == index
304
- r1 = (SyntaxNode).new(input, index...(index + 1))
305
- @index += 1
306
- else
307
- terminal_parse_failure('@')
308
- r1 = nil
309
- end
310
- s0 << r1
311
- if r1
312
- s2, i2 = [], index
313
- loop do
314
- if input.index(Regexp.new('[a-z0-9]'), index) == index
315
- r3 = (SyntaxNode).new(input, index...(index + 1))
316
- @index += 1
317
- else
318
- r3 = nil
319
- end
320
- if r3
321
- s2 << r3
322
- else
323
- break
324
- end
325
- end
326
- if s2.empty?
327
- self.index = i2
328
- r2 = nil
329
- else
330
- r2 = SyntaxNode.new(input, i2...index, s2)
331
- end
332
- s0 << r2
333
- end
334
- if s0.last
335
- r0 = (SyntaxNode).new(input, i0...index, s0)
336
- r0.extend(Tag0)
337
- else
338
- self.index = i0
339
- r0 = nil
340
- end
341
-
342
- node_cache[:tag][start_index] = r0
343
-
344
- return r0
345
- end
346
-
347
- module Comment0
348
- def comment_line
349
- elements[0]
350
- end
351
-
352
- def white
353
- elements[1]
354
- end
355
- end
356
-
357
- module Comment1
358
- def build
359
- Ast::Comment.new(text_value)
360
- end
361
- end
362
-
363
- def _nt_comment
364
- start_index = index
365
- if node_cache[:comment].has_key?(index)
366
- cached = node_cache[:comment][index]
367
- @index = cached.interval.end if cached
368
- return cached
369
- end
370
-
371
- s0, i0 = [], index
372
- loop do
373
- i1, s1 = index, []
374
- r2 = _nt_comment_line
375
- s1 << r2
376
- if r2
377
- r3 = _nt_white
378
- s1 << r3
379
- end
380
- if s1.last
381
- r1 = (SyntaxNode).new(input, i1...index, s1)
382
- r1.extend(Comment0)
383
- else
384
- self.index = i1
385
- r1 = nil
386
- end
387
- if r1
388
- s0 << r1
389
- else
390
- break
391
- end
392
- end
393
- r0 = SyntaxNode.new(input, i0...index, s0)
394
- r0.extend(Comment1)
395
-
396
- node_cache[:comment][start_index] = r0
397
-
398
- return r0
399
- end
400
-
401
- module CommentLine0
402
- def line_to_eol
403
- elements[1]
404
- end
405
- end
406
-
407
- def _nt_comment_line
408
- start_index = index
409
- if node_cache[:comment_line].has_key?(index)
410
- cached = node_cache[:comment_line][index]
411
- @index = cached.interval.end if cached
412
- return cached
413
- end
414
-
415
- i0, s0 = index, []
416
- if input.index('#', index) == index
417
- r1 = (SyntaxNode).new(input, index...(index + 1))
418
- @index += 1
419
- else
420
- terminal_parse_failure('#')
421
- r1 = nil
422
- end
423
- s0 << r1
424
- if r1
425
- r2 = _nt_line_to_eol
426
- s0 << r2
427
- end
428
- if s0.last
429
- r0 = (SyntaxNode).new(input, i0...index, s0)
430
- r0.extend(CommentLine0)
431
- else
432
- self.index = i0
433
- r0 = nil
434
- end
435
-
436
- node_cache[:comment_line][start_index] = r0
437
-
438
- return r0
439
- end
440
-
441
- module Background0
442
- def comment
443
- elements[0]
444
- end
445
-
446
- def white
447
- elements[1]
448
- end
449
-
450
- def background_keyword
451
- elements[2]
452
- end
453
-
454
- def steps
455
- elements[5]
456
- end
457
- end
458
-
459
- module Background1
460
- def build
461
- Ast::Background.new(
462
- comment.build,
463
- background_keyword.line,
464
- background_keyword.text_value,
465
- steps.build
466
- )
467
- end
468
- end
469
-
470
- def _nt_background
471
- start_index = index
472
- if node_cache[:background].has_key?(index)
473
- cached = node_cache[:background][index]
474
- @index = cached.interval.end if cached
475
- return cached
476
- end
477
-
478
- i0, s0 = index, []
479
- r1 = _nt_comment
480
- s0 << r1
481
- if r1
482
- r2 = _nt_white
483
- s0 << r2
484
- if r2
485
- r3 = _nt_background_keyword
486
- s0 << r3
487
- if r3
488
- s4, i4 = [], index
489
- loop do
490
- r5 = _nt_space
491
- if r5
492
- s4 << r5
493
- else
494
- break
495
- end
496
- end
497
- r4 = SyntaxNode.new(input, i4...index, s4)
498
- s0 << r4
499
- if r4
500
- i6 = index
501
- s7, i7 = [], index
502
- loop do
503
- r8 = _nt_eol
504
- if r8
505
- s7 << r8
506
- else
507
- break
508
- end
509
- end
510
- if s7.empty?
511
- self.index = i7
512
- r7 = nil
513
- else
514
- r7 = SyntaxNode.new(input, i7...index, s7)
515
- end
516
- if r7
517
- r6 = r7
518
- else
519
- r9 = _nt_eof
520
- if r9
521
- r6 = r9
522
- else
523
- self.index = i6
524
- r6 = nil
525
- end
526
- end
527
- s0 << r6
528
- if r6
529
- r10 = _nt_steps
530
- s0 << r10
531
- end
532
- end
533
- end
534
- end
535
- end
536
- if s0.last
537
- r0 = (SyntaxNode).new(input, i0...index, s0)
538
- r0.extend(Background0)
539
- r0.extend(Background1)
540
- else
541
- self.index = i0
542
- r0 = nil
543
- end
544
-
545
- node_cache[:background][start_index] = r0
546
-
547
- return r0
548
- end
549
-
550
- module FeatureElements0
551
- def build
552
- elements.map{|s| s.build}
553
- end
554
- end
555
-
556
- def _nt_feature_elements
557
- start_index = index
558
- if node_cache[:feature_elements].has_key?(index)
559
- cached = node_cache[:feature_elements][index]
560
- @index = cached.interval.end if cached
561
- return cached
562
- end
563
-
564
- s0, i0 = [], index
565
- loop do
566
- i1 = index
567
- r2 = _nt_scenario
568
- if r2
569
- r1 = r2
570
- else
571
- r3 = _nt_scenario_outline
572
- if r3
573
- r1 = r3
574
- else
575
- self.index = i1
576
- r1 = nil
577
- end
578
- end
579
- if r1
580
- s0 << r1
581
- else
582
- break
583
- end
584
- end
585
- r0 = SyntaxNode.new(input, i0...index, s0)
586
- r0.extend(FeatureElements0)
587
-
588
- node_cache[:feature_elements][start_index] = r0
589
-
590
- return r0
591
- end
592
-
593
- module Scenario0
594
- def comment
595
- elements[0]
596
- end
597
-
598
- def tags
599
- elements[1]
600
- end
601
-
602
- def white
603
- elements[2]
604
- end
605
-
606
- def scenario_keyword
607
- elements[3]
608
- end
609
-
610
- def name
611
- elements[5]
612
- end
613
-
614
- def steps
615
- elements[7]
616
- end
617
-
618
- def white
619
- elements[8]
620
- end
621
- end
622
-
623
- module Scenario1
624
- def build
625
- Ast::Scenario.new(
626
- comment.build,
627
- tags.build,
628
- scenario_keyword.line,
629
- scenario_keyword.text_value,
630
- name.text_value,
631
- steps.build
632
- )
633
- end
634
- end
635
-
636
- def _nt_scenario
637
- start_index = index
638
- if node_cache[:scenario].has_key?(index)
639
- cached = node_cache[:scenario][index]
640
- @index = cached.interval.end if cached
641
- return cached
642
- end
643
-
644
- i0, s0 = index, []
645
- r1 = _nt_comment
646
- s0 << r1
647
- if r1
648
- r2 = _nt_tags
649
- s0 << r2
650
- if r2
651
- r3 = _nt_white
652
- s0 << r3
653
- if r3
654
- r4 = _nt_scenario_keyword
655
- s0 << r4
656
- if r4
657
- s5, i5 = [], index
658
- loop do
659
- r6 = _nt_space
660
- if r6
661
- s5 << r6
662
- else
663
- break
664
- end
665
- end
666
- r5 = SyntaxNode.new(input, i5...index, s5)
667
- s0 << r5
668
- if r5
669
- r7 = _nt_line_to_eol
670
- s0 << r7
671
- if r7
672
- i8 = index
673
- r9 = _nt_white
674
- if r9
675
- r8 = r9
676
- else
677
- r10 = _nt_eof
678
- if r10
679
- r8 = r10
680
- else
681
- self.index = i8
682
- r8 = nil
683
- end
684
- end
685
- s0 << r8
686
- if r8
687
- r11 = _nt_steps
688
- s0 << r11
689
- if r11
690
- r12 = _nt_white
691
- s0 << r12
692
- end
693
- end
694
- end
695
- end
696
- end
697
- end
698
- end
699
- end
700
- if s0.last
701
- r0 = (SyntaxNode).new(input, i0...index, s0)
702
- r0.extend(Scenario0)
703
- r0.extend(Scenario1)
704
- else
705
- self.index = i0
706
- r0 = nil
707
- end
708
-
709
- node_cache[:scenario][start_index] = r0
710
-
711
- return r0
712
- end
713
-
714
- module ScenarioOutline0
715
- def comment
716
- elements[0]
717
- end
718
-
719
- def tags
720
- elements[1]
721
- end
722
-
723
- def white
724
- elements[2]
725
- end
726
-
727
- def scenario_outline_keyword
728
- elements[3]
729
- end
730
-
731
- def name
732
- elements[5]
733
- end
734
-
735
- def white
736
- elements[6]
737
- end
738
-
739
- def steps
740
- elements[7]
741
- end
742
-
743
- def examples_sections
744
- elements[8]
745
- end
746
-
747
- def white
748
- elements[9]
749
- end
750
- end
751
-
752
- module ScenarioOutline1
753
- def build
754
- Ast::ScenarioOutline.new(
755
- comment.build,
756
- tags.build,
757
- scenario_outline_keyword.line,
758
- scenario_outline_keyword.text_value,
759
- name.text_value,
760
- steps.build,
761
- examples_sections.build
762
- )
763
- end
764
- end
765
-
766
- def _nt_scenario_outline
767
- start_index = index
768
- if node_cache[:scenario_outline].has_key?(index)
769
- cached = node_cache[:scenario_outline][index]
770
- @index = cached.interval.end if cached
771
- return cached
772
- end
773
-
774
- i0, s0 = index, []
775
- r1 = _nt_comment
776
- s0 << r1
777
- if r1
778
- r2 = _nt_tags
779
- s0 << r2
780
- if r2
781
- r3 = _nt_white
782
- s0 << r3
783
- if r3
784
- r4 = _nt_scenario_outline_keyword
785
- s0 << r4
786
- if r4
787
- s5, i5 = [], index
788
- loop do
789
- r6 = _nt_space
790
- if r6
791
- s5 << r6
792
- else
793
- break
794
- end
795
- end
796
- r5 = SyntaxNode.new(input, i5...index, s5)
797
- s0 << r5
798
- if r5
799
- r7 = _nt_line_to_eol
800
- s0 << r7
801
- if r7
802
- r8 = _nt_white
803
- s0 << r8
804
- if r8
805
- r9 = _nt_steps
806
- s0 << r9
807
- if r9
808
- r10 = _nt_examples_sections
809
- s0 << r10
810
- if r10
811
- r11 = _nt_white
812
- s0 << r11
813
- end
814
- end
815
- end
816
- end
817
- end
818
- end
819
- end
820
- end
821
- end
822
- if s0.last
823
- r0 = (SyntaxNode).new(input, i0...index, s0)
824
- r0.extend(ScenarioOutline0)
825
- r0.extend(ScenarioOutline1)
826
- else
827
- self.index = i0
828
- r0 = nil
829
- end
830
-
831
- node_cache[:scenario_outline][start_index] = r0
832
-
833
- return r0
834
- end
835
-
836
- module Steps0
837
- def build
838
- elements.map{|e| e.build}
839
- end
840
- end
841
-
842
- def _nt_steps
843
- start_index = index
844
- if node_cache[:steps].has_key?(index)
845
- cached = node_cache[:steps][index]
846
- @index = cached.interval.end if cached
847
- return cached
848
- end
849
-
850
- s0, i0 = [], index
851
- loop do
852
- r1 = _nt_step
853
- if r1
854
- s0 << r1
855
- else
856
- break
857
- end
858
- end
859
- r0 = SyntaxNode.new(input, i0...index, s0)
860
- r0.extend(Steps0)
861
-
862
- node_cache[:steps][start_index] = r0
863
-
864
- return r0
865
- end
866
-
867
- module Step0
868
- def comment
869
- elements[0]
870
- end
871
-
872
- def step_keyword
873
- elements[2]
874
- end
875
-
876
- def name
877
- elements[4]
878
- end
879
-
880
- def multi
881
- elements[6]
882
- end
883
-
884
- def white
885
- elements[7]
886
- end
887
- end
888
-
889
- module Step1
890
- def build
891
- if multi.respond_to?(:build)
892
- Ast::Step.new(step_keyword.line, step_keyword.text_value, name.text_value.strip, multi.build)
893
- else
894
- Ast::Step.new(step_keyword.line, step_keyword.text_value, name.text_value.strip)
895
- end
896
- end
897
- end
898
-
899
- def _nt_step
900
- start_index = index
901
- if node_cache[:step].has_key?(index)
902
- cached = node_cache[:step][index]
903
- @index = cached.interval.end if cached
904
- return cached
905
- end
906
-
907
- i0, s0 = index, []
908
- r1 = _nt_comment
909
- s0 << r1
910
- if r1
911
- s2, i2 = [], index
912
- loop do
913
- r3 = _nt_space
914
- if r3
915
- s2 << r3
916
- else
917
- break
918
- end
919
- end
920
- r2 = SyntaxNode.new(input, i2...index, s2)
921
- s0 << r2
922
- if r2
923
- r4 = _nt_step_keyword
924
- s0 << r4
925
- if r4
926
- s5, i5 = [], index
927
- loop do
928
- r6 = _nt_space
929
- if r6
930
- s5 << r6
931
- else
932
- break
933
- end
934
- end
935
- r5 = SyntaxNode.new(input, i5...index, s5)
936
- s0 << r5
937
- if r5
938
- r7 = _nt_line_to_eol
939
- s0 << r7
940
- if r7
941
- i8 = index
942
- s9, i9 = [], index
943
- loop do
944
- r10 = _nt_eol
945
- if r10
946
- s9 << r10
947
- else
948
- break
949
- end
950
- end
951
- if s9.empty?
952
- self.index = i9
953
- r9 = nil
954
- else
955
- r9 = SyntaxNode.new(input, i9...index, s9)
956
- end
957
- if r9
958
- r8 = r9
959
- else
960
- r11 = _nt_eof
961
- if r11
962
- r8 = r11
963
- else
964
- self.index = i8
965
- r8 = nil
966
- end
967
- end
968
- s0 << r8
969
- if r8
970
- r13 = _nt_multiline_arg
971
- if r13
972
- r12 = r13
973
- else
974
- r12 = SyntaxNode.new(input, index...index)
975
- end
976
- s0 << r12
977
- if r12
978
- r14 = _nt_white
979
- s0 << r14
980
- end
981
- end
982
- end
983
- end
984
- end
985
- end
986
- end
987
- if s0.last
988
- r0 = (SyntaxNode).new(input, i0...index, s0)
989
- r0.extend(Step0)
990
- r0.extend(Step1)
991
- else
992
- self.index = i0
993
- r0 = nil
994
- end
995
-
996
- node_cache[:step][start_index] = r0
997
-
998
- return r0
999
- end
1000
-
1001
- module ExamplesSections0
1002
- def build
1003
- elements.map{|e| e.build}
1004
- end
1005
- end
1006
-
1007
- def _nt_examples_sections
1008
- start_index = index
1009
- if node_cache[:examples_sections].has_key?(index)
1010
- cached = node_cache[:examples_sections][index]
1011
- @index = cached.interval.end if cached
1012
- return cached
1013
- end
1014
-
1015
- s0, i0 = [], index
1016
- loop do
1017
- r1 = _nt_examples
1018
- if r1
1019
- s0 << r1
1020
- else
1021
- break
1022
- end
1023
- end
1024
- r0 = SyntaxNode.new(input, i0...index, s0)
1025
- r0.extend(ExamplesSections0)
1026
-
1027
- node_cache[:examples_sections][start_index] = r0
1028
-
1029
- return r0
1030
- end
1031
-
1032
- module Examples0
1033
- def examples_keyword
1034
- elements[1]
1035
- end
1036
-
1037
- def name
1038
- elements[3]
1039
- end
1040
-
1041
- def eol
1042
- elements[4]
1043
- end
1044
-
1045
- def table
1046
- elements[5]
1047
- end
1048
-
1049
- def white
1050
- elements[6]
1051
- end
1052
- end
1053
-
1054
- module Examples1
1055
- def build
1056
- [examples_keyword.line, examples_keyword.text_value, name.text_value, table.raw]
1057
- end
1058
- end
1059
-
1060
- def _nt_examples
1061
- start_index = index
1062
- if node_cache[:examples].has_key?(index)
1063
- cached = node_cache[:examples][index]
1064
- @index = cached.interval.end if cached
1065
- return cached
1066
- end
1067
-
1068
- i0, s0 = index, []
1069
- s1, i1 = [], index
1070
- loop do
1071
- r2 = _nt_space
1072
- if r2
1073
- s1 << r2
1074
- else
1075
- break
1076
- end
1077
- end
1078
- r1 = SyntaxNode.new(input, i1...index, s1)
1079
- s0 << r1
1080
- if r1
1081
- r3 = _nt_examples_keyword
1082
- s0 << r3
1083
- if r3
1084
- s4, i4 = [], index
1085
- loop do
1086
- r5 = _nt_space
1087
- if r5
1088
- s4 << r5
1089
- else
1090
- break
1091
- end
1092
- end
1093
- r4 = SyntaxNode.new(input, i4...index, s4)
1094
- s0 << r4
1095
- if r4
1096
- r7 = _nt_line_to_eol
1097
- if r7
1098
- r6 = r7
1099
- else
1100
- r6 = SyntaxNode.new(input, index...index)
1101
- end
1102
- s0 << r6
1103
- if r6
1104
- r8 = _nt_eol
1105
- s0 << r8
1106
- if r8
1107
- r9 = _nt_table
1108
- s0 << r9
1109
- if r9
1110
- r10 = _nt_white
1111
- s0 << r10
1112
- end
1113
- end
1114
- end
1115
- end
1116
- end
1117
- end
1118
- if s0.last
1119
- r0 = (SyntaxNode).new(input, i0...index, s0)
1120
- r0.extend(Examples0)
1121
- r0.extend(Examples1)
1122
- else
1123
- self.index = i0
1124
- r0 = nil
1125
- end
1126
-
1127
- node_cache[:examples][start_index] = r0
1128
-
1129
- return r0
1130
- end
1131
-
1132
- def _nt_multiline_arg
1133
- start_index = index
1134
- if node_cache[:multiline_arg].has_key?(index)
1135
- cached = node_cache[:multiline_arg][index]
1136
- @index = cached.interval.end if cached
1137
- return cached
1138
- end
1139
-
1140
- i0 = index
1141
- r1 = _nt_table
1142
- if r1
1143
- r0 = r1
1144
- else
1145
- r2 = _nt_py_string
1146
- if r2
1147
- r0 = r2
1148
- else
1149
- self.index = i0
1150
- r0 = nil
1151
- end
1152
- end
1153
-
1154
- node_cache[:multiline_arg][start_index] = r0
1155
-
1156
- return r0
1157
- end
1158
-
1159
- module LineToEol0
1160
- end
1161
-
1162
- def _nt_line_to_eol
1163
- start_index = index
1164
- if node_cache[:line_to_eol].has_key?(index)
1165
- cached = node_cache[:line_to_eol][index]
1166
- @index = cached.interval.end if cached
1167
- return cached
1168
- end
1169
-
1170
- s0, i0 = [], index
1171
- loop do
1172
- i1, s1 = index, []
1173
- i2 = index
1174
- r3 = _nt_eol
1175
- if r3
1176
- r2 = nil
1177
- else
1178
- self.index = i2
1179
- r2 = SyntaxNode.new(input, index...index)
1180
- end
1181
- s1 << r2
1182
- if r2
1183
- if index < input_length
1184
- r4 = (SyntaxNode).new(input, index...(index + 1))
1185
- @index += 1
1186
- else
1187
- terminal_parse_failure("any character")
1188
- r4 = nil
1189
- end
1190
- s1 << r4
1191
- end
1192
- if s1.last
1193
- r1 = (SyntaxNode).new(input, i1...index, s1)
1194
- r1.extend(LineToEol0)
1195
- else
1196
- self.index = i1
1197
- r1 = nil
1198
- end
1199
- if r1
1200
- s0 << r1
1201
- else
1202
- break
1203
- end
1204
- end
1205
- r0 = SyntaxNode.new(input, i0...index, s0)
1206
-
1207
- node_cache[:line_to_eol][start_index] = r0
1208
-
1209
- return r0
1210
- end
1211
-
1212
- module PyString0
1213
- end
1214
-
1215
- module PyString1
1216
- def open_py_string
1217
- elements[0]
1218
- end
1219
-
1220
- def s
1221
- elements[1]
1222
- end
1223
-
1224
- def close_py_string
1225
- elements[2]
1226
- end
1227
- end
1228
-
1229
- module PyString2
1230
- def build
1231
- Ast::PyString.new(open_py_string.line, close_py_string.line, s.text_value, open_py_string.indentation)
1232
- end
1233
- end
1234
-
1235
- def _nt_py_string
1236
- start_index = index
1237
- if node_cache[:py_string].has_key?(index)
1238
- cached = node_cache[:py_string][index]
1239
- @index = cached.interval.end if cached
1240
- return cached
1241
- end
1242
-
1243
- i0, s0 = index, []
1244
- r1 = _nt_open_py_string
1245
- s0 << r1
1246
- if r1
1247
- s2, i2 = [], index
1248
- loop do
1249
- i3, s3 = index, []
1250
- i4 = index
1251
- r5 = _nt_close_py_string
1252
- if r5
1253
- r4 = nil
1254
- else
1255
- self.index = i4
1256
- r4 = SyntaxNode.new(input, index...index)
1257
- end
1258
- s3 << r4
1259
- if r4
1260
- if index < input_length
1261
- r6 = (SyntaxNode).new(input, index...(index + 1))
1262
- @index += 1
1263
- else
1264
- terminal_parse_failure("any character")
1265
- r6 = nil
1266
- end
1267
- s3 << r6
1268
- end
1269
- if s3.last
1270
- r3 = (SyntaxNode).new(input, i3...index, s3)
1271
- r3.extend(PyString0)
1272
- else
1273
- self.index = i3
1274
- r3 = nil
1275
- end
1276
- if r3
1277
- s2 << r3
1278
- else
1279
- break
1280
- end
1281
- end
1282
- r2 = SyntaxNode.new(input, i2...index, s2)
1283
- s0 << r2
1284
- if r2
1285
- r7 = _nt_close_py_string
1286
- s0 << r7
1287
- end
1288
- end
1289
- if s0.last
1290
- r0 = (SyntaxNode).new(input, i0...index, s0)
1291
- r0.extend(PyString1)
1292
- r0.extend(PyString2)
1293
- else
1294
- self.index = i0
1295
- r0 = nil
1296
- end
1297
-
1298
- node_cache[:py_string][start_index] = r0
1299
-
1300
- return r0
1301
- end
1302
-
1303
- module OpenPyString0
1304
- def white
1305
- elements[0]
1306
- end
1307
-
1308
- def eol
1309
- elements[3]
1310
- end
1311
- end
1312
-
1313
- module OpenPyString1
1314
- def indentation
1315
- white.text_value.length
1316
- end
1317
-
1318
- def line
1319
- white.line
1320
- end
1321
- end
1322
-
1323
- def _nt_open_py_string
1324
- start_index = index
1325
- if node_cache[:open_py_string].has_key?(index)
1326
- cached = node_cache[:open_py_string][index]
1327
- @index = cached.interval.end if cached
1328
- return cached
1329
- end
1330
-
1331
- i0, s0 = index, []
1332
- r1 = _nt_white
1333
- s0 << r1
1334
- if r1
1335
- if input.index('"""', index) == index
1336
- r2 = (SyntaxNode).new(input, index...(index + 3))
1337
- @index += 3
1338
- else
1339
- terminal_parse_failure('"""')
1340
- r2 = nil
1341
- end
1342
- s0 << r2
1343
- if r2
1344
- s3, i3 = [], index
1345
- loop do
1346
- r4 = _nt_space
1347
- if r4
1348
- s3 << r4
1349
- else
1350
- break
1351
- end
1352
- end
1353
- r3 = SyntaxNode.new(input, i3...index, s3)
1354
- s0 << r3
1355
- if r3
1356
- r5 = _nt_eol
1357
- s0 << r5
1358
- end
1359
- end
1360
- end
1361
- if s0.last
1362
- r0 = (SyntaxNode).new(input, i0...index, s0)
1363
- r0.extend(OpenPyString0)
1364
- r0.extend(OpenPyString1)
1365
- else
1366
- self.index = i0
1367
- r0 = nil
1368
- end
1369
-
1370
- node_cache[:open_py_string][start_index] = r0
1371
-
1372
- return r0
1373
- end
1374
-
1375
- module ClosePyString0
1376
- def eol
1377
- elements[0]
1378
- end
1379
-
1380
- def quotes
1381
- elements[2]
1382
- end
1383
-
1384
- def white
1385
- elements[3]
1386
- end
1387
- end
1388
-
1389
- module ClosePyString1
1390
- def line
1391
- quotes.line
1392
- end
1393
- end
1394
-
1395
- def _nt_close_py_string
1396
- start_index = index
1397
- if node_cache[:close_py_string].has_key?(index)
1398
- cached = node_cache[:close_py_string][index]
1399
- @index = cached.interval.end if cached
1400
- return cached
1401
- end
1402
-
1403
- i0, s0 = index, []
1404
- r1 = _nt_eol
1405
- s0 << r1
1406
- if r1
1407
- s2, i2 = [], index
1408
- loop do
1409
- r3 = _nt_space
1410
- if r3
1411
- s2 << r3
1412
- else
1413
- break
1414
- end
1415
- end
1416
- r2 = SyntaxNode.new(input, i2...index, s2)
1417
- s0 << r2
1418
- if r2
1419
- if input.index('"""', index) == index
1420
- r4 = (SyntaxNode).new(input, index...(index + 3))
1421
- @index += 3
1422
- else
1423
- terminal_parse_failure('"""')
1424
- r4 = nil
1425
- end
1426
- s0 << r4
1427
- if r4
1428
- r5 = _nt_white
1429
- s0 << r5
1430
- end
1431
- end
1432
- end
1433
- if s0.last
1434
- r0 = (SyntaxNode).new(input, i0...index, s0)
1435
- r0.extend(ClosePyString0)
1436
- r0.extend(ClosePyString1)
1437
- else
1438
- self.index = i0
1439
- r0 = nil
1440
- end
1441
-
1442
- node_cache[:close_py_string][start_index] = r0
1443
-
1444
- return r0
1445
- end
1446
-
1447
- def _nt_white
1448
- start_index = index
1449
- if node_cache[:white].has_key?(index)
1450
- cached = node_cache[:white][index]
1451
- @index = cached.interval.end if cached
1452
- return cached
1453
- end
1454
-
1455
- s0, i0 = [], index
1456
- loop do
1457
- i1 = index
1458
- r2 = _nt_space
1459
- if r2
1460
- r1 = r2
1461
- else
1462
- r3 = _nt_eol
1463
- if r3
1464
- r1 = r3
1465
- else
1466
- self.index = i1
1467
- r1 = nil
1468
- end
1469
- end
1470
- if r1
1471
- s0 << r1
1472
- else
1473
- break
1474
- end
1475
- end
1476
- r0 = SyntaxNode.new(input, i0...index, s0)
1477
-
1478
- node_cache[:white][start_index] = r0
1479
-
1480
- return r0
1481
- end
1482
-
1483
- end
1484
-
1485
- class FeatureParser < Treetop::Runtime::CompiledParser
1486
- include Feature
1487
- end
1488
-
1489
- end
1490
- end