blob: fa357dd009806b3761b49c9cf5d64191bd342a30 (
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
|
@@ No support for template ids
@@ No support for expressions (e.g., 2*2)
Token types:
keyword
identifier
punctuation (";" "{" "}" "(" ")" "," "|" "=" ":")
bracket-literal
string-literal
bool-literal
int-literal
float-literal
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:
"=" argument-expr
"(" argument-seq(opt) ")"
argument-seq:
argument-expr
argument-seq "," argument-expr
argument-expr:
bool-literal
int-literal
float-literal
string-literal
qualified-name
qualified-name:
identifier
qualified-name "::" identifier
fundamental-type-spec:
"bool"
...
"long double"
|