Informal grammar¶
- Below is just a sketch of the TethysL grammar.
- Section to be updated or replaced.
topLevel ::= missionType | aggregateType
missionType ::=
"mission" identifier "{"
description?
defineArgs?
defineOutput?
endRunGroup?
maTypeChoice*
"}"
aggregateType ::=
"aggregate" identifier "{"
description?
defineArgs?
defineOutput?
runInGroup
endRunGroup?
preemptive?
maTypeChoice*
"}"
description ::= """...any text..."""
defineArgs ::= "arguments" "{" defineArg* "}"
defineOutput ::= "output" "{" defineArg* "}"
defineArg ::= identifier "=" expression
endRunGroup ::= ergBreak | ergTimeout
ergBreak ::= "break" "{" description? expression "}"
ergTimeout ::= "timeout" duration
duration ::= "duration" "=" string
identifier ::= (letter | "_") (letter | digit | "_" | ".")*
expression ::= orExpression
orExpression ::= andExpression ( orOp andExpression )*
andExpression ::= relExpression ( andOp relExpression )*
relExpression ::= addSubExpression ( relOp addSubExpression )*
addExpression ::= divMulExpression ( asOp divMulExpression )*
orOp ::= "or" | "||"
andOp ::= "and" | "&&"
relOp ::= "<" | "<=" | ">" | ">=" | "==" | "!="
asOp ::= "+" | "-"
Notation:
|
separates alternative forms for the rule. For example, the rule fortopLevel
indicates that a script file can define either a mission or an aggregate.?
means the element is optional*
means the element can appear zero or more times+
means the element can appear one or more times- Strings in double quotes are to be used literally
- Triple quotes (used in
description
) are also to be used literally