112 lines
2.1 KiB
Plaintext
112 lines
2.1 KiB
Plaintext
module IBAF-Statements
|
|
|
|
imports
|
|
IBAF-Expressions
|
|
Funcons
|
|
|
|
// Language "IBAFlang"
|
|
|
|
lexical syntax // Language
|
|
|
|
// # Statements
|
|
|
|
|
|
|
|
// # Handling variable declarations
|
|
|
|
|
|
|
|
syntax // Language
|
|
|
|
// # Statements
|
|
|
|
|
|
|
|
// # Handling variable declarations
|
|
|
|
|
|
|
|
context-free syntax // Language
|
|
|
|
// # Statements
|
|
|
|
|
|
L-statement.L-statement--LBRACE-L-statement-S-RBRACE =
|
|
"{" L-statement* "}"
|
|
L-statement.L-statement--R-print-LPAREN-L-exp-RPAREN-SEMI =
|
|
"print" "(" L-exp ")" ";"
|
|
L-statement.L-statement--L-type-L-id-SEMI =
|
|
L-type L-id ";"
|
|
L-statement.L-statement--L-type-L-id-EQUALS-L-exp-SEMI =
|
|
L-type L-id "=" L-exp ";"
|
|
L-statement.L-statement--L-id-EQUALS-L-exp-SEMI =
|
|
L-id "=" L-exp ";"
|
|
|
|
L-type.L-type--R-int =
|
|
"int"
|
|
L-type.L-type--R-bool =
|
|
"bool"
|
|
L-type.L-type--L-id =
|
|
L-id
|
|
|
|
|
|
// # Handling variable declarations
|
|
|
|
|
|
|
|
context-free syntax // Semantics
|
|
|
|
// # Statements
|
|
|
|
|
|
FCT.T-execute =
|
|
"execute" "[:" L-statement* ":]"
|
|
|
|
// # Handling variable declarations
|
|
|
|
|
|
FCT-SEQ.T-collect-declared-vars =
|
|
"collect-declared-vars" "[:" L-statement* ":]"
|
|
|
|
context-free syntax // Desugaring
|
|
|
|
// # Statements
|
|
|
|
|
|
|
|
// # Handling variable declarations
|
|
|
|
|
|
|
|
variables // Meta-variables
|
|
|
|
// # Statements
|
|
|
|
|
|
L-statement = "(:Stmt" [1-9]? ":)" {prefer}
|
|
L-statement? = "(:Stmt" [1-9]? "?:)" {prefer}
|
|
L-statement* = "(:Stmt" [1-9]? "*:)" {prefer}
|
|
L-statement+ = "(:Stmt" [1-9]? "+:)" {prefer}
|
|
L-statement* = "..." [1-9]? {prefer}
|
|
L-type = "(:Typ" [1-9]? ":)" {prefer}
|
|
L-type? = "(:Typ" [1-9]? "?:)" {prefer}
|
|
L-type* = "(:Typ" [1-9]? "*:)" {prefer}
|
|
L-type+ = "(:Typ" [1-9]? "+:)" {prefer}
|
|
|
|
// # Handling variable declarations
|
|
|
|
|
|
|
|
// SDF comments
|
|
|
|
// # Statements
|
|
|
|
|
|
|
|
// # Handling variable declarations
|
|
|
|
|
|
|
|
sorts // ASTs
|
|
T-start
|