mirror of
https://github.com/samsonjs/csc360-a1-shell.git
synced 2026-03-25 08:45:52 +00:00
No description
Replace Ruby's old wordexp-like command splitting with a tokenizer and
parser that understands ; and && while honoring quotes and nesting.
Implement richer expansions for command substitution, arithmetic,
parameter defaults (${var:-...}), brace expansion, and escaped
dollar/backtick behavior via shared quote-state handling.
Expand the test suite with parser/expansion edge cases, escaping
parity checks, builtin usage validation, and job-control refresh tests.
Keep C green by adding a compat test profile for c/Makefile test and
by returning nonzero on builtin failures in -c mode, including clearer
`bg` usage output.
|
||
|---|---|---|
| .github/workflows | ||
| c | ||
| ruby | ||
| .gitignore | ||
| a1.pdf | ||
| Makefile | ||
| Readme.md | ||
csc360-a1-shell
CSC360 assignment 1: a1.pdf is the spec. It's a small shell.
The initial C implementation lives in c/, and a Ruby implementation and test suite lives in ruby/. The Ruby version is just for fun. The Ruby tests can run against any implementation and are used to test the C version as well.
We assume that you have a C compiler.
Bootstrap installs readline and gems:
make bootstrap
Build and test both the C and Ruby versions:
make
Build and test just the C version:
make c
Test the Ruby version:
make ruby
# or
cd ruby && bundle exec rake