Bug 1888590 - Mark some subtests on trusted-types-event-handlers.html as failing...
[gecko.git] / third_party / rust / jsparagus / pgen.pgen
blob36b7483bb0a03dcfc07207ce043ac8ebeb76c52e
1 # Grammar for the pgen parser specification language
3 # This was used to bootstrap the parser for the emu-grammar parser
4 # specification language, and it's not clear why we should have two things.
5 # Ignore this for now.
7 var token IDENT;
8 var token STR;
9 var token MATCH;
10 var token COMMENT;
11 token Eq = "=";
12 token Arrow = "=>";
13 token Semi = ";";
14 token Token = "token";
15 token Var = "var";
16 token Nt = "nt";
17 token Goal = "goal";
18 token Some = "Some";
19 token None = "None";
20 token OpenBrace = "{";
21 token CloseBrace = "}";
22 token OpenParen = "(";
23 token CloseParen = ")";
24 token Comma = ",";
25 token QuestionMark = "?";
27 goal nt grammar {
28     token_defs? nt_defs => grammar($0, $1);
31 nt token_defs {
32     token_def => single($0);
33     token_defs token_def => append($0, $1);
36 nt token_def {
37     "token" IDENT "=" STR ";" => const_token($1, $3);
38     "var" "token" IDENT ";" => var_token($2);
41 nt nt_defs {
42     nt_def => nt_defs_single($0);
43     nt_defs nt_def => nt_defs_append($0, $1);
46 nt nt_def {
47     COMMENT? "goal"? "nt" IDENT "{" prods? "}" => nt_def($0, $1, $3, $5);
50 nt prods {
51     prod => single($0);
52     prods prod => append($0, $1);
53     COMMENT => empty($0);
56 nt prod {
57     terms reducer? ";" => prod($0, $1);
60 nt terms {
61     term => single($0);
62     terms term => append($0, $1);
65 nt term {
66     symbol;
67     symbol "?" => optional($0);
70 nt symbol {
71     IDENT => ident($0);
72     STR => str($0);
75 nt reducer {
76     "=>" expr => $1;
79 nt expr {
80     MATCH => expr_match($0);
81     IDENT "(" expr_args? ")" => expr_call($0, $2);
82     "Some" "(" expr ")" => expr_some($2);
83     "None" => expr_none();
86 nt expr_args {
87     expr => args_single($0);
88     expr_args "," expr => args_append($0, $2);