2.3.16. - Grammar Rules
This syntax summary defines how all the built-in keywords,
operators and commands of
spec
can be combined.
These grammar rules are similar to those given
in standard C-language manuals.
Operators are listed in order of precedence, with
the highest precedence operators listed first.
The following terms are used in the grammar rules:
lvalue |
- |
"Left value", something on the left side of an equals sign. |
binop |
- |
A binary operator (+, -, etc.). |
asgnop |
- |
An assignment operator (=, +=, etc.). |
assoc-array |
- |
An associative (original-style) array. |
assoc-elem-list |
- |
A space- or comma-separated list of associative array elements. |
identifier |
- |
A variable. |
identifier-list |
- |
A space- or comma-separated list of identifiers. |
pattern |
- |
An alphanumeric string possibly containing the metacharacters ? or *. |
pattern-list-opt |
- |
An optional space-separated list of patterns. |
expression-list |
- |
A comma-separated list of expressions. |
expr-opt |
- |
An optional expression. |
; |
- |
A semicolon or a newline. (A semicolon after a statement is optional if the statement is followed by a newline.) |
Note, that in the following list, the entry
expression in assoc-array
is included in the rules of what constitutes an
expression.
This is a special expression that
evaluates to nonzero (or
true ) if
assoc-array[expr]
is an existing element of the array, and
zero (or
false ) otherwise.
For a two-dimensional associative array,
expr1 in assoc-array[expr2]
is nonzero if
assoc-array[expr2][expr1]
is an element of the array.
These are the grammar rules:
expression:
lvalue
numeric-constant
string-constant
( expression )
function ( expression-list )
- expression
! expression
~ expression
++ lvalue
-- lvalue
lvalue ++
lvalue --
expression ? expression : expression
expression binop expression
expression in assoc-array
lvalue asgnop expression
expression , expression
expression expression
lvalue:
identifier
identifier [ expression ]
identifier [ expression ] [ expression ]
binop:
* / %
+ -
>> <<
> < <= >=
== !=
&
^
|
&&
||
asgnop:
= += -= *= /= %= >>= <<= &= ^= |=
data-array-type
string
byte
ubyte
short
ushort
long
ulong
float
double
data-array-declaration:
array identifier[expression]
data-array-type array identifier[expression]
array identifier[expression][expression]
data-array-type array identifier[expression][expression]
compound-statement:
{ statement-list }
statement-list:
statement
statement statement-list
statement:
compound-statement
expression ;
if ( expression ) statement
if ( expression ) statement else statement
while ( expression ) statement
for ( expr-opt ; expr-opt ; expr-opt ) statement
for ( identifier in assoc-array ) statement
break ;
continue ;
exit ;
history expr-opt ;
lscmd pattern-list-opt ;
print expression-list ;
global identifier-list ;
constant identifier expression ;
unglobal identifier-list ;
delete assoc-elem-list ;
local identifier-list ;
syms pattern-list-opt ;
data-array-declaration ;
shared data-array-declaration ;
def identifier string-constant ;
rdef identifier expression ;
undef identifier-list ;
prdef pattern-list-opt ;
lsdef pattern-list-opt ;
memstat ;
savstate ;
reconfig ;
getcounts ;
move_all ;
move_cnt ;
sync ;
|