|
An EBNF concrete syntax for BIR.
Authors: Robby, Matthew Hoosier
System
Identifier
| [3] |
<id> |
::= |
<basic-id> | <bogor-id> |
|
| [4] |
<basic-id> |
::= |
<letter> (<letter> | <digit>)* |
|
| [5] |
<bogor-id> |
::= |
"{|" <bogor-id-char(})>*
"|}" | "(|" <bogor-id-char())>*
"|)" | "<|" <bogor-id-char(>)>*
"|>" | "[|" <bogor-id-char(])>*
"|]" | "/|" <bogor-id-char(\\)>*
"|\\" | "\\|" <bogor-id-char(/)>*
"|/" | "+|" <bogor-id-char(+)>*
"|+" | ".|" <bogor-id-char(.)>*
"|." |
|
| [6] |
<type-var-id> |
::= |
"`" <letter> (<letter> | <digit>)* |
|
| [7] |
<bogor-id-char(x)> |
::= |
-['|',
'\n', '\t', '\r'] | '|' -['x'] |
|
| [8] |
<letter> |
::= |
['\u0024',
'\u0041'-'\u005a', '\u005f', '\u0061'-'\u007a', '\u00c0'-'\u00d6',
'\u00d8'-'\u00f6', '\u00f8'-'\u00ff', '\u0100'-'\u1fff',
'\u3040'-'\u318f', '\u3300'-'\u337f', '\u3400'-'\u3d2d',
'\u4e00'-'\u9fff', '\uf900'-'\ufaff'] |
|
| [9] |
<letter> |
::= |
['\u0030'-'\u0039',
'\u0660'-'\u0669', '\u06f0'-'\u06f9', '\u0966'-'\u096f',
'\u09e6'-'\u09ef', '\u0a66'-'\u0a6f', '\u0ae6'-'\u0aef',
'\u0b66'-'\u0b6f', '\u0be7'-'\u0bef', '\u0c66'-'\u0c6f',
'\u0ce6'-'\u0cef', '\u0d66'-'\u0d6f', '\u0e50'-'\u0e59',
'\u0ed0'-'\u0ed9', '\u1040'-'\u1049'] |
|
|
Type
Literal
| [37] |
<lit> |
::= |
<boolean-lit>
| <char-lit>
| (("+" | "-")? <int-lit>
| <real-lit>)
| <string-lit>
| <null-lit> |
|
| [38] |
<boolean-lit> |
::= |
"true" |
"false" |
|
| [39] |
<char-lit> |
::= |
"'" <char> "'" |
|
| [40] |
<int-lit> |
::= |
<dec> | <oct> | <hex> |
|
| [41] |
<long-lit> |
::= |
(<dec> | <oct> | <hex>) ['l', 'L'] |
|
| [42] |
<real-lit> |
::= |
<float-lit> | <double-lit> |
|
| [43] |
<float-lit> |
::= |
<dec-digit>+
'.' <dec-digit>*
<exponent>?
['f', 'F'] | '.' <dec-digit>+
<exponent>?
['f', 'F'] | <dec-digit>+
<exponent>?
['f', 'F'] | "NaNf" | "pINFf" | "nINFf" |
|
| [44] |
<double-lit> |
::= |
<dec-digit>+
'.' <dec-digit>*
<exponent>?
['d', 'D']? | '.' <dec-digit>+
<exponent>?
['d', 'D']? | <dec-digit>+
<exponent>?
['d', 'D']? | "NaNd" | "pINFd" | "nINFd" |
|
| [45] |
<string-lit> |
::= |
'"' <char>* '"' |
|
| [46] |
<null-lit> |
::= |
"null" |
|
| [47] |
<char> |
::= |
-[''','\\',
'\n','\r'] | ('\\' (['n','t','b','r','f', '\\',''','"'] | <oct-digit> <oct-digit>? |
<zero-three-digit>
<oct-digit>
<oct-digit>)) |
|
| [48] |
<dec> |
::= |
<one-nine-digit><dec-digit> |
|
| [49] |
<oct> |
::= |
'0' <oct-digit>* |
|
| [50] |
<hex> |
::= |
'0' ('x' |
'X') <hex-digit>+ |
|
| [51] |
<oct-digit> |
::= |
['0'-'7'] |
|
| [52] |
<zero-three-digit> |
::= |
['0'-'3'] |
|
| [53] |
<dec-digit> |
::= |
['0'-'9'] |
|
| [54] |
<one-nine-digit> |
::= |
['1'-'9'] |
|
| [55] |
<hex-digit> |
::= |
['1'-'9',
'a'-'f', 'A'-'F'] |
|
| [56] |
<exponent> |
::= |
['e','E']
['+','-']? <dec-digit>+ |
|
|
Constant
Enum
Record
Extension
Type Alias
Global Variable
Thread and Function
Low-level Thread and Function Body
High-level Thread and Function Body
Viurtual Table
Functional Expression (fun)
Expression
Action
|