Defines syntax decisions and implementation plan across 7 issues:
- backtick command execution returning {code, stdout, stderr}
- ${expr} interpolation in backticks
- $SIGIL env var read/write
- argv parsing, piping, and redirection (future)
1.1 KiB
1.1 KiB
05 — Implement environment variable access (read/write)
Status: open Blocked by: #01
Add syntax for reading and writing environment variables directly from Lua.
Option 1 — export keyword
local var = "my data"
export var -- exports existing local to env
export other_var = "my data" -- creates + exports
- New reserved word
exportin lexer export varlooks up the local's value by name and callssetenv()export x = valcombines declaration withsetenv()
Option 2 — $ sigil
local dir = $PWD -- getenv("PWD")
$PWD = "/" -- setenv("PWD", "/")
$MY_ENV_VAR = "data" -- setenv("MY_ENV_VAR", "data")
$NAMEas expression →getenv("NAME"), returns string ornil$NAME = expras statement →setenv("NAME", tostring(expr))- New token type in lexer for
$+ identifier
Implementation touches
llex.c/llex.h— new token(s) or reserved wordlparser.c— new expression/statement rules- Runtime calls
getenv()/setenv()— standard C, no shell needed - Non-existent env var → return
nil