Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/third_party/rust/jsparagus/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 1 kB image not shown  

Quelle  pgen.pgen   Sprache: unbekannt

 
Spracherkennung für: .pgen vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

# Grammar for the pgen parser specification language
#
# This was used to bootstrap the parser for the emu-grammar parser
# specification language, and it's not clear why we should have two things.
# Ignore this for now.

var token IDENT;
var token STR;
var token MATCH;
var token COMMENT;
token Eq = "=";
token Arrow = "=>";
token Semi = ";";
token Token = "token";
token Var = "var";
token Nt = "nt";
token Goal = "goal";
token Some = "Some";
token None = "None";
token OpenBrace = "{";
token CloseBrace = "}";
token OpenParen = "(";
token CloseParen = ")";
token Comma = ",";
token QuestionMark = "?";

goal nt grammar {
    token_defs? nt_defs => grammar($0, $1);
}

nt token_defs {
    token_def => single($0);
    token_defs token_def => append($0, $1);
}

nt token_def {
    "token" IDENT "=" STR ";" => const_token($1, $3);
    "var" "token" IDENT ";" => var_token($2);
}

nt nt_defs {
    nt_def => nt_defs_single($0);
    nt_defs nt_def => nt_defs_append($0, $1);
}

nt nt_def {
    COMMENT? "goal"? "nt" IDENT "{" prods? "}" => nt_def($0, $1, $3, $5);
}

nt prods {
    prod => single($0);
    prods prod => append($0, $1);
    COMMENT => empty($0);
}

nt prod {
    terms reducer? ";" => prod($0, $1);
}

nt terms {
    term => single($0);
    terms term => append($0, $1);
}

nt term {
    symbol;
    symbol "?" => optional($0);
}

nt symbol {
    IDENT => ident($0);
    STR => str($0);
}

nt reducer {
    "=>" expr => $1;
}

nt expr {
    MATCH => expr_match($0);
    IDENT "(" expr_args? ")" => expr_call($0, $2);
    "Some" "(" expr ")" => expr_some($2);
    "None" => expr_none();
}

nt expr_args {
    expr => args_single($0);
    expr_args "," expr => args_append($0, $2);
}

[ Dauer der Verarbeitung: 0.32 Sekunden  ]