rush-shell 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +94 -0
  4. data/exe/rush +10 -0
  5. data/grammar/shell.y +272 -0
  6. data/grammar/shell.y.output +2354 -0
  7. data/lib/rush/alias_table.rb +48 -0
  8. data/lib/rush/assignments.rb +48 -0
  9. data/lib/rush/ast/and_or.rb +37 -0
  10. data/lib/rush/ast/assignment.rb +20 -0
  11. data/lib/rush/ast/brace_group.rb +25 -0
  12. data/lib/rush/ast/case_node.rb +41 -0
  13. data/lib/rush/ast/condition_loop.rb +34 -0
  14. data/lib/rush/ast/for_node.rb +34 -0
  15. data/lib/rush/ast/function_def.rb +26 -0
  16. data/lib/rush/ast/if_node.rb +29 -0
  17. data/lib/rush/ast/list.rb +47 -0
  18. data/lib/rush/ast/node.rb +17 -0
  19. data/lib/rush/ast/param_ref.rb +59 -0
  20. data/lib/rush/ast/pipeline.rb +45 -0
  21. data/lib/rush/ast/redirect.rb +21 -0
  22. data/lib/rush/ast/redirected.rb +26 -0
  23. data/lib/rush/ast/simple_command.rb +62 -0
  24. data/lib/rush/ast/subshell.rb +24 -0
  25. data/lib/rush/ast/until_node.rb +18 -0
  26. data/lib/rush/ast/while_node.rb +18 -0
  27. data/lib/rush/ast/word.rb +44 -0
  28. data/lib/rush/ast/word_segment.rb +203 -0
  29. data/lib/rush/background_runner.rb +68 -0
  30. data/lib/rush/bracket_expression.rb +107 -0
  31. data/lib/rush/bracket_scanner.rb +64 -0
  32. data/lib/rush/builtins/alias_.rb +74 -0
  33. data/lib/rush/builtins/base.rb +96 -0
  34. data/lib/rush/builtins/break_.rb +19 -0
  35. data/lib/rush/builtins/cd.rb +127 -0
  36. data/lib/rush/builtins/colon.rb +16 -0
  37. data/lib/rush/builtins/command.rb +137 -0
  38. data/lib/rush/builtins/command_options.rb +103 -0
  39. data/lib/rush/builtins/continue_.rb +19 -0
  40. data/lib/rush/builtins/declare.rb +27 -0
  41. data/lib/rush/builtins/defaults.rb +28 -0
  42. data/lib/rush/builtins/dot.rb +52 -0
  43. data/lib/rush/builtins/echo.rb +37 -0
  44. data/lib/rush/builtins/eval.rb +25 -0
  45. data/lib/rush/builtins/exec.rb +54 -0
  46. data/lib/rush/builtins/exit.rb +45 -0
  47. data/lib/rush/builtins/export.rb +20 -0
  48. data/lib/rush/builtins/false_.rb +16 -0
  49. data/lib/rush/builtins/fd_operand.rb +87 -0
  50. data/lib/rush/builtins/getopts.rb +96 -0
  51. data/lib/rush/builtins/hash.rb +64 -0
  52. data/lib/rush/builtins/job_resume.rb +107 -0
  53. data/lib/rush/builtins/jobs.rb +86 -0
  54. data/lib/rush/builtins/kill.rb +152 -0
  55. data/lib/rush/builtins/local.rb +40 -0
  56. data/lib/rush/builtins/loop_jump.rb +45 -0
  57. data/lib/rush/builtins/printf.rb +39 -0
  58. data/lib/rush/builtins/printf_formatter.rb +111 -0
  59. data/lib/rush/builtins/pwd.rb +17 -0
  60. data/lib/rush/builtins/read.rb +93 -0
  61. data/lib/rush/builtins/read_input.rb +146 -0
  62. data/lib/rush/builtins/readonly.rb +20 -0
  63. data/lib/rush/builtins/registry.rb +36 -0
  64. data/lib/rush/builtins/return_.rb +24 -0
  65. data/lib/rush/builtins/set.rb +101 -0
  66. data/lib/rush/builtins/shift.rb +35 -0
  67. data/lib/rush/builtins/test_.rb +48 -0
  68. data/lib/rush/builtins/test_context.rb +24 -0
  69. data/lib/rush/builtins/test_expr.rb +74 -0
  70. data/lib/rush/builtins/test_grammar.rb +117 -0
  71. data/lib/rush/builtins/test_operators.rb +94 -0
  72. data/lib/rush/builtins/test_tokens.rb +69 -0
  73. data/lib/rush/builtins/times.rb +35 -0
  74. data/lib/rush/builtins/trap.rb +85 -0
  75. data/lib/rush/builtins/true_.rb +16 -0
  76. data/lib/rush/builtins/type_.rb +28 -0
  77. data/lib/rush/builtins/ulimit.rb +258 -0
  78. data/lib/rush/builtins/umask.rb +81 -0
  79. data/lib/rush/builtins/unalias.rb +46 -0
  80. data/lib/rush/builtins/unset.rb +40 -0
  81. data/lib/rush/builtins/wait.rb +127 -0
  82. data/lib/rush/cli.rb +31 -0
  83. data/lib/rush/command_assignments.rb +56 -0
  84. data/lib/rush/command_lookup.rb +228 -0
  85. data/lib/rush/command_resolution.rb +115 -0
  86. data/lib/rush/command_runner.rb +152 -0
  87. data/lib/rush/command_text.rb +140 -0
  88. data/lib/rush/environment.rb +134 -0
  89. data/lib/rush/errexit_context.rb +68 -0
  90. data/lib/rush/error_policy.rb +64 -0
  91. data/lib/rush/errors.rb +100 -0
  92. data/lib/rush/escape_table.rb +22 -0
  93. data/lib/rush/escaped_bracket.rb +49 -0
  94. data/lib/rush/executor.rb +164 -0
  95. data/lib/rush/exit_trap.rb +109 -0
  96. data/lib/rush/expansion/arithmetic/evaluator.rb +43 -0
  97. data/lib/rush/expansion/arithmetic/nodes.rb +180 -0
  98. data/lib/rush/expansion/arithmetic/number.rb +104 -0
  99. data/lib/rush/expansion/arithmetic/parser.rb +155 -0
  100. data/lib/rush/expansion/arithmetic/tokenizer.rb +56 -0
  101. data/lib/rush/expansion/arithmetic_expander.rb +38 -0
  102. data/lib/rush/expansion/command_substitution.rb +87 -0
  103. data/lib/rush/expansion/field_part.rb +12 -0
  104. data/lib/rush/expansion/field_splitter.rb +23 -0
  105. data/lib/rush/expansion/glob_expander.rb +48 -0
  106. data/lib/rush/expansion/ifs.rb +62 -0
  107. data/lib/rush/expansion/ifs_scanner.rb +168 -0
  108. data/lib/rush/expansion/parameter_expander.rb +204 -0
  109. data/lib/rush/expansion/parameter_forms.rb +22 -0
  110. data/lib/rush/expansion/pattern_removal.rb +63 -0
  111. data/lib/rush/expansion/pipeline.rb +124 -0
  112. data/lib/rush/expansion/read_char.rb +13 -0
  113. data/lib/rush/expansion/read_field_scanner.rb +159 -0
  114. data/lib/rush/expansion/read_splitter.rb +40 -0
  115. data/lib/rush/expansion/resolver.rb +23 -0
  116. data/lib/rush/expansion/tilde_expander.rb +102 -0
  117. data/lib/rush/external.rb +75 -0
  118. data/lib/rush/fd_entry.rb +60 -0
  119. data/lib/rush/for_runner.rb +50 -0
  120. data/lib/rush/function_frame.rb +30 -0
  121. data/lib/rush/function_runner.rb +37 -0
  122. data/lib/rush/function_table.rb +35 -0
  123. data/lib/rush/getopts_parser.rb +195 -0
  124. data/lib/rush/getopts_state.rb +104 -0
  125. data/lib/rush/here_doc.rb +57 -0
  126. data/lib/rush/interactive_signals.rb +26 -0
  127. data/lib/rush/invocation.rb +190 -0
  128. data/lib/rush/io_table.rb +94 -0
  129. data/lib/rush/job_control.rb +197 -0
  130. data/lib/rush/job_report.rb +45 -0
  131. data/lib/rush/job_spec.rb +51 -0
  132. data/lib/rush/job_table/control.rb +103 -0
  133. data/lib/rush/job_table/interruptible_wait.rb +70 -0
  134. data/lib/rush/job_table/job.rb +181 -0
  135. data/lib/rush/job_table.rb +194 -0
  136. data/lib/rush/lexer/alias_expander.rb +129 -0
  137. data/lib/rush/lexer/braced_reader.rb +86 -0
  138. data/lib/rush/lexer/case_frame.rb +114 -0
  139. data/lib/rush/lexer/case_tracker.rb +146 -0
  140. data/lib/rush/lexer/dollar_scanner.rb +53 -0
  141. data/lib/rush/lexer/double_quote_scanner.rb +71 -0
  142. data/lib/rush/lexer/heredoc_body.rb +91 -0
  143. data/lib/rush/lexer/heredoc_reader.rb +93 -0
  144. data/lib/rush/lexer/lex_state.rb +128 -0
  145. data/lib/rush/lexer/operator_table.rb +32 -0
  146. data/lib/rush/lexer/param_scanner.rb +43 -0
  147. data/lib/rush/lexer/paren_reader.rb +113 -0
  148. data/lib/rush/lexer/paren_regions.rb +74 -0
  149. data/lib/rush/lexer/quote_skips.rb +77 -0
  150. data/lib/rush/lexer/quoted_word.rb +67 -0
  151. data/lib/rush/lexer/scanner_predicates.rb +20 -0
  152. data/lib/rush/lexer/source_lines.rb +43 -0
  153. data/lib/rush/lexer/substitution_reader.rb +77 -0
  154. data/lib/rush/lexer/token_classifier.rb +144 -0
  155. data/lib/rush/lexer/token_predicates.rb +23 -0
  156. data/lib/rush/lexer/word_scanner.rb +134 -0
  157. data/lib/rush/lexer.rb +174 -0
  158. data/lib/rush/loop_control_handling.rb +29 -0
  159. data/lib/rush/loop_nesting.rb +50 -0
  160. data/lib/rush/loop_runner.rb +55 -0
  161. data/lib/rush/option_cluster.rb +39 -0
  162. data/lib/rush/options.rb +76 -0
  163. data/lib/rush/param_text.rb +39 -0
  164. data/lib/rush/parser.rb +1213 -0
  165. data/lib/rush/parser_support.rb +112 -0
  166. data/lib/rush/pattern_scanner.rb +35 -0
  167. data/lib/rush/pending_signals.rb +57 -0
  168. data/lib/rush/pipeline_runner.rb +173 -0
  169. data/lib/rush/pipeline_statuses.rb +45 -0
  170. data/lib/rush/positional.rb +45 -0
  171. data/lib/rush/posix_pattern.rb +78 -0
  172. data/lib/rush/program_input.rb +89 -0
  173. data/lib/rush/program_reader.rb +69 -0
  174. data/lib/rush/program_session.rb +83 -0
  175. data/lib/rush/prompt.rb +52 -0
  176. data/lib/rush/redirect_scope.rb +64 -0
  177. data/lib/rush/redirection/dup_redirect.rb +58 -0
  178. data/lib/rush/redirection/file_redirect.rb +50 -0
  179. data/lib/rush/redirection/here_doc_redirect.rb +17 -0
  180. data/lib/rush/redirection/registry.rb +53 -0
  181. data/lib/rush/repl.rb +133 -0
  182. data/lib/rush/runtime_type_checks.rb +16 -0
  183. data/lib/rush/scope.rb +79 -0
  184. data/lib/rush/segment_buffer.rb +47 -0
  185. data/lib/rush/shell_parameters.rb +77 -0
  186. data/lib/rush/shell_pattern.rb +80 -0
  187. data/lib/rush/shell_state.rb +163 -0
  188. data/lib/rush/shell_variables.rb +67 -0
  189. data/lib/rush/signal_report.rb +41 -0
  190. data/lib/rush/signals.rb +68 -0
  191. data/lib/rush/source.rb +82 -0
  192. data/lib/rush/source_line_counter.rb +41 -0
  193. data/lib/rush/source_runner.rb +47 -0
  194. data/lib/rush/startup.rb +75 -0
  195. data/lib/rush/status.rb +93 -0
  196. data/lib/rush/stop_relay.rb +32 -0
  197. data/lib/rush/subshell_runner.rb +70 -0
  198. data/lib/rush/system_calls/collation.rb +155 -0
  199. data/lib/rush/system_calls/file_tests.rb +95 -0
  200. data/lib/rush/system_calls/process_control.rb +165 -0
  201. data/lib/rush/system_calls/process_identity.rb +43 -0
  202. data/lib/rush/system_calls/resource_limits.rb +51 -0
  203. data/lib/rush/system_calls.rb +206 -0
  204. data/lib/rush/terminal.rb +126 -0
  205. data/lib/rush/trap_runner.rb +169 -0
  206. data/lib/rush/trap_table.rb +49 -0
  207. data/lib/rush/umask_mode.rb +133 -0
  208. data/lib/rush/version.rb +6 -0
  209. data/lib/rush.rb +190 -0
  210. metadata +527 -0
@@ -0,0 +1,2354 @@
1
+
2
+
3
+ -------- Grammar --------
4
+
5
+ rule 1 program: linebreak
6
+ rule 2 program: linebreak complete_commands linebreak
7
+ rule 3 complete_commands: complete_command
8
+ rule 4 complete_commands: complete_commands newline_list complete_command
9
+ rule 5 complete_command: list separator_op
10
+ rule 6 complete_command: list
11
+ rule 7 list: list separator_op and_or
12
+ rule 8 list: and_or
13
+ rule 9 and_or: pipeline
14
+ rule 10 and_or: and_or AND_IF linebreak pipeline
15
+ rule 11 and_or: and_or OR_IF linebreak pipeline
16
+ rule 12 pipeline: pipe_sequence
17
+ rule 13 pipeline: Bang pipe_sequence
18
+ rule 14 pipe_sequence: command
19
+ rule 15 pipe_sequence: pipe_sequence "|" linebreak command
20
+ rule 16 command: simple_command
21
+ rule 17 command: compound_command
22
+ rule 18 command: compound_command redirect_list
23
+ rule 19 command: function_definition
24
+ rule 20 redirect_list: io_redirect
25
+ rule 21 redirect_list: redirect_list io_redirect
26
+ rule 22 function_definition: WORD "(" ")" linebreak compound_command
27
+ rule 23 compound_command: brace_group
28
+ rule 24 compound_command: subshell
29
+ rule 25 compound_command: if_clause
30
+ rule 26 compound_command: while_clause
31
+ rule 27 compound_command: until_clause
32
+ rule 28 compound_command: for_clause
33
+ rule 29 compound_command: case_clause
34
+ rule 30 brace_group: Lbrace compound_list Rbrace
35
+ rule 31 subshell: "(" compound_list ")"
36
+ rule 32 while_clause: While compound_list do_group
37
+ rule 33 until_clause: Until compound_list do_group
38
+ rule 34 do_group: Do compound_list Done
39
+ rule 35 for_clause: For name do_group
40
+ rule 36 for_clause: For name sequential_sep do_group
41
+ rule 37 for_clause: For name linebreak In sequential_sep do_group
42
+ rule 38 for_clause: For name linebreak In wordlist sequential_sep do_group
43
+ rule 39 name: NAME
44
+ rule 40 wordlist: WORD
45
+ rule 41 wordlist: wordlist WORD
46
+ rule 42 sequential_sep: ";" linebreak
47
+ rule 43 sequential_sep: newline_list
48
+ rule 44 case_clause: Case WORD linebreak In linebreak case_list Esac
49
+ rule 45 case_clause: Case WORD linebreak In linebreak case_list_ns Esac
50
+ rule 46 case_clause: Case WORD linebreak In linebreak Esac
51
+ rule 47 case_list: case_item
52
+ rule 48 case_list: case_list case_item
53
+ rule 49 case_list_ns: case_item_ns
54
+ rule 50 case_list_ns: case_list case_item_ns
55
+ rule 51 case_item: patterns ")" compound_list DSEMI linebreak
56
+ rule 52 case_item: patterns ")" linebreak DSEMI linebreak
57
+ rule 53 case_item: "(" patterns ")" compound_list DSEMI linebreak
58
+ rule 54 case_item: "(" patterns ")" linebreak DSEMI linebreak
59
+ rule 55 case_item_ns: patterns ")" compound_list
60
+ rule 56 case_item_ns: patterns ")" linebreak
61
+ rule 57 case_item_ns: "(" patterns ")" compound_list
62
+ rule 58 case_item_ns: "(" patterns ")" linebreak
63
+ rule 59 patterns: WORD
64
+ rule 60 patterns: patterns "|" WORD
65
+ rule 61 if_clause: If compound_list Then compound_list else_part Fi
66
+ rule 62 if_clause: If compound_list Then compound_list Fi
67
+ rule 63 else_part: Elif compound_list Then compound_list
68
+ rule 64 else_part: Elif compound_list Then compound_list else_part
69
+ rule 65 else_part: Else compound_list
70
+ rule 66 compound_list: linebreak term
71
+ rule 67 compound_list: linebreak term separator
72
+ rule 68 term: term separator and_or
73
+ rule 69 term: and_or
74
+ rule 70 separator: separator_op linebreak
75
+ rule 71 separator: newline_list
76
+ rule 72 simple_command: cmd_prefix cmd_word cmd_suffix
77
+ rule 73 simple_command: cmd_prefix cmd_word
78
+ rule 74 simple_command: cmd_prefix
79
+ rule 75 simple_command: cmd_name cmd_suffix
80
+ rule 76 simple_command: cmd_name
81
+ rule 77 cmd_name: WORD
82
+ rule 78 cmd_word: WORD
83
+ rule 79 cmd_prefix: io_redirect
84
+ rule 80 cmd_prefix: cmd_prefix io_redirect
85
+ rule 81 cmd_prefix: ASSIGNMENT_WORD
86
+ rule 82 cmd_prefix: cmd_prefix ASSIGNMENT_WORD
87
+ rule 83 cmd_suffix: io_redirect
88
+ rule 84 cmd_suffix: cmd_suffix io_redirect
89
+ rule 85 cmd_suffix: WORD
90
+ rule 86 cmd_suffix: cmd_suffix WORD
91
+ rule 87 io_redirect: io_file
92
+ rule 88 io_redirect: IO_NUMBER io_file
93
+ rule 89 io_redirect: io_here
94
+ rule 90 io_redirect: IO_NUMBER io_here
95
+ rule 91 io_here: DLESS WORD
96
+ rule 92 io_here: DLESSDASH WORD
97
+ rule 93 io_file: "<" filename
98
+ rule 94 io_file: ">" filename
99
+ rule 95 io_file: DGREAT filename
100
+ rule 96 io_file: LESSGREAT filename
101
+ rule 97 io_file: CLOBBER filename
102
+ rule 98 io_file: GREATAND filename
103
+ rule 99 io_file: LESSAND filename
104
+ rule 100 filename: WORD
105
+ rule 101 separator_op: "&"
106
+ rule 102 separator_op: ";"
107
+ rule 103 newline_list: NEWLINE
108
+ rule 104 newline_list: newline_list NEWLINE
109
+ rule 105 linebreak: newline_list
110
+ rule 106 linebreak:
111
+
112
+ ------- Symbols -------
113
+
114
+ **Nonterminals, with rules where they appear
115
+
116
+ $start (40)
117
+ on right:
118
+ on left :
119
+ program (41)
120
+ on right:
121
+ on left : 1 2
122
+ linebreak (42)
123
+ on right: 1 2 10 11 15 22 37 38 42 44 45 46 51 52 53 54 56 58 66 67 70
124
+ on left : 105 106
125
+ complete_commands (43)
126
+ on right: 2 4
127
+ on left : 3 4
128
+ complete_command (44)
129
+ on right: 3 4
130
+ on left : 5 6
131
+ newline_list (45)
132
+ on right: 4 43 71 104 105
133
+ on left : 103 104
134
+ list (46)
135
+ on right: 5 6 7
136
+ on left : 7 8
137
+ separator_op (47)
138
+ on right: 5 7 70
139
+ on left : 101 102
140
+ and_or (48)
141
+ on right: 7 8 10 11 68 69
142
+ on left : 9 10 11
143
+ pipeline (49)
144
+ on right: 9 10 11
145
+ on left : 12 13
146
+ pipe_sequence (50)
147
+ on right: 12 13 15
148
+ on left : 14 15
149
+ command (51)
150
+ on right: 14 15
151
+ on left : 16 17 18 19
152
+ simple_command (52)
153
+ on right: 16
154
+ on left : 72 73 74 75 76
155
+ compound_command (53)
156
+ on right: 17 18 22
157
+ on left : 23 24 25 26 27 28 29
158
+ redirect_list (54)
159
+ on right: 18 21
160
+ on left : 20 21
161
+ function_definition (55)
162
+ on right: 19
163
+ on left : 22
164
+ io_redirect (56)
165
+ on right: 20 21 79 80 83 84
166
+ on left : 87 88 89 90
167
+ brace_group (57)
168
+ on right: 23
169
+ on left : 30
170
+ subshell (58)
171
+ on right: 24
172
+ on left : 31
173
+ if_clause (59)
174
+ on right: 25
175
+ on left : 61 62
176
+ while_clause (60)
177
+ on right: 26
178
+ on left : 32
179
+ until_clause (61)
180
+ on right: 27
181
+ on left : 33
182
+ for_clause (62)
183
+ on right: 28
184
+ on left : 35 36 37 38
185
+ case_clause (63)
186
+ on right: 29
187
+ on left : 44 45 46
188
+ compound_list (64)
189
+ on right: 30 31 32 33 34 51 53 55 57 61 62 63 64 65
190
+ on left : 66 67
191
+ do_group (65)
192
+ on right: 32 33 35 36 37 38
193
+ on left : 34
194
+ name (66)
195
+ on right: 35 36 37 38
196
+ on left : 39
197
+ sequential_sep (67)
198
+ on right: 36 37 38
199
+ on left : 42 43
200
+ wordlist (68)
201
+ on right: 38 41
202
+ on left : 40 41
203
+ case_list (69)
204
+ on right: 44 48 50
205
+ on left : 47 48
206
+ case_list_ns (70)
207
+ on right: 45
208
+ on left : 49 50
209
+ case_item (71)
210
+ on right: 47 48
211
+ on left : 51 52 53 54
212
+ case_item_ns (72)
213
+ on right: 49 50
214
+ on left : 55 56 57 58
215
+ patterns (73)
216
+ on right: 51 52 53 54 55 56 57 58 60
217
+ on left : 59 60
218
+ else_part (74)
219
+ on right: 61 64
220
+ on left : 63 64 65
221
+ term (75)
222
+ on right: 66 67 68
223
+ on left : 68 69
224
+ separator (76)
225
+ on right: 67 68
226
+ on left : 70 71
227
+ cmd_prefix (77)
228
+ on right: 72 73 74 80 82
229
+ on left : 79 80 81 82
230
+ cmd_word (78)
231
+ on right: 72 73
232
+ on left : 78
233
+ cmd_suffix (79)
234
+ on right: 72 75 84 86
235
+ on left : 83 84 85 86
236
+ cmd_name (80)
237
+ on right: 75 76
238
+ on left : 77
239
+ io_file (81)
240
+ on right: 87 88
241
+ on left : 93 94 95 96 97 98 99
242
+ io_here (82)
243
+ on right: 89 90
244
+ on left : 91 92
245
+ filename (83)
246
+ on right: 93 94 95 96 97 98 99
247
+ on left : 100
248
+
249
+ **Terminals, with rules where they appear
250
+
251
+ $end (0)
252
+ error (1)
253
+ WORD (2) 22 40 41 44 45 46 59 60 77 78 85 86 91 92 100
254
+ ASSIGNMENT_WORD (3) 81 82
255
+ IO_NUMBER (4) 88 90
256
+ NEWLINE (5) 103 104
257
+ AND_IF (6) 10
258
+ OR_IF (7) 11
259
+ DGREAT (8) 95
260
+ LESSGREAT (9) 96
261
+ CLOBBER (10) 97
262
+ DLESS (11) 91
263
+ DLESSDASH (12) 92
264
+ GREATAND (13) 98
265
+ LESSAND (14) 99
266
+ If (15) 61 62
267
+ Then (16) 61 62 63 64
268
+ Else (17) 65
269
+ Elif (18) 63 64
270
+ Fi (19) 61 62
271
+ Lbrace (20) 30
272
+ Rbrace (21) 30
273
+ Bang (22) 13
274
+ While (23) 32
275
+ Until (24) 33
276
+ Do (25) 34
277
+ Done (26) 34
278
+ For (27) 35 36 37 38
279
+ In (28) 37 38 44 45 46
280
+ NAME (29) 39
281
+ Case (30) 44 45 46
282
+ Esac (31) 44 45 46
283
+ DSEMI (32) 51 52 53 54
284
+ "|" (33) 15 60
285
+ "(" (34) 22 31 53 54 57 58
286
+ ")" (35) 22 31 51 52 53 54 55 56 57 58
287
+ ";" (36) 42 102
288
+ "<" (37) 93
289
+ ">" (38) 94
290
+ "&" (39) 101
291
+
292
+ --------- State ---------
293
+
294
+ state 0
295
+
296
+
297
+ NEWLINE shift, and go to state 3
298
+ $default reduce using rule 106 (linebreak)
299
+
300
+ program go to state 1
301
+ linebreak go to state 2
302
+ newline_list go to state 4
303
+
304
+ state 1
305
+
306
+
307
+ $end shift, and go to state 5
308
+
309
+
310
+ state 2
311
+
312
+ 1) program : linebreak _
313
+ 2) program : linebreak _ complete_commands linebreak
314
+
315
+ WORD shift, and go to state 17
316
+ ASSIGNMENT_WORD shift, and go to state 35
317
+ IO_NUMBER shift, and go to state 37
318
+ DGREAT shift, and go to state 43
319
+ LESSGREAT shift, and go to state 44
320
+ CLOBBER shift, and go to state 45
321
+ DLESS shift, and go to state 39
322
+ DLESSDASH shift, and go to state 40
323
+ GREATAND shift, and go to state 46
324
+ LESSAND shift, and go to state 47
325
+ If shift, and go to state 31
326
+ Lbrace shift, and go to state 25
327
+ Bang shift, and go to state 12
328
+ While shift, and go to state 27
329
+ Until shift, and go to state 28
330
+ For shift, and go to state 29
331
+ Case shift, and go to state 30
332
+ "(" shift, and go to state 26
333
+ "<" shift, and go to state 41
334
+ ">" shift, and go to state 42
335
+ $default reduce using rule 1 (program)
336
+
337
+ complete_commands go to state 6
338
+ complete_command go to state 7
339
+ list go to state 8
340
+ and_or go to state 9
341
+ pipeline go to state 10
342
+ pipe_sequence go to state 11
343
+ command go to state 13
344
+ simple_command go to state 14
345
+ compound_command go to state 15
346
+ function_definition go to state 16
347
+ brace_group go to state 18
348
+ subshell go to state 19
349
+ if_clause go to state 20
350
+ while_clause go to state 21
351
+ until_clause go to state 22
352
+ for_clause go to state 23
353
+ case_clause go to state 24
354
+ cmd_prefix go to state 32
355
+ cmd_name go to state 33
356
+ io_redirect go to state 34
357
+ io_file go to state 36
358
+ io_here go to state 38
359
+
360
+ state 3
361
+
362
+ 103) newline_list : NEWLINE _
363
+
364
+ $default reduce using rule 103 (newline_list)
365
+
366
+
367
+ state 4
368
+
369
+ 104) newline_list : newline_list _ NEWLINE
370
+ 105) linebreak : newline_list _
371
+
372
+ NEWLINE shift, and go to state 48
373
+ $default reduce using rule 105 (linebreak)
374
+
375
+
376
+ state 5
377
+
378
+
379
+ $end shift, and go to state 49
380
+
381
+
382
+ state 6
383
+
384
+ 2) program : linebreak complete_commands _ linebreak
385
+ 4) complete_commands : complete_commands _ newline_list complete_command
386
+
387
+ NEWLINE shift, and go to state 3
388
+ $default reduce using rule 106 (linebreak)
389
+
390
+ linebreak go to state 50
391
+ newline_list go to state 51
392
+
393
+ state 7
394
+
395
+ 3) complete_commands : complete_command _
396
+
397
+ $default reduce using rule 3 (complete_commands)
398
+
399
+
400
+ state 8
401
+
402
+ 5) complete_command : list _ separator_op
403
+ 6) complete_command : list _
404
+ 7) list : list _ separator_op and_or
405
+
406
+ ";" shift, and go to state 54
407
+ "&" shift, and go to state 53
408
+ $default reduce using rule 6 (complete_command)
409
+
410
+ separator_op go to state 52
411
+
412
+ state 9
413
+
414
+ 8) list : and_or _
415
+ 10) and_or : and_or _ AND_IF linebreak pipeline
416
+ 11) and_or : and_or _ OR_IF linebreak pipeline
417
+
418
+ AND_IF shift, and go to state 55
419
+ OR_IF shift, and go to state 56
420
+ $default reduce using rule 8 (list)
421
+
422
+
423
+ state 10
424
+
425
+ 9) and_or : pipeline _
426
+
427
+ $default reduce using rule 9 (and_or)
428
+
429
+
430
+ state 11
431
+
432
+ 12) pipeline : pipe_sequence _
433
+ 15) pipe_sequence : pipe_sequence _ "|" linebreak command
434
+
435
+ "|" shift, and go to state 57
436
+ $default reduce using rule 12 (pipeline)
437
+
438
+
439
+ state 12
440
+
441
+ 13) pipeline : Bang _ pipe_sequence
442
+
443
+ WORD shift, and go to state 17
444
+ ASSIGNMENT_WORD shift, and go to state 35
445
+ IO_NUMBER shift, and go to state 37
446
+ DGREAT shift, and go to state 43
447
+ LESSGREAT shift, and go to state 44
448
+ CLOBBER shift, and go to state 45
449
+ DLESS shift, and go to state 39
450
+ DLESSDASH shift, and go to state 40
451
+ GREATAND shift, and go to state 46
452
+ LESSAND shift, and go to state 47
453
+ If shift, and go to state 31
454
+ Lbrace shift, and go to state 25
455
+ While shift, and go to state 27
456
+ Until shift, and go to state 28
457
+ For shift, and go to state 29
458
+ Case shift, and go to state 30
459
+ "(" shift, and go to state 26
460
+ "<" shift, and go to state 41
461
+ ">" shift, and go to state 42
462
+
463
+ pipe_sequence go to state 58
464
+ command go to state 13
465
+ simple_command go to state 14
466
+ compound_command go to state 15
467
+ function_definition go to state 16
468
+ brace_group go to state 18
469
+ subshell go to state 19
470
+ if_clause go to state 20
471
+ while_clause go to state 21
472
+ until_clause go to state 22
473
+ for_clause go to state 23
474
+ case_clause go to state 24
475
+ cmd_prefix go to state 32
476
+ cmd_name go to state 33
477
+ io_redirect go to state 34
478
+ io_file go to state 36
479
+ io_here go to state 38
480
+
481
+ state 13
482
+
483
+ 14) pipe_sequence : command _
484
+
485
+ $default reduce using rule 14 (pipe_sequence)
486
+
487
+
488
+ state 14
489
+
490
+ 16) command : simple_command _
491
+
492
+ $default reduce using rule 16 (command)
493
+
494
+
495
+ state 15
496
+
497
+ 17) command : compound_command _
498
+ 18) command : compound_command _ redirect_list
499
+
500
+ IO_NUMBER shift, and go to state 37
501
+ DGREAT shift, and go to state 43
502
+ LESSGREAT shift, and go to state 44
503
+ CLOBBER shift, and go to state 45
504
+ DLESS shift, and go to state 39
505
+ DLESSDASH shift, and go to state 40
506
+ GREATAND shift, and go to state 46
507
+ LESSAND shift, and go to state 47
508
+ "<" shift, and go to state 41
509
+ ">" shift, and go to state 42
510
+ $default reduce using rule 17 (command)
511
+
512
+ redirect_list go to state 59
513
+ io_redirect go to state 60
514
+ io_file go to state 36
515
+ io_here go to state 38
516
+
517
+ state 16
518
+
519
+ 19) command : function_definition _
520
+
521
+ $default reduce using rule 19 (command)
522
+
523
+
524
+ state 17
525
+
526
+ 22) function_definition : WORD _ "(" ")" linebreak compound_command
527
+ 77) cmd_name : WORD _
528
+
529
+ "(" shift, and go to state 61
530
+ $default reduce using rule 77 (cmd_name)
531
+
532
+
533
+ state 18
534
+
535
+ 23) compound_command : brace_group _
536
+
537
+ $default reduce using rule 23 (compound_command)
538
+
539
+
540
+ state 19
541
+
542
+ 24) compound_command : subshell _
543
+
544
+ $default reduce using rule 24 (compound_command)
545
+
546
+
547
+ state 20
548
+
549
+ 25) compound_command : if_clause _
550
+
551
+ $default reduce using rule 25 (compound_command)
552
+
553
+
554
+ state 21
555
+
556
+ 26) compound_command : while_clause _
557
+
558
+ $default reduce using rule 26 (compound_command)
559
+
560
+
561
+ state 22
562
+
563
+ 27) compound_command : until_clause _
564
+
565
+ $default reduce using rule 27 (compound_command)
566
+
567
+
568
+ state 23
569
+
570
+ 28) compound_command : for_clause _
571
+
572
+ $default reduce using rule 28 (compound_command)
573
+
574
+
575
+ state 24
576
+
577
+ 29) compound_command : case_clause _
578
+
579
+ $default reduce using rule 29 (compound_command)
580
+
581
+
582
+ state 25
583
+
584
+ 30) brace_group : Lbrace _ compound_list Rbrace
585
+
586
+ NEWLINE shift, and go to state 3
587
+ $default reduce using rule 106 (linebreak)
588
+
589
+ compound_list go to state 62
590
+ linebreak go to state 63
591
+ newline_list go to state 4
592
+
593
+ state 26
594
+
595
+ 31) subshell : "(" _ compound_list ")"
596
+
597
+ NEWLINE shift, and go to state 3
598
+ $default reduce using rule 106 (linebreak)
599
+
600
+ compound_list go to state 64
601
+ linebreak go to state 63
602
+ newline_list go to state 4
603
+
604
+ state 27
605
+
606
+ 32) while_clause : While _ compound_list do_group
607
+
608
+ NEWLINE shift, and go to state 3
609
+ $default reduce using rule 106 (linebreak)
610
+
611
+ compound_list go to state 65
612
+ linebreak go to state 63
613
+ newline_list go to state 4
614
+
615
+ state 28
616
+
617
+ 33) until_clause : Until _ compound_list do_group
618
+
619
+ NEWLINE shift, and go to state 3
620
+ $default reduce using rule 106 (linebreak)
621
+
622
+ compound_list go to state 66
623
+ linebreak go to state 63
624
+ newline_list go to state 4
625
+
626
+ state 29
627
+
628
+ 35) for_clause : For _ name do_group
629
+ 36) for_clause : For _ name sequential_sep do_group
630
+ 37) for_clause : For _ name linebreak In sequential_sep do_group
631
+ 38) for_clause : For _ name linebreak In wordlist sequential_sep do_group
632
+
633
+ NAME shift, and go to state 68
634
+
635
+ name go to state 67
636
+
637
+ state 30
638
+
639
+ 44) case_clause : Case _ WORD linebreak In linebreak case_list Esac
640
+ 45) case_clause : Case _ WORD linebreak In linebreak case_list_ns Esac
641
+ 46) case_clause : Case _ WORD linebreak In linebreak Esac
642
+
643
+ WORD shift, and go to state 69
644
+
645
+
646
+ state 31
647
+
648
+ 61) if_clause : If _ compound_list Then compound_list else_part Fi
649
+ 62) if_clause : If _ compound_list Then compound_list Fi
650
+
651
+ NEWLINE shift, and go to state 3
652
+ $default reduce using rule 106 (linebreak)
653
+
654
+ compound_list go to state 70
655
+ linebreak go to state 63
656
+ newline_list go to state 4
657
+
658
+ state 32
659
+
660
+ 72) simple_command : cmd_prefix _ cmd_word cmd_suffix
661
+ 73) simple_command : cmd_prefix _ cmd_word
662
+ 74) simple_command : cmd_prefix _
663
+ 80) cmd_prefix : cmd_prefix _ io_redirect
664
+ 82) cmd_prefix : cmd_prefix _ ASSIGNMENT_WORD
665
+
666
+ WORD shift, and go to state 72
667
+ ASSIGNMENT_WORD shift, and go to state 74
668
+ IO_NUMBER shift, and go to state 37
669
+ DGREAT shift, and go to state 43
670
+ LESSGREAT shift, and go to state 44
671
+ CLOBBER shift, and go to state 45
672
+ DLESS shift, and go to state 39
673
+ DLESSDASH shift, and go to state 40
674
+ GREATAND shift, and go to state 46
675
+ LESSAND shift, and go to state 47
676
+ "<" shift, and go to state 41
677
+ ">" shift, and go to state 42
678
+ $default reduce using rule 74 (simple_command)
679
+
680
+ cmd_word go to state 71
681
+ io_redirect go to state 73
682
+ io_file go to state 36
683
+ io_here go to state 38
684
+
685
+ state 33
686
+
687
+ 75) simple_command : cmd_name _ cmd_suffix
688
+ 76) simple_command : cmd_name _
689
+
690
+ WORD shift, and go to state 77
691
+ IO_NUMBER shift, and go to state 37
692
+ DGREAT shift, and go to state 43
693
+ LESSGREAT shift, and go to state 44
694
+ CLOBBER shift, and go to state 45
695
+ DLESS shift, and go to state 39
696
+ DLESSDASH shift, and go to state 40
697
+ GREATAND shift, and go to state 46
698
+ LESSAND shift, and go to state 47
699
+ "<" shift, and go to state 41
700
+ ">" shift, and go to state 42
701
+ $default reduce using rule 76 (simple_command)
702
+
703
+ cmd_suffix go to state 75
704
+ io_redirect go to state 76
705
+ io_file go to state 36
706
+ io_here go to state 38
707
+
708
+ state 34
709
+
710
+ 79) cmd_prefix : io_redirect _
711
+
712
+ $default reduce using rule 79 (cmd_prefix)
713
+
714
+
715
+ state 35
716
+
717
+ 81) cmd_prefix : ASSIGNMENT_WORD _
718
+
719
+ $default reduce using rule 81 (cmd_prefix)
720
+
721
+
722
+ state 36
723
+
724
+ 87) io_redirect : io_file _
725
+
726
+ $default reduce using rule 87 (io_redirect)
727
+
728
+
729
+ state 37
730
+
731
+ 88) io_redirect : IO_NUMBER _ io_file
732
+ 90) io_redirect : IO_NUMBER _ io_here
733
+
734
+ DGREAT shift, and go to state 43
735
+ LESSGREAT shift, and go to state 44
736
+ CLOBBER shift, and go to state 45
737
+ DLESS shift, and go to state 39
738
+ DLESSDASH shift, and go to state 40
739
+ GREATAND shift, and go to state 46
740
+ LESSAND shift, and go to state 47
741
+ "<" shift, and go to state 41
742
+ ">" shift, and go to state 42
743
+
744
+ io_file go to state 78
745
+ io_here go to state 79
746
+
747
+ state 38
748
+
749
+ 89) io_redirect : io_here _
750
+
751
+ $default reduce using rule 89 (io_redirect)
752
+
753
+
754
+ state 39
755
+
756
+ 91) io_here : DLESS _ WORD
757
+
758
+ WORD shift, and go to state 80
759
+
760
+
761
+ state 40
762
+
763
+ 92) io_here : DLESSDASH _ WORD
764
+
765
+ WORD shift, and go to state 81
766
+
767
+
768
+ state 41
769
+
770
+ 93) io_file : "<" _ filename
771
+
772
+ WORD shift, and go to state 83
773
+
774
+ filename go to state 82
775
+
776
+ state 42
777
+
778
+ 94) io_file : ">" _ filename
779
+
780
+ WORD shift, and go to state 83
781
+
782
+ filename go to state 84
783
+
784
+ state 43
785
+
786
+ 95) io_file : DGREAT _ filename
787
+
788
+ WORD shift, and go to state 83
789
+
790
+ filename go to state 85
791
+
792
+ state 44
793
+
794
+ 96) io_file : LESSGREAT _ filename
795
+
796
+ WORD shift, and go to state 83
797
+
798
+ filename go to state 86
799
+
800
+ state 45
801
+
802
+ 97) io_file : CLOBBER _ filename
803
+
804
+ WORD shift, and go to state 83
805
+
806
+ filename go to state 87
807
+
808
+ state 46
809
+
810
+ 98) io_file : GREATAND _ filename
811
+
812
+ WORD shift, and go to state 83
813
+
814
+ filename go to state 88
815
+
816
+ state 47
817
+
818
+ 99) io_file : LESSAND _ filename
819
+
820
+ WORD shift, and go to state 83
821
+
822
+ filename go to state 89
823
+
824
+ state 48
825
+
826
+ 104) newline_list : newline_list NEWLINE _
827
+
828
+ $default reduce using rule 104 (newline_list)
829
+
830
+
831
+ state 49
832
+
833
+
834
+ $default accept
835
+
836
+
837
+ state 50
838
+
839
+ 2) program : linebreak complete_commands linebreak _
840
+
841
+ $default reduce using rule 2 (program)
842
+
843
+
844
+ state 51
845
+
846
+ 4) complete_commands : complete_commands newline_list _ complete_command
847
+ 104) newline_list : newline_list _ NEWLINE
848
+ 105) linebreak : newline_list _
849
+
850
+ WORD shift, and go to state 17
851
+ ASSIGNMENT_WORD shift, and go to state 35
852
+ IO_NUMBER shift, and go to state 37
853
+ NEWLINE shift, and go to state 48
854
+ DGREAT shift, and go to state 43
855
+ LESSGREAT shift, and go to state 44
856
+ CLOBBER shift, and go to state 45
857
+ DLESS shift, and go to state 39
858
+ DLESSDASH shift, and go to state 40
859
+ GREATAND shift, and go to state 46
860
+ LESSAND shift, and go to state 47
861
+ If shift, and go to state 31
862
+ Lbrace shift, and go to state 25
863
+ Bang shift, and go to state 12
864
+ While shift, and go to state 27
865
+ Until shift, and go to state 28
866
+ For shift, and go to state 29
867
+ Case shift, and go to state 30
868
+ "(" shift, and go to state 26
869
+ "<" shift, and go to state 41
870
+ ">" shift, and go to state 42
871
+ $default reduce using rule 105 (linebreak)
872
+
873
+ complete_command go to state 90
874
+ list go to state 8
875
+ and_or go to state 9
876
+ pipeline go to state 10
877
+ pipe_sequence go to state 11
878
+ command go to state 13
879
+ simple_command go to state 14
880
+ compound_command go to state 15
881
+ function_definition go to state 16
882
+ brace_group go to state 18
883
+ subshell go to state 19
884
+ if_clause go to state 20
885
+ while_clause go to state 21
886
+ until_clause go to state 22
887
+ for_clause go to state 23
888
+ case_clause go to state 24
889
+ cmd_prefix go to state 32
890
+ cmd_name go to state 33
891
+ io_redirect go to state 34
892
+ io_file go to state 36
893
+ io_here go to state 38
894
+
895
+ state 52
896
+
897
+ 5) complete_command : list separator_op _
898
+ 7) list : list separator_op _ and_or
899
+
900
+ WORD shift, and go to state 17
901
+ ASSIGNMENT_WORD shift, and go to state 35
902
+ IO_NUMBER shift, and go to state 37
903
+ DGREAT shift, and go to state 43
904
+ LESSGREAT shift, and go to state 44
905
+ CLOBBER shift, and go to state 45
906
+ DLESS shift, and go to state 39
907
+ DLESSDASH shift, and go to state 40
908
+ GREATAND shift, and go to state 46
909
+ LESSAND shift, and go to state 47
910
+ If shift, and go to state 31
911
+ Lbrace shift, and go to state 25
912
+ Bang shift, and go to state 12
913
+ While shift, and go to state 27
914
+ Until shift, and go to state 28
915
+ For shift, and go to state 29
916
+ Case shift, and go to state 30
917
+ "(" shift, and go to state 26
918
+ "<" shift, and go to state 41
919
+ ">" shift, and go to state 42
920
+ $default reduce using rule 5 (complete_command)
921
+
922
+ and_or go to state 91
923
+ pipeline go to state 10
924
+ pipe_sequence go to state 11
925
+ command go to state 13
926
+ simple_command go to state 14
927
+ compound_command go to state 15
928
+ function_definition go to state 16
929
+ brace_group go to state 18
930
+ subshell go to state 19
931
+ if_clause go to state 20
932
+ while_clause go to state 21
933
+ until_clause go to state 22
934
+ for_clause go to state 23
935
+ case_clause go to state 24
936
+ cmd_prefix go to state 32
937
+ cmd_name go to state 33
938
+ io_redirect go to state 34
939
+ io_file go to state 36
940
+ io_here go to state 38
941
+
942
+ state 53
943
+
944
+ 101) separator_op : "&" _
945
+
946
+ $default reduce using rule 101 (separator_op)
947
+
948
+
949
+ state 54
950
+
951
+ 102) separator_op : ";" _
952
+
953
+ $default reduce using rule 102 (separator_op)
954
+
955
+
956
+ state 55
957
+
958
+ 10) and_or : and_or AND_IF _ linebreak pipeline
959
+
960
+ NEWLINE shift, and go to state 3
961
+ $default reduce using rule 106 (linebreak)
962
+
963
+ linebreak go to state 92
964
+ newline_list go to state 4
965
+
966
+ state 56
967
+
968
+ 11) and_or : and_or OR_IF _ linebreak pipeline
969
+
970
+ NEWLINE shift, and go to state 3
971
+ $default reduce using rule 106 (linebreak)
972
+
973
+ linebreak go to state 93
974
+ newline_list go to state 4
975
+
976
+ state 57
977
+
978
+ 15) pipe_sequence : pipe_sequence "|" _ linebreak command
979
+
980
+ NEWLINE shift, and go to state 3
981
+ $default reduce using rule 106 (linebreak)
982
+
983
+ linebreak go to state 94
984
+ newline_list go to state 4
985
+
986
+ state 58
987
+
988
+ 13) pipeline : Bang pipe_sequence _
989
+ 15) pipe_sequence : pipe_sequence _ "|" linebreak command
990
+
991
+ "|" shift, and go to state 57
992
+ $default reduce using rule 13 (pipeline)
993
+
994
+
995
+ state 59
996
+
997
+ 18) command : compound_command redirect_list _
998
+ 21) redirect_list : redirect_list _ io_redirect
999
+
1000
+ IO_NUMBER shift, and go to state 37
1001
+ DGREAT shift, and go to state 43
1002
+ LESSGREAT shift, and go to state 44
1003
+ CLOBBER shift, and go to state 45
1004
+ DLESS shift, and go to state 39
1005
+ DLESSDASH shift, and go to state 40
1006
+ GREATAND shift, and go to state 46
1007
+ LESSAND shift, and go to state 47
1008
+ "<" shift, and go to state 41
1009
+ ">" shift, and go to state 42
1010
+ $default reduce using rule 18 (command)
1011
+
1012
+ io_redirect go to state 95
1013
+ io_file go to state 36
1014
+ io_here go to state 38
1015
+
1016
+ state 60
1017
+
1018
+ 20) redirect_list : io_redirect _
1019
+
1020
+ $default reduce using rule 20 (redirect_list)
1021
+
1022
+
1023
+ state 61
1024
+
1025
+ 22) function_definition : WORD "(" _ ")" linebreak compound_command
1026
+
1027
+ ")" shift, and go to state 96
1028
+
1029
+
1030
+ state 62
1031
+
1032
+ 30) brace_group : Lbrace compound_list _ Rbrace
1033
+
1034
+ Rbrace shift, and go to state 97
1035
+
1036
+
1037
+ state 63
1038
+
1039
+ 66) compound_list : linebreak _ term
1040
+ 67) compound_list : linebreak _ term separator
1041
+
1042
+ WORD shift, and go to state 17
1043
+ ASSIGNMENT_WORD shift, and go to state 35
1044
+ IO_NUMBER shift, and go to state 37
1045
+ DGREAT shift, and go to state 43
1046
+ LESSGREAT shift, and go to state 44
1047
+ CLOBBER shift, and go to state 45
1048
+ DLESS shift, and go to state 39
1049
+ DLESSDASH shift, and go to state 40
1050
+ GREATAND shift, and go to state 46
1051
+ LESSAND shift, and go to state 47
1052
+ If shift, and go to state 31
1053
+ Lbrace shift, and go to state 25
1054
+ Bang shift, and go to state 12
1055
+ While shift, and go to state 27
1056
+ Until shift, and go to state 28
1057
+ For shift, and go to state 29
1058
+ Case shift, and go to state 30
1059
+ "(" shift, and go to state 26
1060
+ "<" shift, and go to state 41
1061
+ ">" shift, and go to state 42
1062
+
1063
+ pipeline go to state 10
1064
+ and_or go to state 98
1065
+ pipe_sequence go to state 11
1066
+ command go to state 13
1067
+ simple_command go to state 14
1068
+ compound_command go to state 15
1069
+ function_definition go to state 16
1070
+ brace_group go to state 18
1071
+ subshell go to state 19
1072
+ if_clause go to state 20
1073
+ while_clause go to state 21
1074
+ until_clause go to state 22
1075
+ for_clause go to state 23
1076
+ case_clause go to state 24
1077
+ term go to state 99
1078
+ cmd_prefix go to state 32
1079
+ cmd_name go to state 33
1080
+ io_redirect go to state 34
1081
+ io_file go to state 36
1082
+ io_here go to state 38
1083
+
1084
+ state 64
1085
+
1086
+ 31) subshell : "(" compound_list _ ")"
1087
+
1088
+ ")" shift, and go to state 100
1089
+
1090
+
1091
+ state 65
1092
+
1093
+ 32) while_clause : While compound_list _ do_group
1094
+
1095
+ Do shift, and go to state 102
1096
+
1097
+ do_group go to state 101
1098
+
1099
+ state 66
1100
+
1101
+ 33) until_clause : Until compound_list _ do_group
1102
+
1103
+ Do shift, and go to state 102
1104
+
1105
+ do_group go to state 103
1106
+
1107
+ state 67
1108
+
1109
+ 35) for_clause : For name _ do_group
1110
+ 36) for_clause : For name _ sequential_sep do_group
1111
+ 37) for_clause : For name _ linebreak In sequential_sep do_group
1112
+ 38) for_clause : For name _ linebreak In wordlist sequential_sep do_group
1113
+
1114
+ NEWLINE shift, and go to state 3
1115
+ Do shift, and go to state 102
1116
+ ";" shift, and go to state 107
1117
+ $default reduce using rule 106 (linebreak)
1118
+
1119
+ do_group go to state 104
1120
+ sequential_sep go to state 105
1121
+ linebreak go to state 106
1122
+ newline_list go to state 108
1123
+
1124
+ state 68
1125
+
1126
+ 39) name : NAME _
1127
+
1128
+ $default reduce using rule 39 (name)
1129
+
1130
+
1131
+ state 69
1132
+
1133
+ 44) case_clause : Case WORD _ linebreak In linebreak case_list Esac
1134
+ 45) case_clause : Case WORD _ linebreak In linebreak case_list_ns Esac
1135
+ 46) case_clause : Case WORD _ linebreak In linebreak Esac
1136
+
1137
+ NEWLINE shift, and go to state 3
1138
+ $default reduce using rule 106 (linebreak)
1139
+
1140
+ linebreak go to state 109
1141
+ newline_list go to state 4
1142
+
1143
+ state 70
1144
+
1145
+ 61) if_clause : If compound_list _ Then compound_list else_part Fi
1146
+ 62) if_clause : If compound_list _ Then compound_list Fi
1147
+
1148
+ Then shift, and go to state 110
1149
+
1150
+
1151
+ state 71
1152
+
1153
+ 72) simple_command : cmd_prefix cmd_word _ cmd_suffix
1154
+ 73) simple_command : cmd_prefix cmd_word _
1155
+
1156
+ WORD shift, and go to state 77
1157
+ IO_NUMBER shift, and go to state 37
1158
+ DGREAT shift, and go to state 43
1159
+ LESSGREAT shift, and go to state 44
1160
+ CLOBBER shift, and go to state 45
1161
+ DLESS shift, and go to state 39
1162
+ DLESSDASH shift, and go to state 40
1163
+ GREATAND shift, and go to state 46
1164
+ LESSAND shift, and go to state 47
1165
+ "<" shift, and go to state 41
1166
+ ">" shift, and go to state 42
1167
+ $default reduce using rule 73 (simple_command)
1168
+
1169
+ cmd_suffix go to state 111
1170
+ io_redirect go to state 76
1171
+ io_file go to state 36
1172
+ io_here go to state 38
1173
+
1174
+ state 72
1175
+
1176
+ 78) cmd_word : WORD _
1177
+
1178
+ $default reduce using rule 78 (cmd_word)
1179
+
1180
+
1181
+ state 73
1182
+
1183
+ 80) cmd_prefix : cmd_prefix io_redirect _
1184
+
1185
+ $default reduce using rule 80 (cmd_prefix)
1186
+
1187
+
1188
+ state 74
1189
+
1190
+ 82) cmd_prefix : cmd_prefix ASSIGNMENT_WORD _
1191
+
1192
+ $default reduce using rule 82 (cmd_prefix)
1193
+
1194
+
1195
+ state 75
1196
+
1197
+ 75) simple_command : cmd_name cmd_suffix _
1198
+ 84) cmd_suffix : cmd_suffix _ io_redirect
1199
+ 86) cmd_suffix : cmd_suffix _ WORD
1200
+
1201
+ WORD shift, and go to state 113
1202
+ IO_NUMBER shift, and go to state 37
1203
+ DGREAT shift, and go to state 43
1204
+ LESSGREAT shift, and go to state 44
1205
+ CLOBBER shift, and go to state 45
1206
+ DLESS shift, and go to state 39
1207
+ DLESSDASH shift, and go to state 40
1208
+ GREATAND shift, and go to state 46
1209
+ LESSAND shift, and go to state 47
1210
+ "<" shift, and go to state 41
1211
+ ">" shift, and go to state 42
1212
+ $default reduce using rule 75 (simple_command)
1213
+
1214
+ io_redirect go to state 112
1215
+ io_file go to state 36
1216
+ io_here go to state 38
1217
+
1218
+ state 76
1219
+
1220
+ 83) cmd_suffix : io_redirect _
1221
+
1222
+ $default reduce using rule 83 (cmd_suffix)
1223
+
1224
+
1225
+ state 77
1226
+
1227
+ 85) cmd_suffix : WORD _
1228
+
1229
+ $default reduce using rule 85 (cmd_suffix)
1230
+
1231
+
1232
+ state 78
1233
+
1234
+ 88) io_redirect : IO_NUMBER io_file _
1235
+
1236
+ $default reduce using rule 88 (io_redirect)
1237
+
1238
+
1239
+ state 79
1240
+
1241
+ 90) io_redirect : IO_NUMBER io_here _
1242
+
1243
+ $default reduce using rule 90 (io_redirect)
1244
+
1245
+
1246
+ state 80
1247
+
1248
+ 91) io_here : DLESS WORD _
1249
+
1250
+ $default reduce using rule 91 (io_here)
1251
+
1252
+
1253
+ state 81
1254
+
1255
+ 92) io_here : DLESSDASH WORD _
1256
+
1257
+ $default reduce using rule 92 (io_here)
1258
+
1259
+
1260
+ state 82
1261
+
1262
+ 93) io_file : "<" filename _
1263
+
1264
+ $default reduce using rule 93 (io_file)
1265
+
1266
+
1267
+ state 83
1268
+
1269
+ 100) filename : WORD _
1270
+
1271
+ $default reduce using rule 100 (filename)
1272
+
1273
+
1274
+ state 84
1275
+
1276
+ 94) io_file : ">" filename _
1277
+
1278
+ $default reduce using rule 94 (io_file)
1279
+
1280
+
1281
+ state 85
1282
+
1283
+ 95) io_file : DGREAT filename _
1284
+
1285
+ $default reduce using rule 95 (io_file)
1286
+
1287
+
1288
+ state 86
1289
+
1290
+ 96) io_file : LESSGREAT filename _
1291
+
1292
+ $default reduce using rule 96 (io_file)
1293
+
1294
+
1295
+ state 87
1296
+
1297
+ 97) io_file : CLOBBER filename _
1298
+
1299
+ $default reduce using rule 97 (io_file)
1300
+
1301
+
1302
+ state 88
1303
+
1304
+ 98) io_file : GREATAND filename _
1305
+
1306
+ $default reduce using rule 98 (io_file)
1307
+
1308
+
1309
+ state 89
1310
+
1311
+ 99) io_file : LESSAND filename _
1312
+
1313
+ $default reduce using rule 99 (io_file)
1314
+
1315
+
1316
+ state 90
1317
+
1318
+ 4) complete_commands : complete_commands newline_list complete_command _
1319
+
1320
+ $default reduce using rule 4 (complete_commands)
1321
+
1322
+
1323
+ state 91
1324
+
1325
+ 7) list : list separator_op and_or _
1326
+ 10) and_or : and_or _ AND_IF linebreak pipeline
1327
+ 11) and_or : and_or _ OR_IF linebreak pipeline
1328
+
1329
+ AND_IF shift, and go to state 55
1330
+ OR_IF shift, and go to state 56
1331
+ $default reduce using rule 7 (list)
1332
+
1333
+
1334
+ state 92
1335
+
1336
+ 10) and_or : and_or AND_IF linebreak _ pipeline
1337
+
1338
+ WORD shift, and go to state 17
1339
+ ASSIGNMENT_WORD shift, and go to state 35
1340
+ IO_NUMBER shift, and go to state 37
1341
+ DGREAT shift, and go to state 43
1342
+ LESSGREAT shift, and go to state 44
1343
+ CLOBBER shift, and go to state 45
1344
+ DLESS shift, and go to state 39
1345
+ DLESSDASH shift, and go to state 40
1346
+ GREATAND shift, and go to state 46
1347
+ LESSAND shift, and go to state 47
1348
+ If shift, and go to state 31
1349
+ Lbrace shift, and go to state 25
1350
+ Bang shift, and go to state 12
1351
+ While shift, and go to state 27
1352
+ Until shift, and go to state 28
1353
+ For shift, and go to state 29
1354
+ Case shift, and go to state 30
1355
+ "(" shift, and go to state 26
1356
+ "<" shift, and go to state 41
1357
+ ">" shift, and go to state 42
1358
+
1359
+ pipeline go to state 114
1360
+ pipe_sequence go to state 11
1361
+ command go to state 13
1362
+ simple_command go to state 14
1363
+ compound_command go to state 15
1364
+ function_definition go to state 16
1365
+ brace_group go to state 18
1366
+ subshell go to state 19
1367
+ if_clause go to state 20
1368
+ while_clause go to state 21
1369
+ until_clause go to state 22
1370
+ for_clause go to state 23
1371
+ case_clause go to state 24
1372
+ cmd_prefix go to state 32
1373
+ cmd_name go to state 33
1374
+ io_redirect go to state 34
1375
+ io_file go to state 36
1376
+ io_here go to state 38
1377
+
1378
+ state 93
1379
+
1380
+ 11) and_or : and_or OR_IF linebreak _ pipeline
1381
+
1382
+ WORD shift, and go to state 17
1383
+ ASSIGNMENT_WORD shift, and go to state 35
1384
+ IO_NUMBER shift, and go to state 37
1385
+ DGREAT shift, and go to state 43
1386
+ LESSGREAT shift, and go to state 44
1387
+ CLOBBER shift, and go to state 45
1388
+ DLESS shift, and go to state 39
1389
+ DLESSDASH shift, and go to state 40
1390
+ GREATAND shift, and go to state 46
1391
+ LESSAND shift, and go to state 47
1392
+ If shift, and go to state 31
1393
+ Lbrace shift, and go to state 25
1394
+ Bang shift, and go to state 12
1395
+ While shift, and go to state 27
1396
+ Until shift, and go to state 28
1397
+ For shift, and go to state 29
1398
+ Case shift, and go to state 30
1399
+ "(" shift, and go to state 26
1400
+ "<" shift, and go to state 41
1401
+ ">" shift, and go to state 42
1402
+
1403
+ pipeline go to state 115
1404
+ pipe_sequence go to state 11
1405
+ command go to state 13
1406
+ simple_command go to state 14
1407
+ compound_command go to state 15
1408
+ function_definition go to state 16
1409
+ brace_group go to state 18
1410
+ subshell go to state 19
1411
+ if_clause go to state 20
1412
+ while_clause go to state 21
1413
+ until_clause go to state 22
1414
+ for_clause go to state 23
1415
+ case_clause go to state 24
1416
+ cmd_prefix go to state 32
1417
+ cmd_name go to state 33
1418
+ io_redirect go to state 34
1419
+ io_file go to state 36
1420
+ io_here go to state 38
1421
+
1422
+ state 94
1423
+
1424
+ 15) pipe_sequence : pipe_sequence "|" linebreak _ command
1425
+
1426
+ WORD shift, and go to state 17
1427
+ ASSIGNMENT_WORD shift, and go to state 35
1428
+ IO_NUMBER shift, and go to state 37
1429
+ DGREAT shift, and go to state 43
1430
+ LESSGREAT shift, and go to state 44
1431
+ CLOBBER shift, and go to state 45
1432
+ DLESS shift, and go to state 39
1433
+ DLESSDASH shift, and go to state 40
1434
+ GREATAND shift, and go to state 46
1435
+ LESSAND shift, and go to state 47
1436
+ If shift, and go to state 31
1437
+ Lbrace shift, and go to state 25
1438
+ While shift, and go to state 27
1439
+ Until shift, and go to state 28
1440
+ For shift, and go to state 29
1441
+ Case shift, and go to state 30
1442
+ "(" shift, and go to state 26
1443
+ "<" shift, and go to state 41
1444
+ ">" shift, and go to state 42
1445
+
1446
+ command go to state 116
1447
+ simple_command go to state 14
1448
+ compound_command go to state 15
1449
+ function_definition go to state 16
1450
+ brace_group go to state 18
1451
+ subshell go to state 19
1452
+ if_clause go to state 20
1453
+ while_clause go to state 21
1454
+ until_clause go to state 22
1455
+ for_clause go to state 23
1456
+ case_clause go to state 24
1457
+ cmd_prefix go to state 32
1458
+ cmd_name go to state 33
1459
+ io_redirect go to state 34
1460
+ io_file go to state 36
1461
+ io_here go to state 38
1462
+
1463
+ state 95
1464
+
1465
+ 21) redirect_list : redirect_list io_redirect _
1466
+
1467
+ $default reduce using rule 21 (redirect_list)
1468
+
1469
+
1470
+ state 96
1471
+
1472
+ 22) function_definition : WORD "(" ")" _ linebreak compound_command
1473
+
1474
+ NEWLINE shift, and go to state 3
1475
+ $default reduce using rule 106 (linebreak)
1476
+
1477
+ linebreak go to state 117
1478
+ newline_list go to state 4
1479
+
1480
+ state 97
1481
+
1482
+ 30) brace_group : Lbrace compound_list Rbrace _
1483
+
1484
+ $default reduce using rule 30 (brace_group)
1485
+
1486
+
1487
+ state 98
1488
+
1489
+ 10) and_or : and_or _ AND_IF linebreak pipeline
1490
+ 11) and_or : and_or _ OR_IF linebreak pipeline
1491
+ 69) term : and_or _
1492
+
1493
+ AND_IF shift, and go to state 55
1494
+ OR_IF shift, and go to state 56
1495
+ $default reduce using rule 69 (term)
1496
+
1497
+
1498
+ state 99
1499
+
1500
+ 66) compound_list : linebreak term _
1501
+ 67) compound_list : linebreak term _ separator
1502
+ 68) term : term _ separator and_or
1503
+
1504
+ NEWLINE shift, and go to state 3
1505
+ ";" shift, and go to state 54
1506
+ "&" shift, and go to state 53
1507
+ $default reduce using rule 66 (compound_list)
1508
+
1509
+ separator go to state 118
1510
+ separator_op go to state 119
1511
+ newline_list go to state 120
1512
+
1513
+ state 100
1514
+
1515
+ 31) subshell : "(" compound_list ")" _
1516
+
1517
+ $default reduce using rule 31 (subshell)
1518
+
1519
+
1520
+ state 101
1521
+
1522
+ 32) while_clause : While compound_list do_group _
1523
+
1524
+ $default reduce using rule 32 (while_clause)
1525
+
1526
+
1527
+ state 102
1528
+
1529
+ 34) do_group : Do _ compound_list Done
1530
+
1531
+ NEWLINE shift, and go to state 3
1532
+ $default reduce using rule 106 (linebreak)
1533
+
1534
+ compound_list go to state 121
1535
+ linebreak go to state 63
1536
+ newline_list go to state 4
1537
+
1538
+ state 103
1539
+
1540
+ 33) until_clause : Until compound_list do_group _
1541
+
1542
+ $default reduce using rule 33 (until_clause)
1543
+
1544
+
1545
+ state 104
1546
+
1547
+ 35) for_clause : For name do_group _
1548
+
1549
+ $default reduce using rule 35 (for_clause)
1550
+
1551
+
1552
+ state 105
1553
+
1554
+ 36) for_clause : For name sequential_sep _ do_group
1555
+
1556
+ Do shift, and go to state 102
1557
+
1558
+ do_group go to state 122
1559
+
1560
+ state 106
1561
+
1562
+ 37) for_clause : For name linebreak _ In sequential_sep do_group
1563
+ 38) for_clause : For name linebreak _ In wordlist sequential_sep do_group
1564
+
1565
+ In shift, and go to state 123
1566
+
1567
+
1568
+ state 107
1569
+
1570
+ 42) sequential_sep : ";" _ linebreak
1571
+
1572
+ NEWLINE shift, and go to state 3
1573
+ $default reduce using rule 106 (linebreak)
1574
+
1575
+ linebreak go to state 124
1576
+ newline_list go to state 4
1577
+
1578
+ state 108
1579
+
1580
+ 43) sequential_sep : newline_list _
1581
+ 104) newline_list : newline_list _ NEWLINE
1582
+ 105) linebreak : newline_list _
1583
+
1584
+ NEWLINE shift, and go to state 48
1585
+ In reduce using rule 105 (linebreak)
1586
+ $default reduce using rule 43 (sequential_sep)
1587
+
1588
+
1589
+ state 109
1590
+
1591
+ 44) case_clause : Case WORD linebreak _ In linebreak case_list Esac
1592
+ 45) case_clause : Case WORD linebreak _ In linebreak case_list_ns Esac
1593
+ 46) case_clause : Case WORD linebreak _ In linebreak Esac
1594
+
1595
+ In shift, and go to state 125
1596
+
1597
+
1598
+ state 110
1599
+
1600
+ 61) if_clause : If compound_list Then _ compound_list else_part Fi
1601
+ 62) if_clause : If compound_list Then _ compound_list Fi
1602
+
1603
+ NEWLINE shift, and go to state 3
1604
+ $default reduce using rule 106 (linebreak)
1605
+
1606
+ compound_list go to state 126
1607
+ linebreak go to state 63
1608
+ newline_list go to state 4
1609
+
1610
+ state 111
1611
+
1612
+ 72) simple_command : cmd_prefix cmd_word cmd_suffix _
1613
+ 84) cmd_suffix : cmd_suffix _ io_redirect
1614
+ 86) cmd_suffix : cmd_suffix _ WORD
1615
+
1616
+ WORD shift, and go to state 113
1617
+ IO_NUMBER shift, and go to state 37
1618
+ DGREAT shift, and go to state 43
1619
+ LESSGREAT shift, and go to state 44
1620
+ CLOBBER shift, and go to state 45
1621
+ DLESS shift, and go to state 39
1622
+ DLESSDASH shift, and go to state 40
1623
+ GREATAND shift, and go to state 46
1624
+ LESSAND shift, and go to state 47
1625
+ "<" shift, and go to state 41
1626
+ ">" shift, and go to state 42
1627
+ $default reduce using rule 72 (simple_command)
1628
+
1629
+ io_redirect go to state 112
1630
+ io_file go to state 36
1631
+ io_here go to state 38
1632
+
1633
+ state 112
1634
+
1635
+ 84) cmd_suffix : cmd_suffix io_redirect _
1636
+
1637
+ $default reduce using rule 84 (cmd_suffix)
1638
+
1639
+
1640
+ state 113
1641
+
1642
+ 86) cmd_suffix : cmd_suffix WORD _
1643
+
1644
+ $default reduce using rule 86 (cmd_suffix)
1645
+
1646
+
1647
+ state 114
1648
+
1649
+ 10) and_or : and_or AND_IF linebreak pipeline _
1650
+
1651
+ $default reduce using rule 10 (and_or)
1652
+
1653
+
1654
+ state 115
1655
+
1656
+ 11) and_or : and_or OR_IF linebreak pipeline _
1657
+
1658
+ $default reduce using rule 11 (and_or)
1659
+
1660
+
1661
+ state 116
1662
+
1663
+ 15) pipe_sequence : pipe_sequence "|" linebreak command _
1664
+
1665
+ $default reduce using rule 15 (pipe_sequence)
1666
+
1667
+
1668
+ state 117
1669
+
1670
+ 22) function_definition : WORD "(" ")" linebreak _ compound_command
1671
+
1672
+ If shift, and go to state 31
1673
+ Lbrace shift, and go to state 25
1674
+ While shift, and go to state 27
1675
+ Until shift, and go to state 28
1676
+ For shift, and go to state 29
1677
+ Case shift, and go to state 30
1678
+ "(" shift, and go to state 26
1679
+
1680
+ compound_command go to state 127
1681
+ brace_group go to state 18
1682
+ subshell go to state 19
1683
+ if_clause go to state 20
1684
+ while_clause go to state 21
1685
+ until_clause go to state 22
1686
+ for_clause go to state 23
1687
+ case_clause go to state 24
1688
+
1689
+ state 118
1690
+
1691
+ 67) compound_list : linebreak term separator _
1692
+ 68) term : term separator _ and_or
1693
+
1694
+ WORD shift, and go to state 17
1695
+ ASSIGNMENT_WORD shift, and go to state 35
1696
+ IO_NUMBER shift, and go to state 37
1697
+ DGREAT shift, and go to state 43
1698
+ LESSGREAT shift, and go to state 44
1699
+ CLOBBER shift, and go to state 45
1700
+ DLESS shift, and go to state 39
1701
+ DLESSDASH shift, and go to state 40
1702
+ GREATAND shift, and go to state 46
1703
+ LESSAND shift, and go to state 47
1704
+ If shift, and go to state 31
1705
+ Lbrace shift, and go to state 25
1706
+ Bang shift, and go to state 12
1707
+ While shift, and go to state 27
1708
+ Until shift, and go to state 28
1709
+ For shift, and go to state 29
1710
+ Case shift, and go to state 30
1711
+ "(" shift, and go to state 26
1712
+ "<" shift, and go to state 41
1713
+ ">" shift, and go to state 42
1714
+ $default reduce using rule 67 (compound_list)
1715
+
1716
+ pipeline go to state 10
1717
+ and_or go to state 128
1718
+ pipe_sequence go to state 11
1719
+ command go to state 13
1720
+ simple_command go to state 14
1721
+ compound_command go to state 15
1722
+ function_definition go to state 16
1723
+ brace_group go to state 18
1724
+ subshell go to state 19
1725
+ if_clause go to state 20
1726
+ while_clause go to state 21
1727
+ until_clause go to state 22
1728
+ for_clause go to state 23
1729
+ case_clause go to state 24
1730
+ cmd_prefix go to state 32
1731
+ cmd_name go to state 33
1732
+ io_redirect go to state 34
1733
+ io_file go to state 36
1734
+ io_here go to state 38
1735
+
1736
+ state 119
1737
+
1738
+ 70) separator : separator_op _ linebreak
1739
+
1740
+ NEWLINE shift, and go to state 3
1741
+ $default reduce using rule 106 (linebreak)
1742
+
1743
+ linebreak go to state 129
1744
+ newline_list go to state 4
1745
+
1746
+ state 120
1747
+
1748
+ 71) separator : newline_list _
1749
+ 104) newline_list : newline_list _ NEWLINE
1750
+
1751
+ NEWLINE shift, and go to state 48
1752
+ $default reduce using rule 71 (separator)
1753
+
1754
+
1755
+ state 121
1756
+
1757
+ 34) do_group : Do compound_list _ Done
1758
+
1759
+ Done shift, and go to state 130
1760
+
1761
+
1762
+ state 122
1763
+
1764
+ 36) for_clause : For name sequential_sep do_group _
1765
+
1766
+ $default reduce using rule 36 (for_clause)
1767
+
1768
+
1769
+ state 123
1770
+
1771
+ 37) for_clause : For name linebreak In _ sequential_sep do_group
1772
+ 38) for_clause : For name linebreak In _ wordlist sequential_sep do_group
1773
+
1774
+ WORD shift, and go to state 133
1775
+ NEWLINE shift, and go to state 3
1776
+ ";" shift, and go to state 107
1777
+
1778
+ sequential_sep go to state 131
1779
+ wordlist go to state 132
1780
+ newline_list go to state 134
1781
+
1782
+ state 124
1783
+
1784
+ 42) sequential_sep : ";" linebreak _
1785
+
1786
+ $default reduce using rule 42 (sequential_sep)
1787
+
1788
+
1789
+ state 125
1790
+
1791
+ 44) case_clause : Case WORD linebreak In _ linebreak case_list Esac
1792
+ 45) case_clause : Case WORD linebreak In _ linebreak case_list_ns Esac
1793
+ 46) case_clause : Case WORD linebreak In _ linebreak Esac
1794
+
1795
+ NEWLINE shift, and go to state 3
1796
+ $default reduce using rule 106 (linebreak)
1797
+
1798
+ linebreak go to state 135
1799
+ newline_list go to state 4
1800
+
1801
+ state 126
1802
+
1803
+ 61) if_clause : If compound_list Then compound_list _ else_part Fi
1804
+ 62) if_clause : If compound_list Then compound_list _ Fi
1805
+
1806
+ Else shift, and go to state 139
1807
+ Elif shift, and go to state 138
1808
+ Fi shift, and go to state 137
1809
+
1810
+ else_part go to state 136
1811
+
1812
+ state 127
1813
+
1814
+ 22) function_definition : WORD "(" ")" linebreak compound_command _
1815
+
1816
+ $default reduce using rule 22 (function_definition)
1817
+
1818
+
1819
+ state 128
1820
+
1821
+ 10) and_or : and_or _ AND_IF linebreak pipeline
1822
+ 11) and_or : and_or _ OR_IF linebreak pipeline
1823
+ 68) term : term separator and_or _
1824
+
1825
+ AND_IF shift, and go to state 55
1826
+ OR_IF shift, and go to state 56
1827
+ $default reduce using rule 68 (term)
1828
+
1829
+
1830
+ state 129
1831
+
1832
+ 70) separator : separator_op linebreak _
1833
+
1834
+ $default reduce using rule 70 (separator)
1835
+
1836
+
1837
+ state 130
1838
+
1839
+ 34) do_group : Do compound_list Done _
1840
+
1841
+ $default reduce using rule 34 (do_group)
1842
+
1843
+
1844
+ state 131
1845
+
1846
+ 37) for_clause : For name linebreak In sequential_sep _ do_group
1847
+
1848
+ Do shift, and go to state 102
1849
+
1850
+ do_group go to state 140
1851
+
1852
+ state 132
1853
+
1854
+ 38) for_clause : For name linebreak In wordlist _ sequential_sep do_group
1855
+ 41) wordlist : wordlist _ WORD
1856
+
1857
+ WORD shift, and go to state 142
1858
+ NEWLINE shift, and go to state 3
1859
+ ";" shift, and go to state 107
1860
+
1861
+ sequential_sep go to state 141
1862
+ newline_list go to state 134
1863
+
1864
+ state 133
1865
+
1866
+ 40) wordlist : WORD _
1867
+
1868
+ $default reduce using rule 40 (wordlist)
1869
+
1870
+
1871
+ state 134
1872
+
1873
+ 43) sequential_sep : newline_list _
1874
+ 104) newline_list : newline_list _ NEWLINE
1875
+
1876
+ NEWLINE shift, and go to state 48
1877
+ $default reduce using rule 43 (sequential_sep)
1878
+
1879
+
1880
+ state 135
1881
+
1882
+ 44) case_clause : Case WORD linebreak In linebreak _ case_list Esac
1883
+ 45) case_clause : Case WORD linebreak In linebreak _ case_list_ns Esac
1884
+ 46) case_clause : Case WORD linebreak In linebreak _ Esac
1885
+
1886
+ WORD shift, and go to state 150
1887
+ Esac shift, and go to state 145
1888
+ "(" shift, and go to state 149
1889
+
1890
+ case_list go to state 143
1891
+ case_list_ns go to state 144
1892
+ case_item go to state 146
1893
+ case_item_ns go to state 147
1894
+ patterns go to state 148
1895
+
1896
+ state 136
1897
+
1898
+ 61) if_clause : If compound_list Then compound_list else_part _ Fi
1899
+
1900
+ Fi shift, and go to state 151
1901
+
1902
+
1903
+ state 137
1904
+
1905
+ 62) if_clause : If compound_list Then compound_list Fi _
1906
+
1907
+ $default reduce using rule 62 (if_clause)
1908
+
1909
+
1910
+ state 138
1911
+
1912
+ 63) else_part : Elif _ compound_list Then compound_list
1913
+ 64) else_part : Elif _ compound_list Then compound_list else_part
1914
+
1915
+ NEWLINE shift, and go to state 3
1916
+ $default reduce using rule 106 (linebreak)
1917
+
1918
+ compound_list go to state 152
1919
+ linebreak go to state 63
1920
+ newline_list go to state 4
1921
+
1922
+ state 139
1923
+
1924
+ 65) else_part : Else _ compound_list
1925
+
1926
+ NEWLINE shift, and go to state 3
1927
+ $default reduce using rule 106 (linebreak)
1928
+
1929
+ compound_list go to state 153
1930
+ linebreak go to state 63
1931
+ newline_list go to state 4
1932
+
1933
+ state 140
1934
+
1935
+ 37) for_clause : For name linebreak In sequential_sep do_group _
1936
+
1937
+ $default reduce using rule 37 (for_clause)
1938
+
1939
+
1940
+ state 141
1941
+
1942
+ 38) for_clause : For name linebreak In wordlist sequential_sep _ do_group
1943
+
1944
+ Do shift, and go to state 102
1945
+
1946
+ do_group go to state 154
1947
+
1948
+ state 142
1949
+
1950
+ 41) wordlist : wordlist WORD _
1951
+
1952
+ $default reduce using rule 41 (wordlist)
1953
+
1954
+
1955
+ state 143
1956
+
1957
+ 44) case_clause : Case WORD linebreak In linebreak case_list _ Esac
1958
+ 48) case_list : case_list _ case_item
1959
+ 50) case_list_ns : case_list _ case_item_ns
1960
+
1961
+ WORD shift, and go to state 150
1962
+ Esac shift, and go to state 155
1963
+ "(" shift, and go to state 149
1964
+
1965
+ case_item go to state 156
1966
+ case_item_ns go to state 157
1967
+ patterns go to state 148
1968
+
1969
+ state 144
1970
+
1971
+ 45) case_clause : Case WORD linebreak In linebreak case_list_ns _ Esac
1972
+
1973
+ Esac shift, and go to state 158
1974
+
1975
+
1976
+ state 145
1977
+
1978
+ 46) case_clause : Case WORD linebreak In linebreak Esac _
1979
+
1980
+ $default reduce using rule 46 (case_clause)
1981
+
1982
+
1983
+ state 146
1984
+
1985
+ 47) case_list : case_item _
1986
+
1987
+ $default reduce using rule 47 (case_list)
1988
+
1989
+
1990
+ state 147
1991
+
1992
+ 49) case_list_ns : case_item_ns _
1993
+
1994
+ $default reduce using rule 49 (case_list_ns)
1995
+
1996
+
1997
+ state 148
1998
+
1999
+ 51) case_item : patterns _ ")" compound_list DSEMI linebreak
2000
+ 52) case_item : patterns _ ")" linebreak DSEMI linebreak
2001
+ 55) case_item_ns : patterns _ ")" compound_list
2002
+ 56) case_item_ns : patterns _ ")" linebreak
2003
+ 60) patterns : patterns _ "|" WORD
2004
+
2005
+ "|" shift, and go to state 160
2006
+ ")" shift, and go to state 159
2007
+
2008
+
2009
+ state 149
2010
+
2011
+ 53) case_item : "(" _ patterns ")" compound_list DSEMI linebreak
2012
+ 54) case_item : "(" _ patterns ")" linebreak DSEMI linebreak
2013
+ 57) case_item_ns : "(" _ patterns ")" compound_list
2014
+ 58) case_item_ns : "(" _ patterns ")" linebreak
2015
+
2016
+ WORD shift, and go to state 150
2017
+
2018
+ patterns go to state 161
2019
+
2020
+ state 150
2021
+
2022
+ 59) patterns : WORD _
2023
+
2024
+ $default reduce using rule 59 (patterns)
2025
+
2026
+
2027
+ state 151
2028
+
2029
+ 61) if_clause : If compound_list Then compound_list else_part Fi _
2030
+
2031
+ $default reduce using rule 61 (if_clause)
2032
+
2033
+
2034
+ state 152
2035
+
2036
+ 63) else_part : Elif compound_list _ Then compound_list
2037
+ 64) else_part : Elif compound_list _ Then compound_list else_part
2038
+
2039
+ Then shift, and go to state 162
2040
+
2041
+
2042
+ state 153
2043
+
2044
+ 65) else_part : Else compound_list _
2045
+
2046
+ $default reduce using rule 65 (else_part)
2047
+
2048
+
2049
+ state 154
2050
+
2051
+ 38) for_clause : For name linebreak In wordlist sequential_sep do_group _
2052
+
2053
+ $default reduce using rule 38 (for_clause)
2054
+
2055
+
2056
+ state 155
2057
+
2058
+ 44) case_clause : Case WORD linebreak In linebreak case_list Esac _
2059
+
2060
+ $default reduce using rule 44 (case_clause)
2061
+
2062
+
2063
+ state 156
2064
+
2065
+ 48) case_list : case_list case_item _
2066
+
2067
+ $default reduce using rule 48 (case_list)
2068
+
2069
+
2070
+ state 157
2071
+
2072
+ 50) case_list_ns : case_list case_item_ns _
2073
+
2074
+ $default reduce using rule 50 (case_list_ns)
2075
+
2076
+
2077
+ state 158
2078
+
2079
+ 45) case_clause : Case WORD linebreak In linebreak case_list_ns Esac _
2080
+
2081
+ $default reduce using rule 45 (case_clause)
2082
+
2083
+
2084
+ state 159
2085
+
2086
+ 51) case_item : patterns ")" _ compound_list DSEMI linebreak
2087
+ 52) case_item : patterns ")" _ linebreak DSEMI linebreak
2088
+ 55) case_item_ns : patterns ")" _ compound_list
2089
+ 56) case_item_ns : patterns ")" _ linebreak
2090
+
2091
+ NEWLINE shift, and go to state 3
2092
+ $default reduce using rule 106 (linebreak)
2093
+
2094
+ compound_list go to state 163
2095
+ linebreak go to state 164
2096
+ newline_list go to state 4
2097
+
2098
+ state 160
2099
+
2100
+ 60) patterns : patterns "|" _ WORD
2101
+
2102
+ WORD shift, and go to state 165
2103
+
2104
+
2105
+ state 161
2106
+
2107
+ 53) case_item : "(" patterns _ ")" compound_list DSEMI linebreak
2108
+ 54) case_item : "(" patterns _ ")" linebreak DSEMI linebreak
2109
+ 57) case_item_ns : "(" patterns _ ")" compound_list
2110
+ 58) case_item_ns : "(" patterns _ ")" linebreak
2111
+ 60) patterns : patterns _ "|" WORD
2112
+
2113
+ "|" shift, and go to state 160
2114
+ ")" shift, and go to state 166
2115
+
2116
+
2117
+ state 162
2118
+
2119
+ 63) else_part : Elif compound_list Then _ compound_list
2120
+ 64) else_part : Elif compound_list Then _ compound_list else_part
2121
+
2122
+ NEWLINE shift, and go to state 3
2123
+ $default reduce using rule 106 (linebreak)
2124
+
2125
+ compound_list go to state 167
2126
+ linebreak go to state 63
2127
+ newline_list go to state 4
2128
+
2129
+ state 163
2130
+
2131
+ 51) case_item : patterns ")" compound_list _ DSEMI linebreak
2132
+ 55) case_item_ns : patterns ")" compound_list _
2133
+
2134
+ DSEMI shift, and go to state 168
2135
+ $default reduce using rule 55 (case_item_ns)
2136
+
2137
+
2138
+ state 164
2139
+
2140
+ 52) case_item : patterns ")" linebreak _ DSEMI linebreak
2141
+ 56) case_item_ns : patterns ")" linebreak _
2142
+ 66) compound_list : linebreak _ term
2143
+ 67) compound_list : linebreak _ term separator
2144
+
2145
+ WORD shift, and go to state 17
2146
+ ASSIGNMENT_WORD shift, and go to state 35
2147
+ IO_NUMBER shift, and go to state 37
2148
+ DGREAT shift, and go to state 43
2149
+ LESSGREAT shift, and go to state 44
2150
+ CLOBBER shift, and go to state 45
2151
+ DLESS shift, and go to state 39
2152
+ DLESSDASH shift, and go to state 40
2153
+ GREATAND shift, and go to state 46
2154
+ LESSAND shift, and go to state 47
2155
+ If shift, and go to state 31
2156
+ Lbrace shift, and go to state 25
2157
+ Bang shift, and go to state 12
2158
+ While shift, and go to state 27
2159
+ Until shift, and go to state 28
2160
+ For shift, and go to state 29
2161
+ Case shift, and go to state 30
2162
+ DSEMI shift, and go to state 169
2163
+ "(" shift, and go to state 26
2164
+ "<" shift, and go to state 41
2165
+ ">" shift, and go to state 42
2166
+ $default reduce using rule 56 (case_item_ns)
2167
+
2168
+ pipeline go to state 10
2169
+ and_or go to state 98
2170
+ pipe_sequence go to state 11
2171
+ command go to state 13
2172
+ simple_command go to state 14
2173
+ compound_command go to state 15
2174
+ function_definition go to state 16
2175
+ brace_group go to state 18
2176
+ subshell go to state 19
2177
+ if_clause go to state 20
2178
+ while_clause go to state 21
2179
+ until_clause go to state 22
2180
+ for_clause go to state 23
2181
+ case_clause go to state 24
2182
+ term go to state 99
2183
+ cmd_prefix go to state 32
2184
+ cmd_name go to state 33
2185
+ io_redirect go to state 34
2186
+ io_file go to state 36
2187
+ io_here go to state 38
2188
+
2189
+ state 165
2190
+
2191
+ 60) patterns : patterns "|" WORD _
2192
+
2193
+ $default reduce using rule 60 (patterns)
2194
+
2195
+
2196
+ state 166
2197
+
2198
+ 53) case_item : "(" patterns ")" _ compound_list DSEMI linebreak
2199
+ 54) case_item : "(" patterns ")" _ linebreak DSEMI linebreak
2200
+ 57) case_item_ns : "(" patterns ")" _ compound_list
2201
+ 58) case_item_ns : "(" patterns ")" _ linebreak
2202
+
2203
+ NEWLINE shift, and go to state 3
2204
+ $default reduce using rule 106 (linebreak)
2205
+
2206
+ compound_list go to state 170
2207
+ linebreak go to state 171
2208
+ newline_list go to state 4
2209
+
2210
+ state 167
2211
+
2212
+ 63) else_part : Elif compound_list Then compound_list _
2213
+ 64) else_part : Elif compound_list Then compound_list _ else_part
2214
+
2215
+ Else shift, and go to state 139
2216
+ Elif shift, and go to state 138
2217
+ $default reduce using rule 63 (else_part)
2218
+
2219
+ else_part go to state 172
2220
+
2221
+ state 168
2222
+
2223
+ 51) case_item : patterns ")" compound_list DSEMI _ linebreak
2224
+
2225
+ NEWLINE shift, and go to state 3
2226
+ $default reduce using rule 106 (linebreak)
2227
+
2228
+ linebreak go to state 173
2229
+ newline_list go to state 4
2230
+
2231
+ state 169
2232
+
2233
+ 52) case_item : patterns ")" linebreak DSEMI _ linebreak
2234
+
2235
+ NEWLINE shift, and go to state 3
2236
+ $default reduce using rule 106 (linebreak)
2237
+
2238
+ linebreak go to state 174
2239
+ newline_list go to state 4
2240
+
2241
+ state 170
2242
+
2243
+ 53) case_item : "(" patterns ")" compound_list _ DSEMI linebreak
2244
+ 57) case_item_ns : "(" patterns ")" compound_list _
2245
+
2246
+ DSEMI shift, and go to state 175
2247
+ $default reduce using rule 57 (case_item_ns)
2248
+
2249
+
2250
+ state 171
2251
+
2252
+ 54) case_item : "(" patterns ")" linebreak _ DSEMI linebreak
2253
+ 58) case_item_ns : "(" patterns ")" linebreak _
2254
+ 66) compound_list : linebreak _ term
2255
+ 67) compound_list : linebreak _ term separator
2256
+
2257
+ WORD shift, and go to state 17
2258
+ ASSIGNMENT_WORD shift, and go to state 35
2259
+ IO_NUMBER shift, and go to state 37
2260
+ DGREAT shift, and go to state 43
2261
+ LESSGREAT shift, and go to state 44
2262
+ CLOBBER shift, and go to state 45
2263
+ DLESS shift, and go to state 39
2264
+ DLESSDASH shift, and go to state 40
2265
+ GREATAND shift, and go to state 46
2266
+ LESSAND shift, and go to state 47
2267
+ If shift, and go to state 31
2268
+ Lbrace shift, and go to state 25
2269
+ Bang shift, and go to state 12
2270
+ While shift, and go to state 27
2271
+ Until shift, and go to state 28
2272
+ For shift, and go to state 29
2273
+ Case shift, and go to state 30
2274
+ DSEMI shift, and go to state 176
2275
+ "(" shift, and go to state 26
2276
+ "<" shift, and go to state 41
2277
+ ">" shift, and go to state 42
2278
+ $default reduce using rule 58 (case_item_ns)
2279
+
2280
+ pipeline go to state 10
2281
+ and_or go to state 98
2282
+ pipe_sequence go to state 11
2283
+ command go to state 13
2284
+ simple_command go to state 14
2285
+ compound_command go to state 15
2286
+ function_definition go to state 16
2287
+ brace_group go to state 18
2288
+ subshell go to state 19
2289
+ if_clause go to state 20
2290
+ while_clause go to state 21
2291
+ until_clause go to state 22
2292
+ for_clause go to state 23
2293
+ case_clause go to state 24
2294
+ term go to state 99
2295
+ cmd_prefix go to state 32
2296
+ cmd_name go to state 33
2297
+ io_redirect go to state 34
2298
+ io_file go to state 36
2299
+ io_here go to state 38
2300
+
2301
+ state 172
2302
+
2303
+ 64) else_part : Elif compound_list Then compound_list else_part _
2304
+
2305
+ $default reduce using rule 64 (else_part)
2306
+
2307
+
2308
+ state 173
2309
+
2310
+ 51) case_item : patterns ")" compound_list DSEMI linebreak _
2311
+
2312
+ $default reduce using rule 51 (case_item)
2313
+
2314
+
2315
+ state 174
2316
+
2317
+ 52) case_item : patterns ")" linebreak DSEMI linebreak _
2318
+
2319
+ $default reduce using rule 52 (case_item)
2320
+
2321
+
2322
+ state 175
2323
+
2324
+ 53) case_item : "(" patterns ")" compound_list DSEMI _ linebreak
2325
+
2326
+ NEWLINE shift, and go to state 3
2327
+ $default reduce using rule 106 (linebreak)
2328
+
2329
+ linebreak go to state 177
2330
+ newline_list go to state 4
2331
+
2332
+ state 176
2333
+
2334
+ 54) case_item : "(" patterns ")" linebreak DSEMI _ linebreak
2335
+
2336
+ NEWLINE shift, and go to state 3
2337
+ $default reduce using rule 106 (linebreak)
2338
+
2339
+ linebreak go to state 178
2340
+ newline_list go to state 4
2341
+
2342
+ state 177
2343
+
2344
+ 53) case_item : "(" patterns ")" compound_list DSEMI linebreak _
2345
+
2346
+ $default reduce using rule 53 (case_item)
2347
+
2348
+
2349
+ state 178
2350
+
2351
+ 54) case_item : "(" patterns ")" linebreak DSEMI linebreak _
2352
+
2353
+ $default reduce using rule 54 (case_item)
2354
+