Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  pgen.pgen   Sprache: unbekannt

 
# 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.2 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge