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
parent
e1390875ca
commit
d711824c10
|
@ -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"
|
||||||
|
|
|
@ -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 ] [
|
||||||
|
|
|
@ -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" } }
|
||||||
|
|
|
@ -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 ;
|
||||||
|
|
|
@ -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>" }
|
||||||
|
|
Loading…
Reference in New Issue