mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-07-08 13:37:35 +02:00
making command-line a parameter, and importing it and exit into (scheme process-context)
This commit is contained in:
parent
ebe2af486e
commit
dd2814953c
3 changed files with 4 additions and 5 deletions
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
(define-library (scheme process-context)
|
(define-library (scheme process-context)
|
||||||
(import (scheme) (srfi 98))
|
(import (scheme) (srfi 98) (only (chibi process) exit))
|
||||||
(export get-environment-variable get-environment-variables
|
(export get-environment-variable get-environment-variables
|
||||||
command-line exit))
|
command-line exit))
|
||||||
|
|
6
main.c
6
main.c
|
@ -4,8 +4,7 @@
|
||||||
|
|
||||||
#include "chibi/eval.h"
|
#include "chibi/eval.h"
|
||||||
|
|
||||||
#define sexp_argv_symbol "*command-line-arguments*"
|
#define sexp_argv_symbol "command-line"
|
||||||
#define sexp_argv_proc "(define (command-line-arguments) "sexp_argv_symbol")"
|
|
||||||
|
|
||||||
#define sexp_import_prefix "(import ("
|
#define sexp_import_prefix "(import ("
|
||||||
#define sexp_import_suffix "))"
|
#define sexp_import_suffix "))"
|
||||||
|
@ -397,8 +396,7 @@ void run_main (int argc, char **argv) {
|
||||||
args = sexp_cons(ctx, tmp=sexp_c_string(ctx,argv[j],-1), args);
|
args = sexp_cons(ctx, tmp=sexp_c_string(ctx,argv[j],-1), args);
|
||||||
else
|
else
|
||||||
args = sexp_cons(ctx, tmp=sexp_c_string(ctx,argv[0],-1), args);
|
args = sexp_cons(ctx, tmp=sexp_c_string(ctx,argv[0],-1), args);
|
||||||
sexp_env_define(ctx, env, sexp_intern(ctx, sexp_argv_symbol, -1), args);
|
sexp_set_parameter(ctx, env, sexp_intern(ctx, sexp_argv_symbol, -1), args);
|
||||||
sexp_eval_string(ctx, sexp_argv_proc, -1, env);
|
|
||||||
if (i < argc) { /* script usage */
|
if (i < argc) { /* script usage */
|
||||||
sexp_context_tracep(ctx) = 1;
|
sexp_context_tracep(ctx) = 1;
|
||||||
check_exception(ctx, sexp_load(ctx, tmp=sexp_c_string(ctx, argv[i], -1), env));
|
check_exception(ctx, sexp_load(ctx, tmp=sexp_c_string(ctx, argv[i], -1), env));
|
||||||
|
|
|
@ -25,6 +25,7 @@ _PARAM("current-output-port", _I(SEXP_OPORT)),
|
||||||
_PARAM("current-error-port", _I(SEXP_OPORT)),
|
_PARAM("current-error-port", _I(SEXP_OPORT)),
|
||||||
_PARAM("current-exception-handler", _I(SEXP_PROCEDURE)),
|
_PARAM("current-exception-handler", _I(SEXP_PROCEDURE)),
|
||||||
_PARAM("interaction-environment", _I(SEXP_ENV)),
|
_PARAM("interaction-environment", _I(SEXP_ENV)),
|
||||||
|
_PARAM("command-line", SEXP_NULL),
|
||||||
_OP(SEXP_OPC_GETTER, SEXP_OP_CAR, 1, 0, _I(SEXP_OBJECT), _I(SEXP_PAIR), SEXP_FALSE, SEXP_FALSE, 0, "car", 0, NULL),
|
_OP(SEXP_OPC_GETTER, SEXP_OP_CAR, 1, 0, _I(SEXP_OBJECT), _I(SEXP_PAIR), SEXP_FALSE, SEXP_FALSE, 0, "car", 0, NULL),
|
||||||
_OP(SEXP_OPC_SETTER, SEXP_OP_SET_CAR, 2, 0, SEXP_VOID, _I(SEXP_PAIR), _I(SEXP_OBJECT), SEXP_FALSE, 0, "set-car!", 0, NULL),
|
_OP(SEXP_OPC_SETTER, SEXP_OP_SET_CAR, 2, 0, SEXP_VOID, _I(SEXP_PAIR), _I(SEXP_OBJECT), SEXP_FALSE, 0, "set-car!", 0, NULL),
|
||||||
_OP(SEXP_OPC_GETTER, SEXP_OP_CDR, 1, 0, _I(SEXP_OBJECT), _I(SEXP_PAIR), SEXP_FALSE, SEXP_FALSE, 0, "cdr", 0, NULL),
|
_OP(SEXP_OPC_GETTER, SEXP_OP_CDR, 1, 0, _I(SEXP_OBJECT), _I(SEXP_PAIR), SEXP_FALSE, SEXP_FALSE, 0, "cdr", 0, NULL),
|
||||||
|
|
Loading…
Add table
Reference in a new issue