Andrew Hlynskyi
3243c9ab73
fix: escaped newline immediately after a char, resolves #100 ( #102 )
2021-09-21 21:30:05 -07:00
Kenneth Skovhus
8ece09ca4c
Add support for case fallthrough ( #85 )
...
Fixes https://github.com/tree-sitter/tree-sitter-bash/issues/40
2020-05-29 13:09:38 -07:00
Kenneth Skovhus
f226a4b55a
Add support for empty expansions ( #82 )
...
Fixes https://github.com/tree-sitter/tree-sitter-bash/issues/57
2020-05-15 12:32:47 -07:00
Kenneth Skovhus
38e8ba4a3d
Expand function definition to support subshell and tests ( #83 )
...
Fixes https://github.com/tree-sitter/tree-sitter-bash/issues/60
2020-05-15 11:25:46 -07:00
Kenneth Skovhus
0477cc4460
Add support for ternary expression ( #81 )
...
Fixes https://github.com/tree-sitter/tree-sitter-bash/issues/64
2020-05-15 10:50:29 -07:00
Šimon Let
28e76c616d
WIP: Add '>|' redirection to grammar ( #75 )
...
* Add '>|' redirection to grammar
* add tests for >|
* generate grammar
2020-05-14 15:48:18 -07:00
Max Brunsfeld
de690d849a
Start adding fields
2019-12-10 13:18:29 -08:00
Nathan Sobo
1c48cd1676
Support ANSII-C quoting in strings prefixed with $
...
See
https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html
for details
2019-07-26 11:29:35 -06:00
Max Brunsfeld
3b15f16973
Fix CRLF handling in external scanner
2019-07-03 12:01:02 -07:00
Jason Rudolph
4f3cbc36b9
Handle heredoc delimiters that include spaces ( #47 )
...
* Handle heredoc delimiters that include spaces
* Update test to use multi-line heredoc to demonstrate bug
This change demonstrates the bug described in
https://github.com/tree-sitter/tree-sitter-bash/pull/47#discussion_r280183823 .
* Handle multi-line heredocs with spaces in delimiter
Fixes the failing test introduced in 0d8adbc335.
/xref https://github.com/tree-sitter/tree-sitter-bash/pull/47#discussion_r280183823
2019-05-01 13:59:21 -07:00
Max Brunsfeld
15a3a168f0
Handle
...
Fixes #39
2019-04-18 15:46:58 -07:00
Max Brunsfeld
e9748c132b
Require a terminator at the ends of some compound statements
...
Fixes #44
2019-04-18 15:38:39 -07:00
Max Brunsfeld
53446e0e81
Handle heredocs followed by pipes or redirects
...
Fixes atom/language-shellscript#134
2019-04-18 15:25:40 -07:00
Max Brunsfeld
25f56dd856
Allow $ at the end of a bare word
...
Fixes #38
2018-11-04 15:34:33 -08:00
Max Brunsfeld
8426c3fefd
Fix handling of delimiter characters as part of bare words
...
Fixes atom/atom#18387
2018-11-04 13:14:13 -08:00
Max Brunsfeld
da116a1941
Handle heredocs w/ indented close delimiters
...
Fixes atom/language-shellscript#127
2018-10-19 13:06:56 -07:00
Max Brunsfeld
a4fb636b2d
Handle shorthand file redirect command substitutions
...
Fixes #34
2018-10-18 15:31:24 -07:00
Max Brunsfeld
4fb4e2960d
Fix handling of escaped chars in strings
2018-10-18 15:28:46 -07:00
Max Brunsfeld
bdaf31057b
Add raw (quoted) heredocs
...
Fixes #31
2018-10-18 12:55:14 -07:00
Max Brunsfeld
46cf157ad8
Handle escaped expansions in heredocs
...
Fixes #28
2018-10-18 11:12:48 -07:00
Max Brunsfeld
cdbc8863cd
Allow compound statements and redirects in more places
...
Fixes #35
2018-10-18 11:06:03 -07:00
Max Brunsfeld
246bad66dd
Add double-paren expression
...
* Use the external scanner for regexes
* Add some missing operators
Fixes #22
Fixes #32
2018-10-01 13:29:04 -07:00
Max Brunsfeld
6ff7fe3c7e
Don't require statement terminator at EOF
...
Fixes #15
2018-08-06 11:18:33 -07:00
Max Brunsfeld
da2ba9cfdf
Allow backslashes between tokens
...
Fixes #14
2018-08-06 11:14:00 -07:00
Max Brunsfeld
0e172361a8
Support #*# operator in variable expansions
...
Fixes #10
2018-08-06 11:09:45 -07:00
Max Brunsfeld
3a9b32284e
Allow `!` operator in variable expansions
...
Fixes #21
2018-08-06 10:44:13 -07:00
Kenneth Skovhus
08cf72b615
[WIP] Support multiple statements ( #26 )
...
* Rename prebuild target clashing with build target
* Add test:watch target and documentation
* Support multiple statements in substitutions
* Inline the _statements rule
This removes a reduction step by the `_statements -> _statement` rule,
which avoids a reduce/reduce conflict between `_statements` and
`command`.
2018-08-06 10:39:05 -07:00
Kenneth Skovhus
9bbd80dee1
Add support for C-style for statements ( #23 )
2018-08-05 19:25:19 -07:00
Kenneth Skovhus
886a957d1e
Add support for strings ending with $ ( #24 )
2018-08-02 16:32:30 -07:00
Max Brunsfeld
065a4ec425
Rework test expressions
...
Fixes #11
2018-05-24 11:47:12 -07:00
Max Brunsfeld
73d6705bc2
Allow other redirects between a heredoc's delimiter and body
...
Fixes #16
2018-03-29 09:54:08 -07:00
Max Brunsfeld
2d96fc5fcb
Add more code to the case statements test
2018-03-16 15:41:09 -07:00
Max Brunsfeld
68e93bd898
Allow for statements without in clauses
2018-03-02 10:18:42 -08:00
Max Brunsfeld
87a832d94e
Allow regexes after '==', not just '=~'
2018-03-01 14:22:38 -08:00
Max Brunsfeld
c7484ad85f
Allow ;; at end of line of case item
2018-03-01 14:04:29 -08:00
Max Brunsfeld
0791027596
Add regex syntax inside of expansions
2018-03-01 10:41:16 -08:00
Max Brunsfeld
f33bf06de2
Distinguish unset commands from regular commands
2018-03-01 10:12:10 -08:00
Max Brunsfeld
69d64558a3
Rename control_flow test file to statements
2018-03-01 10:06:38 -08:00
Max Brunsfeld
384d920af5
Allow $ in strings
2018-03-01 09:54:08 -08:00
Max Brunsfeld
c7e42b8e96
Add special lexing for regexes after `=~`
2018-03-01 09:53:10 -08:00
Max Brunsfeld
0d9f854862
Revert "Don't parse square bracket commands as special syntax"
...
This reverts commit c34619a1c4
.
Bracket command syntax was actually not interfering with the parsing
of words with special characters.
2018-02-28 22:46:47 -08:00
Max Brunsfeld
4920373ca4
Add special variable @, expressions in declarations
2018-02-28 17:32:48 -08:00
Max Brunsfeld
87b3276186
Generalize case statement parsing
...
* Fix handling of '|' in case items
* Don't require ;; for last case item
Fixes #8
2018-02-28 16:29:42 -08:00
Max Brunsfeld
2a5b01b885
Generalize parsing of expansion operators
2018-02-28 16:28:55 -08:00
Max Brunsfeld
86c5561ba8
Allow file redirects on while statements
2018-02-28 16:28:30 -08:00
Max Brunsfeld
6f81608535
Always lex braces and brackets as separate tokens
...
The lexer needs to always return braces and brackets separately so that
the parser can decide if they are part of some construct like an array
subscript or a variable expansion. This means that there was no point
in moving bare-word tokenization into the external scanner. I've moved
it back into the normal scanner.
The tricky part is how to deal with the separate '}' and ']' tokens
in the case where they are *not* part of a subscript or an expansion.
For example, in code like `echo {hi}`, the syntax tree should still
clearly indicate that only *one* argument is being passed to echo.
For now, we achieve this by grouping the '{', hi, and '}' tokens into
a single `concatenation` node, which is a bit odd, but it's the best
we can do.
2018-02-28 14:33:50 -08:00
Max Brunsfeld
c34619a1c4
Don't parse square bracket commands as special syntax
2018-02-28 14:32:58 -08:00
Mads Hartmann
c410548caf
Handle escape sequences in strings ( #7 )
...
This should fix #6
2018-02-28 12:15:05 -08:00
Max Brunsfeld
675a581839
Allow special characters in bare word arguments
...
I've moved tokenization of bare words into the external scanner. This
way we can keep the grammar simple, but support some fancy rules that
I've inferred from experimenting with bash:
- Only allow '}' inside of a bare word if '}' isn't a valid lookahead
token (i.e. we're not inside of a variable expansion).
- Only allow ']' at the *start* of a bare word if neither ']' nor ']]'
are valid lookahead tokens (i.e. we're not inside of a square bracket
command or an array subscript).
- Parentheses seem to never be allowed in bare words. You have to quote
them.
For alphanumeric words, I fall through to the normal scanner so that it
can continue to distinguish reserved words from other words.
Fixes #5
2018-02-27 16:55:20 -08:00
Max Brunsfeld
8a0a4a8501
Parse for loop identifier as a variable name
...
Also remove some duplication in expression and concatenation
2018-02-27 13:46:36 -08:00