main-class-file-declaration:: = import-declaration main-class-declaration |
import-declaration:: = “Import” (‘”’file-name‘”’ “,”)+ “;” |
main-class-declaration:: = “Class main” |
(constant-declaration ∣ data-declaration∣ env-instance-declaration |
∣ channel-declaration ∣ timer-declaration)+ |
(invariant-declaration)? |
env-instance-declaration:: = “Var” (env-variable-declaration ∣ instance-declaration)+ |
env-variable-declaration:: = |
env-variable-name “:” type-name (“{” value “}”)? (test-declaration)? “;” |
∣ env-variable-name “” number “..” number “” “:” type-name (“{“value (“,” value)* “}”)? (test-declaration)? “;” |
∣ env-variable-name “:” (“int” ∣ “double”) |
(““min-value “,” max-value “”)? (“{”value“}”)? (test-declaration)? “;” |
∣ env-variable-name ““number “..” number“” “:” (“int” ∣ “double”) |
(“”min-value “,” max-value “”)? (“{”value (“,” value)* “}”)? (test-declaration)? “;” |
instance-declaration::= |
object-name “:” class-name (“(” parameter-value (“,” parameter-value)* “)”)? “;” |
∣ object-name “” number “..” number “” “:” class-name |
(“{” “(”value (“,” value)* “)” (“,” “(” value (“,” value)* “)”)* “}”)? “;” |
invariant-declaration::= “Inv” (expr “;”)+ |