Manual
Expressions
 previous   up   next 

11. EXPRESSIONS

There are two types of expressions. On one side there so called simple expressions, which are constructed using fixed predefined syntax rules. On the other side there are expressions which are constructed according to syntax rules. Syntax rules are defined with syntax declarations. How syntax declarations work is described in Chapter 3.2 (Syntax declarations) and chapter 9 (Structured syntax definition). The syntax declarations support the extensible syntax of Seed7. A simplified description of user defined expressions, which does not take priority levels into account, is:

expression ::=
prefix_expression | infix_expression | simple_expression .

prefix_expression ::=
identifier { identifier | expression } .

infix_expression ::=
expression identifier { identifier | expression } .

simple_expression ::=
dot_expression | call_expression .

The chapters below describe the predefined syntax rules of simple expressions.

11.1 Parentheses

Parentheses can be used to override any precedence rules of predefined and user defined syntax constructs. For example

2 * (3 + 4)

specifies that the + operator gets his parameters first.

Syntax:
parentheses_expression ::=
'(' expression ')' .

11.2 Call expressions

Call expressions can also be used to form a list. For example

writeln("hello world")

forms a list expression with the elements

"hello world"
writeln

The type of this list is specified with the system-declaration "system expr", which is defined in the include file "syntax.s7i" included from "seed7_05.s7i" as

$ system "expr" is expr;

A call expression with two parameters as

pos("Scotty! Beam me up.", "am")

forms a list expression with the elements

"Scotty! Beam me up."
"am"
pos
Syntax:
call_expression ::=
primary_expression [ '(' parameter_list ')' ] .

primary_expression ::=
parentheses_expression | token .

parameter_list ::=
expression { ',' expression } .

11.3 Dot expressions

Dot expressions start with a dot and have dots as separator between the elements of the list. For example

.not.TRUE

and

.OKAY.and.GO_ON

form list expressions with the elements

not
TRUE

and

OKAY
and
GO_ON

The type of this list is specified with the system-declaration "system expr", which is defined in the include file "syntax.s7i" included from "seed7_05.s7i" as

$ system "expr" is expr;

Dot expressions override the priority of the elements. Dot expressions are used in syntax-declarations.

Syntax:
dot_expression ::=
'.' dot_subexpression { '.' dot_subexpression } .

dot_subexpression ::=
empty_parentheses | parentheses_expression | call_expression .

empty_parentheses ::=
'(' ')' .


 previous   up   next