command-line, parser, syntax: move the MAIN: invocation from run-file to run-script to minimize the potential impact on internal machinery that uses run-file

db4
Joe Groff 2011-08-17 21:29:02 -07:00
parent e1390875ca
commit d711824c10
5 changed files with 17 additions and 9 deletions

View File

@ -135,7 +135,7 @@ $nl
ARTICLE: "cli" "Command line arguments" ARTICLE: "cli" "Command line arguments"
"Factor command line usage:" "Factor command line usage:"
{ $code "factor [VM args...] [script] [args...]" } { $code "factor [VM args...] [script] [args...]" }
"Zero or more VM arguments can be passed in, followed by an optional script file name. If the script file is specified, it will be run on startup using " { $link run-file } ". Any arguments after the script file are stored in the following variable, with no further processing by Factor itself:" "Zero or more VM arguments can be passed in, followed by an optional script file name. If the script file is specified, it will be run on startup using " { $link run-script } ". Any arguments after the script file are stored in the following variable, with no further processing by Factor itself:"
{ $subsections command-line } { $subsections command-line }
"Instead of running a script, it is also possible to run a vocabulary; this invokes the vocabulary's " { $link POSTPONE: MAIN: } " word:" "Instead of running a script, it is also possible to run a vocabulary; this invokes the vocabulary's " { $link POSTPONE: MAIN: } " word:"
{ $code "factor [system switches...] -run=<vocab name>" } { $code "factor [system switches...] -run=<vocab name>" }
@ -159,4 +159,9 @@ $nl
"There is a way to override the default vocabulary to run on startup, if no script name or " { $snippet "-run" } " switch is specified:" "There is a way to override the default vocabulary to run on startup, if no script name or " { $snippet "-run" } " switch is specified:"
{ $subsections main-vocab-hook } ; { $subsections main-vocab-hook } ;
HELP: run-script
{ $values { "file" "a pathname string" } }
{ $description "Parses the Factor source code stored in a file and runs it. The initial vocabulary search path is used. If the source file contains a " { $link POSTPONE: MAIN: } " declaration, the main entry point of the file will be also be executed. Loading messages will be suppressed." }
{ $errors "Throws an error if loading the file fails, there input is malformed, or if a runtime error occurs while calling the parsed quotation or executing the main entry point." } ;
ABOUT: "cli" ABOUT: "cli"

View File

@ -2,7 +2,8 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: init continuations hashtables io io.encodings.utf8 USING: init continuations hashtables io io.encodings.utf8
io.files io.pathnames kernel kernel.private namespaces parser io.files io.pathnames kernel kernel.private namespaces parser
sequences strings system splitting vocabs.loader alien.strings ; sequences source-files strings system splitting vocabs.loader
alien.strings accessors ;
IN: command-line IN: command-line
SYMBOL: script SYMBOL: script
@ -39,7 +40,10 @@ SYMBOL: command-line
"=" split1 [ var-param ] [ bool-param ] if* ; "=" split1 [ var-param ] [ bool-param ] if* ;
: run-script ( file -- ) : run-script ( file -- )
t "quiet" set-global run-file ; t "quiet" [
[ run-file ]
[ source-file main>> [ execute( -- ) ] when* ] bi
] with-variable ;
: parse-command-line ( args -- ) : parse-command-line ( args -- )
[ command-line off script off ] [ [ command-line off script off ] [

View File

@ -238,8 +238,8 @@ HELP: parse-file
HELP: run-file HELP: run-file
{ $values { "file" "a pathname string" } } { $values { "file" "a pathname string" } }
{ $description "Parses the Factor source code stored in a file and runs it. The initial vocabulary search path is used. If the source file contains a " { $link POSTPONE: MAIN: } " declaration, the main entry point of the file will be also be executed." } { $description "Parses the Factor source code stored in a file and runs it. The initial vocabulary search path is used." }
{ $errors "Throws an error if loading the file fails, there input is malformed, or if a runtime error occurs while calling the parsed quotation or executing the main entry point." } ; { $errors "Throws an error if loading the file fails, there input is malformed, or if a runtime error occurs while calling the parsed quotation." } ;
HELP: ?run-file HELP: ?run-file
{ $values { "path" "a pathname string" } } { $values { "path" "a pathname string" } }

View File

@ -203,8 +203,7 @@ print-use-hook [ [ ] ] initialize
] recover ; ] recover ;
: run-file ( file -- ) : run-file ( file -- )
[ parse-file call( -- ) ] parse-file call( -- ) ;
[ source-file main>> [ execute( -- ) ] when* ] bi ;
: ?run-file ( path -- ) : ?run-file ( path -- )
dup exists? [ run-file ] [ drop ] if ; dup exists? [ run-file ] [ drop ] if ;

View File

@ -1,7 +1,7 @@
USING: generic help.syntax help.markup kernel math parser words USING: generic help.syntax help.markup kernel math parser words
effects classes classes.tuple generic.math generic.single arrays effects classes classes.tuple generic.math generic.single arrays
io.pathnames vocabs.loader io sequences assocs words.symbol io.pathnames vocabs.loader io sequences assocs words.symbol
words.alias words.constant combinators vocabs.parser ; words.alias words.constant combinators vocabs.parser command-line ;
IN: syntax IN: syntax
ARTICLE: "parser-algorithm" "Parser algorithm" ARTICLE: "parser-algorithm" "Parser algorithm"
@ -858,7 +858,7 @@ HELP: C:
HELP: MAIN: HELP: MAIN:
{ $syntax "MAIN: word" } { $syntax "MAIN: word" }
{ $values { "word" word } } { $values { "word" word } }
{ $description "Defines the main entry point for the current vocabulary and source file. This word will be executed when this vocabulary is passed to " { $link run } " or the source file is passed to " { $link run-file } "." } ; { $description "Defines the main entry point for the current vocabulary and source file. This word will be executed when this vocabulary is passed to " { $link run } " or the source file is passed to " { $link run-script } "." } ;
HELP: <PRIVATE HELP: <PRIVATE
{ $syntax "<PRIVATE ... PRIVATE>" } { $syntax "<PRIVATE ... PRIVATE>" }