Czy jest dostępna gramatyka POSIX sh lub czy muszę ją odczytać bezpośrednio ze specyfikacji?POSIX sh Gramatyka EBNF
Uwaga Nie interesuje mnie pure sh; rozciągnięta, ale zgodna sh jest również więcej niż w porządku dla moich celów.
Czy jest dostępna gramatyka POSIX sh lub czy muszę ją odczytać bezpośrednio ze specyfikacji?POSIX sh Gramatyka EBNF
Uwaga Nie interesuje mnie pure sh; rozciągnięta, ale zgodna sh jest również więcej niż w porządku dla moich celów.
Zrobiłem trochę więcej kopanie i znaleźć te zasoby:
sh
poradnik znajduje here
Książka Bash zawierający atakujących 2.0 za gramatykę BNF (odszedł z here) z właściwymi dodatek still here
Przeanalizowałem źródła bash
, pdksh
i posh
, ale nie znalazłem niczego zdalnie na poziomie abstrakcji, której potrzebuję.
Spodziewałbym się, że sh, csh, ash, bash, będą zawierać parsery. Ich wersje GNU są open source; możesz po prostu tam sprawdzić.
to nie EBNF - http://git.savannah.gnu.org/cgit/bash.git/plain/parse.y – user1709408
Nie czysty EBNF, ale wariacja Yacca. Możesz znaleźć zasady gramatyki, jeśli spojrzysz. Tak, są one pogrzebane w pozostałej części definicji YACC/Lex. Witamy w prawdziwych definicjach gramatyki dla narzędzi roboczych. –
Standard POSIX definiuje grammar dla powłoki POSIX. Definicja obejmuje adnotowaną gramatykę Yacc. W związku z tym można go przekonwertować na EBNF mniej lub bardziej mechanicznie.
Jeśli chcesz uzyskać "prawdziwą" gramatykę, musisz wyglądać mocniej. Wybierz swoją "prawdziwą powłokę" i znajdź źródło i sprawdź, co to jest gramatyka.
Należy zauważyć, że EBNF nie jest powszechnie używany. Ma ograniczoną wartość praktyczną, zwłaszcza dlatego, że zasadniczo nie ma narzędzi, które by ją wspierały. W związku z tym mało prawdopodobne jest, aby gramatyka EBNF (prawie wszystko) była dostępna od ręki.
[BNF] (https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form#History) jest z łatwością używany: [Grako] (https://pypi.python.org/pypi/grako/) wywodzi [ASTs] (https://pypi.python.org/pypi/grako/3.6.6#abstract-syntax-trees-asts) z [gramatyk BNF] (http://stackoverflow.com/questions/334479/repository -of-bnf-grammars) ([bash] (http://my.safaribooksonline.com/book/operating-systems-and-server-administration/unix/1565923472/syntax/lbs.appd.div.3)) w [Python] (https://docs.python.org/3.6/reference/grammar.html?highlight=grammar), [etc] (https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form #Software_using_BNF) – jalanb
@ cewnik znalazł inną kopię i zapisał ją na WayBackMachine, powinien wydłużyć żywotność łącza. – rubenvb