49 lines
1.0 KiB
Plaintext
49 lines
1.0 KiB
Plaintext
module IBAF-Statements
|
|
|
|
imports
|
|
IBAF-Expressions
|
|
Funcons
|
|
|
|
// Language "IBAFlang"
|
|
|
|
lexical syntax // Language
|
|
|
|
syntax // Language
|
|
|
|
context-free syntax // Language
|
|
L-stmt.L-stmt--L-type-L-id-EQUALS-L-exp-SEMI =
|
|
L-type L-id "=" L-exp ";"
|
|
L-stmt.L-stmt--R-print-LPAREN-L-exp-RPAREN-SEMI =
|
|
"print" "(" L-exp ")" ";"
|
|
L-stmt.L-stmt--L-stmt-L-stmt =
|
|
L-stmt L-stmt
|
|
|
|
L-type.L-type--R-int =
|
|
"int"
|
|
L-type.L-type--R-bool =
|
|
"bool"
|
|
L-type.L-type--L-id =
|
|
L-id
|
|
|
|
|
|
context-free syntax // Semantics
|
|
FCT.T-execute =
|
|
"execute" "[:" L-stmt ":]"
|
|
|
|
context-free syntax // Desugaring
|
|
|
|
variables // Meta-variables
|
|
L-stmt = "(:Stmt" [1-9]? ":)" {prefer}
|
|
L-stmt? = "(:Stmt" [1-9]? "?:)" {prefer}
|
|
L-stmt* = "(:Stmt" [1-9]? "*:)" {prefer}
|
|
L-stmt+ = "(:Stmt" [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}
|
|
|
|
// SDF comments
|
|
|
|
sorts // ASTs
|
|
T-start
|