Ich habe noch mehr gegraben und diese Ressourcen gefunden:
Ein sh
Tutorial befindet sich hier
Ein Bash-Buch, das die BNF-Grammatik von Bash 2.0 enthält (aus hier ) ) mit dem entsprechenden Anhang immer noch hier
Ich habe die Quellen von bash
, pdksh
und posh
durchgesehen, aber auf der Abstraktionsebene, die ich brauche, nichts entfernt gefunden.
Der POSIX-Standard definiert die Grammatik für die POSIX-Shell. Die Definition enthält eine kommentierte Yacc-Grammatik. Als solches kann es mehr oder weniger mechanisch in EBNF umgewandelt werden.
Wenn Sie eine "echte" Grammatik wollen, dann müssen Sie härter schauen. Wähle deine 'echte Shell' und finde die Quelle und finde heraus, woraus die Grammatik besteht.
Beachten Sie, dass EBNF nicht weit verbreitet ist. Es ist von begrenztem praktischen Wert, nicht zuletzt, weil es im Wesentlichen keine Werkzeuge gibt, die es unterstützen. Daher ist es unwahrscheinlich, dass Sie eine EBNF-Grammatik (von fast allem) von der Stange finden.
Ich würde erwarten, dass sh, csh, ash, bash Parser enthalten würden. GNU-Versionen davon sind Open Source; Sie könnten einfach dort nachsehen.