File tree Expand file tree Collapse file tree 3 files changed +60
-0
lines changed Expand file tree Collapse file tree 3 files changed +60
-0
lines changed Original file line number Diff line number Diff line change @@ -210,3 +210,31 @@ var expandCollapseBlock = function (e) {
210
210
}
211
211
}
212
212
----
213
+
214
+ == BNF syntax example
215
+
216
+ === Single-line rules
217
+
218
+ [source, gql-bnf]
219
+ ----
220
+ <simple match statement> ::= "MATCH" <graph pattern>
221
+ <path pattern> ::= [ <identifier> "=" ] [ <path pattern prefix> ] <path pattern expression>
222
+ ----
223
+
224
+ === Multi-line rules
225
+
226
+ [source, gql-bnf]
227
+ ----
228
+ <simple match statement> ::=
229
+ "MATCH" <graph pattern> "{}"
230
+
231
+ <graph pattern> ::=
232
+ [ <match mode> ] <path pattern> [ { "," <path pattern> }... ] [ <graph pattern where clause> ]
233
+
234
+ <match mode> ::=
235
+ "REPEATABLE" { "ELEMENT" [ "BINDINGS" ] | "ELEMENTS" }
236
+ | "DIFFERENT" { "RELATIONSHIP" [ "BINDINGS" ] | "RELATIONSHIPS" }
237
+
238
+ <path pattern> ::=
239
+ [ <identifier> "=" ] [ <path pattern prefix> ] <path pattern expression>
240
+ ----
Original file line number Diff line number Diff line change 54
54
color : rgba (var (--colors-forest-40 ));
55
55
}
56
56
57
+ .hljs-operator {
58
+ color : rgba (var (--colors-neutral-50 ));
59
+ }
60
+
57
61
.hljs-symbol ,
58
62
.hljs-bullet {
59
63
color : var (--color-indigo-800 );
Original file line number Diff line number Diff line change 128
128
]
129
129
}
130
130
} )
131
+ // Custom flavor of BNF syntax defined in GQL standard docs
132
+ hljs . registerLanguage ( 'gql-bnf' ,
133
+ function gql_bnf ( hljs ) {
134
+ return {
135
+ name : 'Custom BNF syntax for GQL' ,
136
+ contains : [
137
+ {
138
+ // Use "attribute" for nonterminals as the included BNF/ABNF/EBNF do
139
+ className : 'attribute' ,
140
+ begin : / < / ,
141
+ end : / > /
142
+ } ,
143
+ {
144
+ // It should be enough to treat syntax extension symbols just as simple operators.
145
+ // Symbols include:
146
+ // - Square brackets (optional elements)
147
+ // - Braces (element group)
148
+ // - Vertical bar (alternative operator)
149
+ // - Ellipsis (element repetition)
150
+ className : 'operator' ,
151
+ begin : / [ [ \] { } | ] | \. \. \. /
152
+ } ,
153
+ // Double quote-delimited strings
154
+ hljs . QUOTE_STRING_MODE ,
155
+ hljs . C_LINE_COMMENT_MODE
156
+ ]
157
+ } ;
158
+ } )
131
159
hljs . highlightAll ( )
132
160
133
161
// Apply line highlighting to lines marked with `// marked-line`
You can’t perform that action at this time.
0 commit comments