A Statement describes some behavior of an Endpoint.
Statements are nested under an Endpoint or another parent Statement. There are quite a few kinds of Statement to capture different kinds of behavior:
Action: Just some plain text describing something, like
Call: A call to an Endpoint of an Application (
.for same, or the name of another).
- Used to generate diagrams with interactions between Applications (e.g. integration and sequence diagrams).
Cond: A conditional branch (
else if something,
elsekeywords are case-insensitive.
Group: A collection of child Statements.
Return: The return of a status and value from the Endpoint (
return status <: Type).
Statements: IfStmt: if predicate1: # more statements return ok <: string else if predicate2: # more statements . <- IfStmt else: # more statements ... Loops: alt predicate: # more statements ... until predicate: # more statements ... for each predicate: # more statements ... for predicate: # more statements ... loop predicate: # more statements ... while predicate: # more statements ... Returns: return ok <: string return ok <: Types.Type return error <: Types.Type Calls: # self call . <- Returns # Rest endpoint call RestEndpoint <- GET /param OneOfStatements: one of: case1: # more statements return ok <: string case number 2: # more statements return ok <: int "case 3": # more statements return ok <: Types.Type : return error <: string GroupStatements: grouped: # more statements . <- GroupStatements Annotations: @annotation1 = "you can do string annotation like this" @annotation2 = ["or", "in", "an", "array"] @annotation3 =: | you can also do | multiline annotations | like this AnnotatedStatements: . <- Miscellanous [annotation="annotation can be added for any statement as a string"] return ok <: string [annotation=["as", "an", "array"]] "statement" [annotation=[["or", "as", "an"], ["array", "of", "arrays"]]] Miscellanous: | you can add comments like this "string statements" SimpleEndpoint -> SimpleEp # TODO: what's this for?