summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Don't indent lines in generated codeP. J. McDermott2016-02-211-2/+9
| | | | Doing so can break here-documents.
* Implement here-documentP. J. McDermott2016-02-212-4/+156
| | | | Also fix some I/O redirection operator bugs.
* Implement arithmetic expansionP. J. McDermott2016-02-202-9/+68
|
* Reticulate splinesP. J. McDermott2016-02-201-8/+6
|
* scan_wordexp_param_brace(): New functionP. J. McDermott2016-02-202-123/+137
|
* scan_wordexp(): Catch and rethrow some uncaught exceptionsP. J. McDermott2016-02-201-3/+10
|
* Rewrite codegenP. J. McDermott2016-02-203-18/+78
| | | | | | | | The previous version didn't handle nested or multiple command substitutions. The stack format has also been extended to support arithmetic expansions.
* s/pgetc/lgetc/P. J. McDermott2016-02-201-47/+47
| | | | It reads input characters for the lexer, not the parser.
* Organize lexer functionsP. J. McDermott2016-02-201-44/+64
|
* Move parse_sub() logic into lexerP. J. McDermott2016-02-202-63/+48
| | | | | | | | | | Now the parser starts the lexer, which in turn starts the parser. Previously, the parser started both the lexer and itself and then asked the lexer all kinds of personal questions, like "Where are you?", "Whatcha doin'?", and "What are you wearing?". No one wants to know what their lexer is wearing. Seriously, don't ask. Parsers should mind their own business. Social interactions and personal questions between code modules should be kept to a minimum.
* Don't eat the first token after a command substitutionP. J. McDermott2016-02-202-16/+15
|
* Remove some "echo"sP. J. McDermott2016-02-201-2/+0
|
* Fix command substitution (warning: still ugly)P. J. McDermott2016-02-201-1/+6
|
* Implement command substitution (warning: ugly and broken)P. J. McDermott2016-02-202-10/+63
|
* Add code generationP. J. McDermott2016-02-202-6/+97
|
* Prepare for command substitutionP. J. McDermott2016-02-202-6/+34
|
* Fix function definition parsingP. J. McDermott2016-02-201-0/+2
| | | | Well that was easy.
* Fully trace most parser functionsP. J. McDermott2016-02-201-26/+114
|
* Fix command separationP. J. McDermott2016-02-201-9/+17
| | | | | | `foo bar ( baz )` no longer gets parsed as `foo bar` and `( baz )`. Also restrict function names.
* Fix function definitions (almost)P. J. McDermott2016-02-201-20/+12
|
* Implement I/O operator parsingP. J. McDermott2016-02-201-9/+40
|
* Implement "case" constructP. J. McDermott2016-02-201-6/+40
|
* Implement (non-functional) function handlingP. J. McDermott2016-02-201-4/+14
|
* Implement "while" and "until" loopsP. J. McDermott2016-02-201-5/+15
|
* Implement "if" constructP. J. McDermott2016-02-201-2/+21
|
* Rearrange command()P. J. McDermott2016-02-201-4/+6
|
* Fix handling of unexpected EOFP. J. McDermott2016-02-201-7/+7
|
* Improve error when expecting EOFP. J. McDermott2016-02-201-1/+3
|
* tokname(): Add new special symbolsP. J. McDermott2016-02-201-1/+3
|
* Check only first word of simple commands for reseserved wordsP. J. McDermott2016-02-202-3/+5
|
* Fix T_LBRACE, T_RBRACE, and T_BANG recognitionP. J. McDermott2016-02-202-4/+4
|
* Delimit words at unescaped operatorsP. J. McDermott2016-02-192-2/+3
| | | | Also expect EOF at end of script.
* Improve reserved word recognitionP. J. McDermott2016-02-192-14/+50
| | | | | | And fix term() to allow do_group() to find T_DONE. Also, ERMAHGERD DEBERG.
* Add more productions, special tokens, etc.P. J. McDermott2016-02-192-12/+324
|
* Recognize reserved wordsP. J. McDermott2016-02-191-7/+28
|
* Add missing I/O tokensP. J. McDermott2016-02-192-11/+31
|
* Add error handling to lexerP. J. McDermott2016-02-192-64/+152
|
* [WIP] Add lexer/parser demoP. J. McDermott2016-02-193-0/+645
|
* libsh: Use parameter lists instead of aliasesP. J. McDermott2016-02-193-31/+5
|
* Initial commitP. J. McDermott2016-02-146-0/+1117