blob: 865a4d3c9c95e563f7bf1b0757c87d45e50578b7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
Token types:
keyword
identifier
punctuation (";" "{" "}" "(" ")" "," "|" "=" ":")
path-literal
char-literal
string-literal
bool-literal
int-literal
float-literal
call-expr (e.g., (a, 2))
template-expr (e.g., <a, 2>)
end-of-stream
def-unit:
include-decl-seq(opt) decl-seq(opt)
include-decl-seq:
include-decl
include-decl-seq include-decl;
include-decl:
"include" path-literal ";"
decl-seq:
decl
decl-seq decl
decl:
namespace-def
class-def
namespace-def:
"namespace" identifier "{" namespace-body "}"
namespace-body:
decl-seq(opt)
class-def:
"class" identifier "{" option-def-seq(opt) "};"
option-def-seq:
option-def
option-def-seq option-def
option-def:
type-spec option-name-seq initializer(opt) ";"
type-spec:
fundamental-type-spec
qualified-name
option-name-seq:
option-name
option-name-seq "|" option-name;
option-name:
option-identifier
string-literal
initializer:
"=" initializer-expr
call-expr
initializer-expr:
bool-literal
int-literal
float-literal
char-literal
string-literal
qualified-name
call-expr
qualified-name:
"::" qualified-name-trailer
qualified-name-trailer
qualified-name-trailer:
template-id
qualified-name "::" template-id
template-id:
identifier template-expr(opt)
fundamental-type-spec:
"bool"
...
"long double"
|