From 2cf8b32bda157acaab0bb7ef15b110d76ec8c485 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Sun, 27 Nov 2011 14:59:54 -0800 Subject: [PATCH] lexer: skip #! as a single token at front of line Fixes #370 --- core/lexer/lexer.factor | 16 +++++++++++++++- core/parser/parser-tests.factor | 6 ++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/core/lexer/lexer.factor b/core/lexer/lexer.factor index af3d7813c6..123f2a5a71 100644 --- a/core/lexer/lexer.factor +++ b/core/lexer/lexer.factor @@ -58,9 +58,23 @@ M: lexer skip-blank ( lexer -- ) GENERIC: skip-word ( lexer -- ) + + M: lexer skip-word ( lexer -- ) [ - 2dup nth CHAR: " eq? [ drop 1 + ] [ f skip ] if + { + { [ 2dup quote? ] [ drop 1 + ] } + { [ 2dup shebang? ] [ drop 2 + ] } + [ f skip ] + } cond ] change-lexer-column ; : still-parsing? ( lexer -- ? ) diff --git a/core/parser/parser-tests.factor b/core/parser/parser-tests.factor index 57f060e937..9507403791 100644 --- a/core/parser/parser-tests.factor +++ b/core/parser/parser-tests.factor @@ -23,6 +23,12 @@ unit-test [ "\"\\n\\r\\t\\\\\"" eval( -- string ) ] unit-test +[ "hello world" ] +[ +"""#!/usr/bin/env factor +"hello world" """ eval( -- string ) +] unit-test + [ "hello world" ] [ "IN: parser.tests : hello ( -- str ) \"hello world\" ;"