Expression =
SimpleExpression | SimpleExpression RelationOperator SimpleExpression
RelationOperator = "<" | "=" | ">" | "<=" | "<>" | ">="
Egy kifejezés egy előírást ad egy meghatározott típus egy értékének kiszámítása. Egy kifejezés értéke vagy egy egyszerű kifejezés értéke vagy azaz érték amit két egyszerű kifejezés értékéből kapunk , ha alkalmazunk rá egy operátort a megadottak közül.
- ha x és y integer ( vagy valós) operandusok, akkor az x < y kifejezés értéke igaz, ha x kisebb, mint y, egyébként hamis. Ha x és y ugyanazon egyszerű típus elemei akkor az x < y kifejezés értéke azonos az integer(x) < integer(y) kifejezés értékével.
A többi kifejezés definíciója hasonlóan adható meg.
- ha x és y operandusok típusa azonos, ami felsorolási ( vagy rekord) típus, akkor a következő kifejezések logikai típusú értékeket jelentenek.
x = y és x <> y
x=y értéke igaz, ha x és y azonos elemek (vagy mezők) sorozatából áll, egyébként hamis. Az x <> y értéke azonos a not( x= y) kifejezés értékével.
- ha x és y string operandusok és azonos típusúak, akkor a következő logikai típusú értékeket jelentenek.
x < y x = y x > y x <= y x <> y x >=y
Megvizsgálja az x és y elemeit az indexeik sorrendjében. Addig, amíg el nem éri a legnagyobb indexet vagy az első olyat, amire x[i]<>y[i], és veszi ezt az i indexet.
Az x < y értéke ebben az esetben az x[i]
- ha x és y azonos port típusú operandusok, akkor a következő kifejezések logikai típusú értékeket jelentenek.
x=y és x <>y
Az x=y értéke igaz, ha x és y ugyanazt a csatornát jelöli ( vagy a nil értéket) egyébként hamis. Az x <> y értéke azonos a not(x=y) értékével.
Példa
x=1
x > 0
s<> str("edit")
imp = nil stream
Egyszerű kifejezések
SimpleExpression = Term | SingOperator Term | SimpleExpression AddingOperetor Term
SingOperator = '+' | '-'
AddingOperator = '+' | '-' | "or"
- ha x és y integer operandusok, akkor a következő egyszerű kifejezések is integer értékeket jelentenek
+x identitás
-x komplementer
x+y összeadás
x-y kivonás
ha x és y valós operandusok akkor a fenti kifejezések valós értékeket jelölnek.
- ha x és y logikai típusú, akkor a az alábbi egyszerű kifejezés logikai értéket jelöl.
x or y diszjunkció
Az értéke igaz, ha x vagy x értéke igaz, egyébként hamis.
Termek
Term = Factor | Term MultiplyingOperator Factor
MultiplyingOperator = "*" | "/" | "div" | "mod" | "and"
- Ha x és y integer operandusok, akkor a következő termek integer értékeket jelölnek.
x*y szorzás
x div y osztás (egészrész)
x mod y osztás (maradék)
A következő reláció az osztás során fenn áll.
x = ( x div y) * y + (x mod y)
- Ha x és y valós típusú, akkor a következő term valós értéket jelöl.
x*y szorzás
x/y osztás
- Ha x és y logikai típusú opernadusok, akkor
x and y
is logikai értéket jelöl.
Az értéke igaz, ha x és y mindkettő igaz, egyébként hamis,.
Factorok
Factor= Constant | Variableretrial | Constructor | "(" Expression ")" | "not" Factor
Ha x logikai típusú operandus, akkor a
not x
logikai értéket is jelöl.
Az érték igaz, ha x értéke hamis, egyébként hamis.
Példa
10
x
(x+1)
not more
Változó értéke
Variableretrieval = VariableAccess
A változó értékét jelöli, ha meg nincs érték a változóhoz rendelve, akkor nincs definiálva az értéke.
Típuskontrukciók
Constructor= TypeName "(" ConstructorOperand ")"
ConstructorOperand = Expression | StringToken
StringToken = """ {GraphicCracter } """
- Ha x egyszerű operandus, akkor a konstruktor az integer (x) által meghatározott x integer értéket jelenti.
- Ha x egyszerű operandus, és T egy ismert (beépített) egyszerű típus, akkor a T(x) konstrukció a T típus azon egyszerű értékét jelenti, ami az integer(x) értéknek felel meg.
- Ha x integer operandus akkor a real (x) az x-nek megfelelő valós értéket jelöli.
- Ha x valós operandus akkor integer(x) az x-nek megfelelő integer értéket jelöli.
- Ha x string operandus és T egy ismert string típus, akkor a T(x) egy T típusú stringet jelöl. Ha |T| > |x| , akkor a T(x) tartalmazza az x-t és utána meg |T|-|x| darab null karaktert, egyébként ax x első |T| darab karakterét. A null karakter a char(0)-val egyenlő.
Példák
char(x+integer('0'))
real(2)
integer(e)
str("This is a string of type str")