vipsi - the friendly vip script interpreter

Vipsi Basics

Getting help

Start vipsi with command line Vipsi command syntax: Arguments
Glossary: Arguments
argument
-h Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
something similar Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
it will show it's command line options.

Most notably: starting it with no options Operators: Make Identifier "@"at all. Flow control: if … then
Flow control: try … then
then
it will start in Modes of Operation: Interactive Shellinteractive shell mode. Flow control: if … then
Flow control: try … then
the
first thing it prints is information on how to Instructions: getget help:

screenshot shows startup messages of vipsi

Among lot's of other List functions: words
Shell Immediate Commands: words
words
, it knows Flow control: if … then
Flow control: try … then
the
List functions: words
Shell Immediate Commands: words
word
List functions: words
Shell Immediate Commands: words
words
, which will Data Types: Lists and arrays
Item selector "[]": Lists
Glossary: list, list_val
list
all built-in List functions: words
Shell Immediate Commands: words
words
:

screenshot shows list of built-in words

Flow control: if … then
Flow control: try … then
The
Flow control: nextnext most important List functions: words
Shell Immediate Commands: words
word
is Text functions: info
Shell Immediate Commands: info
info
, which takes vipsi - the friendly one.: The namethe name of a List functions: words
Shell Immediate Commands: words
word
as a parameter Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
prints information about that List functions: words
Shell Immediate Commands: words
word
:

screenshot shows info for a built-in word

A smidgen of vipsi code

Here are some example dialogs with vipsi, started with no Vipsi command syntax: Arguments
Glossary: Arguments
arguments
as an Modes of Operation: Interactive Shellinteractive shell.

Flow control: if … thenIf you type in an Vipsi command syntax: Expressions
Glossary: Expression
expression
, Flow control: if … then
Flow control: try … then
the
Vipsi command syntax: Expressions
Glossary: Expression
expression
is executed Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
Flow control: if … then
Flow control: try … then
the
result is automagically printed. List functions: thisthis is a convenience behaviour of vipsi when running as shell:

vipsi> 1230.40 * 1.18  = 1451.872
vipsi> Numeric functions: sinsin(Constants: pipi/2)  = 1
vipsi> 46+3*1.1  = 49.3
vipsi>  

Flow control: if … then
Flow control: try … then
The
following shows how to define a Glossary: Variable, var_refvariable, how Flow control: do … looploops look like in About this Guide: General
Built-in operators: General
general
Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
how intentional printing to Flow control: if … then
Flow control: try … then
the
user (to Constants: stdoutstdout) works:

vipsi> Instructions: var
How does VScript::Value() work?: Var*&
var
i=10
vipsi> Flow control: do … loopdo i--; Flow control: whilewhile i; Instructions: putput i," "; Flow control: do … looploop 9 8 7 6 5 4 3 2 1 vipsi>

Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
And
take a preview on Vipsi command syntax: Functions
Functions
Glossary: Function
function
definition, Flow control: if … then
Flow control: try … then
the
possibility of recursion, conditional branches Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
how to Functions with varying return types: call
Instructions: call
call
a Vipsi command syntax: Functions
Functions
Glossary: Function
function
. nothing odd here. Just Operators: Bitwise Not "~"
Operators: Boolean Negation "!"
note
, that Flow control: if … then
Flow control: try … then
then
marks Flow control: if … then
Flow control: try … then
the
Flow control: end
Shell Immediate Commands: exit, quit, end
end
of Flow control: if … then
Flow control: try … then
the
Flow control: if … thenifFlow control: if … then
Flow control: try … then
else
Flow control: if … then
Flow control: try … then
then
construct.

vipsi> Instructions: procproc fak(n) { Flow control: if … thenif n>1 Flow control: returnreturn n*fak(n-1) Flow control: if … then
Flow control: try … then
else
Flow control: returnreturn 1 Flow control: if … then
Flow control: try … then
then
}
vipsi> Instructions: putput "fak(7) = ",fak(7) fak(7) = 5040 vipsi>

Flow control: nextNext let's Flow control: try … thentry a simple Example Scripts: CGI Scripts
Example Scripts: Scripts
script
. Flow control: if … then
Flow control: try … then
The
following sample Example Scripts: CGI Scripts
Example Scripts: Scripts
script
uses Flow control: if … then
Flow control: try … then
the
built-in Vipsi command syntax: Functions
Functions
Glossary: Function
function
List functions: env
Shell Immediate Commands: env
Shell Immediate Commands: env
env
to Instructions: getget Flow control: if … then
Flow control: try … then
the
environment Glossary: Variable, var_refvariables of Flow control: if … then
Flow control: try … then
the
process Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
prints Flow control: if … then
Flow control: try … then
them
. List functions: thisThis example Instructions: requirerequires that vipsi (Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
a Text functions: link
Instructions: link
link
to vipsi) is already installed in /usr/bin/. Operators: Bitwise Not "~"
Operators: Boolean Negation "!"
Note
that most spaces Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
Flow control: if … then
Flow control: try … then
the
Separators: Round brackets "( … )"
Separators: Square brackets "[ … ]"
Separators: Curly brackets "{ … }"
brackets
around Vipsi command syntax: Functions
Functions
Glossary: Function
function
Vipsi command syntax: Arguments
Glossary: Arguments
arguments
are optional Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
used here for readability only.

#!/usr/local/bin/vipsi

Instructions: var
How does VScript::Value() work?: Var*&
var
env_vars = List functions: env
Shell Immediate Commands: env
Shell Immediate Commands: env
env
Instructions: var
How does VScript::Value() work?: Var*&
var
i=0 Instructions: putput Constants: nlnl,"current environment Glossary: Variable, var_refvariables:",Constants: nlnl Flow control: do … loopdo Flow control: whilewhile ++i < Numeric functions: countcount( env_vars ) Instructions: putput Vipsi command syntax: Identifiers (names)
Identifiers, names
Operators: Make Identifier "@"
Text functions: name
Glossary: Name, Identifier
name
( env_vars[i] ), " = ", env_vars[i], Constants: nlnl Flow control: do … looploop Flow control: end
Shell Immediate Commands: exit, quit, end
end

Vipsi command syntax

List functions: thisThis is a quick overview over Flow control: if … then
Flow control: try … then
the
syntax of Flow control: if … then
Flow control: try … then
the
vip Example Scripts: CGI Scripts
Example Scripts: Scripts
script
language.

Comments

There are two types of Vipsi command syntax: Commentscomments, Flow control: if … then
Flow control: try … then
the
single line Vipsi command syntax: Commentscomment Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
Flow control: if … then
Flow control: try … then
the
block Vipsi command syntax: Commentscomment. They use Flow control: if … then
Flow control: try … then
the
same Separatorsseparators as in C:

Statements

A program consists of a longish sequence of Vipsi command syntax: Statements
Glossary: Statement
statements
. A Vipsi command syntax: Statements
Glossary: Statement
statement
typically starts with an Vipsi command syntax: Instructions
Instructions
Glossary: Instruction
instruction
, which is a List functions: words
Shell Immediate Commands: words
word
which Flow control: returnreturns no result Glossary: Valuevalue. Many Vipsi command syntax: Instructions
Instructions
Glossary: Instruction
instructions
Instructions: requirerequire Vipsi command syntax: Arguments
Glossary: Arguments
arguments
, which are made out of Vipsi command syntax: Expressions
Glossary: Expression
expressions
. Also frequently used as a Vipsi command syntax: Statements
Glossary: Statement
statement
are Operators: Assignment "="
Built-in operators: Assignments:
assignments
, which actually are Vipsi command syntax: Expressions
Glossary: Expression
expressions
which contain an Operators: Assignment "="
Built-in operators: Assignments:
assignment
Vipsi command syntax: Operators
Operators
Glossary: Operator
operator
.

Vipsi command syntax: Statements
Glossary: Statement
Statements
need no Separatorsseparators, except in very rare cases, but you can use Separators: Semicolon ";"semicolons for that purpose Flow control: if … thenif you like:

Instructions: var
How does VScript::Value() work?: Var*&
var
a=123; Instructions: putput a; a=a*3; Instructions: putput a; Instructions: var
How does VScript::Value() work?: Var*&
var
a=123 Instructions: putput a a=a*3 Instructions: putput a

Instructions

Vipsi command syntax: Instructions
Instructions
Glossary: Instruction
Instructions
always mark Flow control: if … then
Flow control: try … then
the
beginning of a Instructions: newnew Vipsi command syntax: Statements
Glossary: Statement
statement
. List functions: thisThis is, because they Flow control: do … loopdo Operators: Bitwise Not "~"
Operators: Boolean Negation "!"
not
Flow control: returnreturn a result Glossary: Valuevalue. They may be followed by Vipsi command syntax: Arguments
Glossary: Arguments
arguments
Flow control: if … then
Flow control: if … then
if the
Vipsi command syntax: Instructions
Instructions
Glossary: Instruction
instruction
Instructions: requirerequires so. Vipsi command syntax: Arguments
Glossary: Arguments
Arguments
need Operators: Bitwise Not "~"
Operators: Boolean Negation "!"
not
be enclosed in Separators: Round brackets "( … )"
Separators: Square brackets "[ … ]"
Separators: Curly brackets "{ … }"
brackets
, multiple Vipsi command syntax: Arguments
Glossary: Arguments
arguments
are separated by Separators: Comma ","commas:

Instructions: putput 1, "anton", Constants: nlnl

Arguments

Vipsi command syntax: Arguments
Glossary: Arguments
Arguments
for Vipsi command syntax: Instructions
Instructions
Glossary: Instruction
instructions
, Vipsi command syntax: Functions
Functions
Glossary: Function
functions
Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
Flow control: if … then
Flow control: try … then
the
like are made out of Vipsi command syntax: Expressions
Glossary: Expression
expressions
. Flow control: if … thenIf an Vipsi command syntax: Expressions
Glossary: Expression
expression
Flow control: returnreturns a Glossary: Valuevalue of wrong type, certain effort is taken to correct Flow control: if … then
Flow control: try … then
the
case:

Expressions

Vipsi command syntax: Arguments
Glossary: Arguments
Arguments
are made out of Vipsi command syntax: Expressions
Glossary: Expression
expressions
which yield some kind of result Glossary: Valuevalue. Vipsi command syntax: Expressions
Glossary: Expression
Expressions
are in Flow control: if … then
Flow control: try … then
the
simplest case just one Glossary: number, num_valnumber, Data Types: Text
Item selector "[]": Text
Glossary: text, text_val
text
Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
Literals: List literals
Lists and arrays: List literals
list literal
:

Instructions: putput 123.456
Instructions: putput "anton"
Instructions: putput { 1, 2, 3 }

But they may be also Glossary: Variable, var_refvariables, Operators: Subtract "-"sub Vipsi command syntax: Expressions
Glossary: Expression
expressions
combined by Operators and Functions with Side Effects: operator ++ and --operators and even more complex things:

Instructions: putput 12.5 + 22*1.4e3
Instructions: putput ( Numeric functions: intint(12.5 + 22*1.4e3)<<(my_flag?2:4) ) | $E000;
Instructions: putput my_textlist[ a+3, i+1 to j-2 ]

Literals

Vipsi command syntax: Literals
Glossary: Literal
Literals
are Glossary: Valuevalues which are written literally in Flow control: if … then
Flow control: try … then
the
source. All Data Types
Invariants: Data types
data types
have a distinct look. They are covered in more details in --> 'Data Types
Invariants: Data types
Data types
'.

Number literals

Decimal
                Integer     Float       Scientific
Number literals: Decimal
Integer numbers: Decimal
Floating point: Decimal
Decimal
: 1234 -47.11 123.456e-78 Integer numbers: Hexadecimal
Floating point: Hexadecimal
Text functions: hexstr
Hexadecimal
: $123affe -$b00.b00f Integer numbers: Binary
Floating point: Binary
Text functions: binstr
Binary
: %10100101 +%1010.0101 Integer numbers: Base 256Base 256: 'Äffe'

Text literals

"hello"
"say \"hello\""
«"hello". right?»

List literals

{ "a", "b", 44 }    three items
{ 1, {"a","b"} }    two items. Flow control: if … then
Flow control: try … then
the
second item is itself a Data Types: Lists and arrays
Item selector "[]": Lists
Glossary: list, list_val
list
{ x=22, y=33 } two items, named x Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
y

Procedure literals

Instructions: procproc(a,b){ Flow control: returnreturn a+b }

Operators

Vipsi command syntax: Operators
Operators
Glossary: Operator
Operators
combine Operators: Subtract "-"sub Vipsi command syntax: Expressions
Glossary: Expression
expressions
to more complex Vipsi command syntax: Expressions
Glossary: Expression
expressions
. Frequently they are processed out of order, due to a hierarchy of Vipsi command syntax: Operators
Operators
Glossary: Operator
operator
priorities. Flow control: if … then
Flow control: try … then
The
vip Example Scripts: CGI Scripts
Example Scripts: Scripts
script
language defines a well thought set of Operators: Operator precedenceoperator precedences. List functions: thisThis is covered in full details in chapter --> 'Vipsi command syntax: Operators
Operators
Glossary: Operator
Operators
'.

List of operator precedence:
highest                     @
    Operators: Named Item Selector "."
Operators: Item selector "[]"
item selector
, postfix: . [ … ] ( … ) ++ -- prefix: + - ! ~ ++ -- bit shifting: >> << bit masking: & | ^ multiplication: * / % Operators: Add "+"addition: + - Select "? :": Concatenationconcatenation: # ## comparision: == != >= <= > < boolean: && || Operators: Select "? :"triadic selector: ? … : … Operators: Assignment "="
Built-in operators: Assignments:
assignments
: = += etc. lowest

Operators: Assignment "="
Built-in operators: Assignments:
Assignments
Flow control: returnreturn no result.

Operators: Bitwise Not "~"
Operators: Boolean Negation "!"
Note
:
Operators: Assignment "="
Built-in operators: Assignments:
Assignment
Vipsi command syntax: Operators
Operators
Glossary: Operator
operators
Flow control: do … loopdo Operators: Bitwise Not "~"
Operators: Boolean Negation "!"
not
Flow control: returnreturn a result Glossary: Valuevalue. There are syntactical ambiguities with Flow control: if … then
Flow control: try … then
the
"=" Numeric functions: signsign e.g. in Literals: List literals
Lists and arrays: List literals
list literals
. List functions: thisThis also allows named items in other places, e.g. passing named Vipsi command syntax: Arguments
Glossary: Arguments
arguments
to Vipsi command syntax: Procedures
Data Types: Procedures
Glossary: Procedure
procedures
for a obj-C-like syntax. (planned for Flow control: if … then
Flow control: try … then
the
future)

Functions

Vipsi command syntax: Functions
Functions
Glossary: Function
Functions
are built-in List functions: words
Shell Immediate Commands: words
words
which take one Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
more Vipsi command syntax: Arguments
Glossary: Arguments
arguments
Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
Flow control: returnreturn a result Glossary: Valuevalue.

Built-in Vipsi command syntax: Functions
Functions
Glossary: Function
functions
which always take exactly one Vipsi command syntax: Arguments
Glossary: Arguments
argument
may be called without Separators: Round brackets "( … )"
Functions with varying return types: bracket expression "()"
round brackets
around their Vipsi command syntax: Arguments
Glossary: Arguments
argument
. Flow control: if … then
Flow control: try … then
Then
they work similar to prefix Operators and Functions with Side Effects: operator ++ and --operators and have similar high Vipsi command syntax: Arguments
Glossary: Arguments
argument
binding:

Numeric functions: sinsin a       ==  Numeric functions: sinsin(a)
Numeric functions: sinsin 2*Constants: pipi    ==  Numeric functions: sinsin(2) * Constants: pipi   !!

Procedures

Vipsi command syntax: Procedures
Data Types: Procedures
Glossary: Procedure
Procedure
are created with Instructions: procproc:

Instructions: procproc Foo()  { }
Instructions: procproc Numeric functions: sinSin(a) { Flow control: returnreturn Numeric functions: sinsin(a*180/Constants: pipi) }
Instructions: procproc Sum(a,b) { Flow control: returnreturn a+b }
Instructions: var
How does VScript::Value() work?: Var*&
var
Bär = Instructions: procproc() { Flow control: returnreturn "Bääär" }

Calling a Vipsi command syntax: Procedures
Data Types: Procedures
Glossary: Procedure
procedure
works like calling Vipsi command syntax: Functions
Functions
Glossary: Function
functions
:

Instructions: var
How does VScript::Value() work?: Var*&
var
a = Numeric functions: sinSin(270) Instructions: var
How does VScript::Value() work?: Var*&
var
s = Sum(47,11)

Vipsi command syntax: Procedures
Data Types: Procedures
Glossary: Procedure
Procedures
can be nested (List functions: localslocal Vipsi command syntax: Procedures
Data Types: Procedures
Glossary: Procedure
procedures
) Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
can be called recursively.

Flow control

There are some Vipsi command syntax: Instructions
Instructions
Glossary: Instruction
instructions
for conditional execution of Vipsi command syntax: Statements
Glossary: Statement
statements
Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
Flow control: do … looploops.

if … then

Instructions: procproc fak(a) { Flow control: if … thenif a<=1 Flow control: returnreturn 1; Flow control: if … then
Flow control: try … then
else
Flow control: returnreturn a*fak(a-1); Flow control: if … then
Flow control: try … then
then
}

Operators: Bitwise Not "~"
Operators: Boolean Negation "!"
Note
Flow control: if … then
Flow control: try … then
the
slight difference in syntax to C which may be familiar to people accustomed to forth. Flow control: if … then
Flow control: try … then
The
Flow control: if … then
Flow control: try … then
else
part is optional. There is no need to Instructions: putput Flow control: if … then
Flow control: try … then
the
Flow controlcondition in Separators: Round brackets "( … )"
Functions with varying return types: bracket expression "()"
round brackets
as in C, though you can. Flow control: if … then
Flow control: try … then
The
Flow control: end
Shell Immediate Commands: exit, quit, end
end
of an Vipsi command syntax: Expressions
Glossary: Expression
expression
is evident.

do … loop

Instructions: procproc fak(a) { Instructions: var
How does VScript::Value() work?: Var*&
var
r=1; Flow control: do … loopdo; Flow control: whilewhile a>1; r=r*a; a=a-1; Flow control: do … looploop; Flow control: returnreturn r; }

Another variant of List functions: thisthis common Vipsi command syntax: Functions
Functions
Glossary: Function
function
, Numeric functions: nownow with iteration instead of recursion. Flow control: do … loopdo Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
Flow control: do … looploop embrace Flow control: if … then
Flow control: try … then
the
Flow control: do … looploop, Flow control: if … then
Flow control: try … then
the
start Flow controlcondition is set before Flow control: if … then
Flow control: try … then
the
Flow control: do … looploop using standard methods, Flow control: if … then
Flow control: try … then
the
Flow control: do … looploop iterator is decremented using standard methods, Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
Flow control: if … then
Flow control: try … then
the
escape from Flow control: if … then
Flow control: try … then
the
Flow control: do … looploop is done with a Flow control: whilewhile Vipsi command syntax: Statements
Glossary: Statement
statement
.

Flow control: do … loopLoops are always formed with Flow control: do … loopdo Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
Flow control: do … looploop. But there are some more control Vipsi command syntax: Statements
Glossary: Statement
statements
:

Flow control: whilewhile <condition>   procede Flow control: whilewhile Flow controlcondition is true; Flow control: if … then
Flow control: try … then
else
Flow control: exit
Shell Immediate Commands: exit, quit, end
exit
Flow control: do … looploop Flow control: untiluntil <condition> similar to Flow control: whilewhile, but with inverted Flow controlcondition Flow control: exit
Shell Immediate Commands: exit, quit, end
exit
immediately Flow control: exit
Shell Immediate Commands: exit, quit, end
exit
Flow control: if … then
Flow control: try … then
the
Flow control: do … looploop Flow control: nextnext jump to start of Flow control: do … looploop for another go

Identifiers (names)

You need Vipsi command syntax: Identifiers (names)
Identifiers, names
Operators: Make Identifier "@"
Text functions: name
Glossary: Name, Identifier
names
for your Glossary: Variable, var_refvariables Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
Vipsi command syntax: Procedures
Data Types: Procedures
Glossary: Procedure
procedures
. Also each item in a Data Types: Lists and arrays
Item selector "[]": Lists
Glossary: list, list_val
list
may be named.

Flow control: if … then
Flow control: try … then
The
following restrictions are imposed on source Example Scripts: CGI Scripts
Example Scripts: Scripts
scripts
:

Legal names:
anton, cäsar, µ, ΩOperators: Subtract "-"sub, sin21, _, _liste_, Café, Smørebrød, Жизмн.
Illegal names:
catch 23      contains space
Numeric functions: sinsin           pre-defined List functions: words
Shell Immediate Commands: words
word
6pack starts with a Glossary: number, num_valnumber big-letters no '-' allowed

Sequence of evaluation

List functions: words
Shell Immediate Commands: words
Words
are always evaluated Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
executed from left to right as soon as possible. Operators and Functions with Side Effects: operator ++ and --Operators and Vipsi command syntax: Procedures
Data Types: Procedures
Glossary: Procedure
procedures
are executed as soon as their Glossary: Operator
Glossary: Operand
operands
are evaluated. Flow control: if … then
Flow control: try … then
The
interpreter has no freedom of choice!

Pruning is performed for ? … : Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
&& Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
||. Flow control: if … then
Flow control: if … then
If the
result is sufficiently determined by Flow control: if … then
Flow control: try … then
the
first Glossary: Operator
Glossary: Operand
operand
, Flow control: if … then
Flow control: try … then
then
Flow control: if … then
Flow control: try … then
the
second Glossary: Operator
Glossary: Operand
operand
is simply skipped Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
Operators: Bitwise Not "~"
Operators: Boolean Negation "!"
not
executed.

Pruning for &&= Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
||= is Operators: Bitwise Not "~"
Operators: Boolean Negation "!"
not
yet implemented (version 0.8.7)

Valid HTML   Valid CSS