summaryrefslogtreecommitdiffstats
path: root/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'parser.c')
-rw-r--r--parser.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/parser.c b/parser.c
index 32052700..c0f3c6da 100644
--- a/parser.c
+++ b/parser.c
@@ -252,10 +252,19 @@ val lisp_parse(val source_in, val error_stream, val error_return_val, val name_i
return pi->syntax_tree;
}
-val read_eval_stream(val stream, val error_stream)
+val read_eval_stream(val stream, val error_stream, val hash_bang_support)
{
val error_val = gensym(nil);
+ if (hash_bang_support) {
+ val firstline = get_line(stream);
+
+ if (!match_str(firstline, lit("#!"), nil)) {
+ val string_stream = make_string_byte_input_stream(firstline);
+ stream = make_catenated_stream(list(string_stream, stream, nao));
+ }
+ }
+
for (;;) {
val form = lisp_parse(stream, error_stream, error_val, nil);