BNF for wlshell
NON-TERMINALS
script
::=
commands
<EOF>
commands
::=
( (
command
)?
eol
)*
eol
::=
<EOL>
command
::=
(
atSign
)? (
useVarCmd
|
assignmentCmd
|
c2wCmd
|
callCmd
|
cdCmd
|
chDomCmd
|
connectCmd
|
d2wCmd
|
dateCmd
|
descrCmd
|
dirCmd
|
disconnectCmd
|
domainsCmd
|
echoCmd
|
evalCmd
|
exitCmd
|
exploreCmd
|
exprCmd
|
findCmd
|
forCmd
|
getCmd
|
helpCmd
|
historyCmd
|
ifCmd
|
infoCmd
|
invokeCmd
|
keysCmd
|
mdCmd
|
optionCmd
|
outputCmd
|
pingCmd
|
promptCmd
|
pwdCmd
|
readCmd
|
reconnectCmd
|
reloadCmd
|
rdCmd
|
setCmd
|
sleepCmd
|
uploadCmd
|
verCmd
|
whileCmd
) (
redirect
)?
redirect
::=
( <GT> | <RSIGNEDSHIFT> )
literal
assignmentCmd
::=
identifier
(
arrayIndex
)? <ASSIGN> (
singleValue
)+
background
::=
<BIT_AND>
c2wCmd
::=
<C2W> (
cmdOptions
)?
singleValue
singleValue
callCmd
::=
<CALL> (
cmdOptions
)? (
singleValue
)+ (
background
)?
cdCmd
::=
<CD> (
singleValue
)?
chDomCmd
::=
<DOMAIN_NAME>
connectCmd
::=
<CONNECT> (
cmdOptions
)? (
singleValue
(
singleValue
(
singleValue
)? )? )?
d2wCmd
::=
<D2W> (
cmdOptions
)?
singleValue
singleValue
dateCmd
::=
<DATE> (
cmdOptions
)?
descrCmd
::=
<DESCR>
singleValue
dirCmd
::=
( <DIR> | <LS> ) (
cmdOptions
)? (
singleValue
)?
disconnectCmd
::=
<DISCONNECT>
domainsCmd
::=
<DOMAINS> (
cmdOptions
)?
echoCmd
::=
( <ECHO> | <PRINT> ) (
singleValue
)*
evalCmd
::=
( <EVAL>
command
)
exitCmd
::=
( <EXIT> | <QUIT> | <BYE> ) (
singleValue
)?
exploreCmd
::=
( <EXPLORE> | <EXPLORER> )
exprCmd
::=
( <EXPR> <LPAREN>
expression
<RPAREN> )
findCmd
::=
( <FIND> | <SEARCH> ) (
cmdOptions
)? (
singleValue
| <STAR> )?
forCmd
::=
<FOR>
variable
<IN>
sequence
( <DO> )?
eol
(
commands
) <END>
getCmd
::=
<GET> (
cmdOptions
)? ( ( <LPAREN>
singleValue
<COMMA>
singleValue
<COMMA>
singleValue
<COMMA>
singleValue
<RPAREN> )? ) (
singleValue
)+
helpCmd
::=
<HELP> (
cmdOptions
)? ( <PARSEABLE_LITERAL> | <C2W> | <CALL> | <CD> | <CONNECT> | <DATE> | <DESCR> | <DIR> | <LS> | <DISCONNECT> | <DOMAINS> | <ECHO> | <PRINT> | <EXIT> | <BYE> | <QUIT> | <EXPLORE> | <EXPLORER> | <FIND> | <FOR> | <GET> | <HELP> | <IF> | <INFO> | <INVOKE> | <KEYS> | <MKDIR> | <MD> | <OPTION> | <OPTIONS> | <OUTPUT> | <PING> | <PROMPT> | <PWD> | <READ> | <RECONNECT> | <RELOAD> | <REFRESH> | <RMDIR> | <RD> | <RUN> | <SEARCH> | <SET> | <SLEEP> | <UPLOAD> | <VER> | <WHILE> )?
historyCmd
::=
<HISTORY> (
cmdOptions
)?
ifCmd
::=
<IF>
expression
( <THEN> )?
eol
commands
( <ELSE>
eol
commands
)? <END>
infoCmd
::=
<INFO> (
cmdOptions
)?
invokeCmd
::=
( <INVOKE> | <RUN> ) (
cmdOptions
)? (
singleValue
)+
mdCmd
::=
( <MD> | <MKDIR> ) (
cmdOptions
)?
singleValue
(
singleValue
)?
optionCmd
::=
( <OPTION> | <OPTIONS> ) (
cmdOptions
)? (
singleValue
)*
outputCmd
::=
<OUTPUT> (
cmdOptions
)? (
singleValue
)*
keysCmd
::=
<KEYS> (
cmdOptions
)? (
singleValue
)*
pingCmd
::=
<PING> (
cmdOptions
)? (
singleValue
(
singleValue
(
singleValue
)? )? )?
promptCmd
::=
<PROMPT> (
singleValue
)*
pwdCmd
::=
<PWD>
readCmd
::=
<READ> (
cmdOptions
)?
singleValue
reconnectCmd
::=
<RECONNECT> (
cmdOptions
)?
reloadCmd
::=
( <RELOAD> | <REFRESH> ) (
cmdOptions
)?
rdCmd
::=
( <RD> | <RMDIR> ) (
cmdOptions
)?
singleValue
setCmd
::=
<SET> (
cmdOptions
)? (
singleValue
singleValue
)?
sleepCmd
::=
<SLEEP> (
cmdOptions
)?
singleValue
uploadCmd
::=
<UPLOAD> (
cmdOptions
)?
singleValue
(
singleValue
)?
useVarCmd
::=
variable
(
singleValue
)*
verCmd
::=
<VER>
whileCmd
::=
<WHILE>
expression
( <DO> )?
eol
commands
<END>
atSign
::=
<AT>
cmdOptions
::=
<CMD_OPTIONS>
sequence
::=
expression
( <TO>
expression
)?
expression
::=
conditionalExpression
conditionalExpression
::=
conditionalOrExpression
conditionalOrExpression
::=
conditionalAndExpression
( <OR>
conditionalOrExpression
)*
conditionalAndExpression
::=
equalityExpression
( <AND>
conditionalAndExpression
)*
equalityExpression
::=
relationalExpression
( ( <EQ> | <NE> )
equalityExpression
)*
relationalExpression
::=
additiveExpression
( ( <GT> | <GE> | <LT> | <LE> )
relationalExpression
)*
additiveExpression
::=
multiplicativeExpression
( <PLUS>
multiplicativeExpression
| <MINUS>
multiplicativeExpression
)*
multiplicativeExpression
::=
unaryExpression
( <STAR>
unaryExpression
| ":"
unaryExpression
| <REM>
unaryExpression
)*
unaryExpression
::=
( <LPAREN>
expression
<RPAREN> | (
not
)?
singleValue
)
not
::=
<NOT>
singleValue
::=
( <LPAREN>
literal
<RPAREN> )? (
inExpressionCommand
|
exprCmd
)
inExpressionCommand
::=
(
literal
|
inExpressionGet
|
inExpressionInvoke
| <PROMPT>
literal
)
inExpressionGet
::=
<GET> (
cmdOptions
)?
literal
inExpressionInvoke
::=
( <INVOKE> | <RUN> ) (
cmdOptions
)? (
singleValue
)+
literal
::=
(
integerLiteral
|
floatingPointLiteral
|
characterLiteral
|
stringLiteral
|
booleanLiteral
|
variable
|
arrayLiteral
|
newObject
|
identifier
|
parseableLiteral
)
integerLiteral
::=
<INTEGER_LITERAL>
floatingPointLiteral
::=
<FLOATING_POINT_LITERAL>
characterLiteral
::=
<CHARACTER_LITERAL>
stringLiteral
::=
<STRING_LITERAL>
booleanLiteral
::=
<BOOLEAN_LITERAL>
variable
::=
<VARIABLE> (
arrayIndex
)?
arrayIndex
::=
<LBRACKET>
expression
<RBRACKET>
parseableLiteral
::=
<PARSEABLE_LITERAL>
arrayLiteral
::=
<LBRACKET>
expression
( <COMMA>
expression
)* <RBRACKET>
identifier
::=
<IDENTIFIER>
newObject
::=
<NEW> (
identifier
|
parseableLiteral
) (
newParams
|
arrayIndex
)
newParams
::=
(
singleValue
)*