~emersion/mrsh

ref: 07e65a3a88e03c6d9e6f1f6ac4a1cfa9a74a9b09 mrsh/test d---------
parser/arithm: fix && and ||

"&" and "|" have higher priority, so they were consuming the first character of
"&&" and "||", leaving a trailing "&" or "|".
parser/arithm: fix comparison operators

> and < were recognized before >= and <=. For this reason, >= and <= were never
parsed (since they are prefixes of < and >).

Closes: https://github.com/emersion/mrsh/issues/86
shell/arithm: implement assignments

The parser still chokes on assignments with an operation.
builtins: implement return
shell/task: fix case not handling quoted strings

Executing a case with a quoted string in a pattern resulted in:

    mrsh: ../ast.c:343: mrsh_word_get_string: Assertion `word->type == MRSH_WORD_STRING' failed.
Partially implement arithmetic expansion

The only expansion missing is assignment expansion, which requires more
discussion.

Additionally, the parser is missing variable support, e.g. $((var+1)).
test/loop: print exit in loop test description
builtin/exit: exit immediately

Closes: https://github.com/emersion/mrsh/issues/37
test: fix incorrect $? in async test
test: enable all pipeline tests
test: fix async test randomly failing

Wait for both jobs to complete before printing their exit status. Otherwise one
of them may not have finished to print its character before the exit status of
the other is printed.
test: fix Meson tests

The fullpath was given as the test name, instead of as an argument.
Add configure script and Makefile

The configure script is POSIX sh and the Makefile is POSIX make.
test: make async test reliable
test: add basic async list tests
test: pipeline with subshell has been fixed

Closes: https://github.com/emersion/mrsh/issues/100
shell: fix pipeline bangs
test/case: add description for each subtest
shell/task: add pipeline bang
test: add subshell assignment test
Next