Next: , Previous: Getopt, Up: Programs and Arguments


4.4.3 Command Line

(require 'read-command)

— Function: read-command port
— Function: read-command

read-command converts a command line into a list of strings suitable for parsing by getopt. The syntax of command lines supported resembles that of popular shells. read-command updates port to point to the first character past the command delimiter.

If an end of file is encountered in the input before any characters are found that can begin an object or comment, then an end of file object is returned.

The port argument may be omitted, in which case it defaults to the value returned by current-input-port.

The fields into which the command line is split are delimited by whitespace as defined by char-whitespace?. The end of a command is delimited by end-of-file or unescaped semicolon (<;>) or <newline>. Any character can be literally included in a field by escaping it with a backslach (<\>).

The initial character and types of fields recognized are:

\
The next character has is taken literally and not interpreted as a field delimiter. If <\> is the last character before a <newline>, that <newline> is just ignored. Processing continues from the characters after the <newline> as though the backslash and <newline> were not there.
"
The characters up to the next unescaped <"> are taken literally, according to [R4RS] rules for literal strings (see Strings).
(’, ‘%'
One scheme expression is read starting with this character. The read expression is evaluated, converted to a string (using display), and replaces the expression in the returned field.
;
Semicolon delimits a command. Using semicolons more than one command can appear on a line. Escaped semicolons and semicolons inside strings do not delimit commands.

The comment field differs from the previous fields in that it must be the first character of a command or appear after whitespace in order to be recognized. <#> can be part of fields if these conditions are not met. For instance, ab#c is just the field ab#c.

#
Introduces a comment. The comment continues to the end of the line on which the semicolon appears. Comments are treated as whitespace by read-dommand-line and backslashes before <newline>s in comments are also ignored.

— Function: read-options-file filename

read-options-file converts an options file into a list of strings suitable for parsing by getopt. The syntax of options files is the same as the syntax for command lines, except that <newline>s do not terminate reading (only <;> or end of file).

If an end of file is encountered before any characters are found that can begin an object or comment, then an end of file object is returned.