Есть ли существующая грамматика POSIX sh или мне нужно выяснить ее из спецификации напрямую?POSIX sh EBNF grammar
Примечание: Меня интересует только sh; расширенный, но соответствующий sh также более чем подходит для моих целей.
Есть ли существующая грамматика POSIX sh или мне нужно выяснить ее из спецификации напрямую?POSIX sh EBNF grammar
Примечание: Меня интересует только sh; расширенный, но соответствующий sh также более чем подходит для моих целей.
Я сделал еще некоторое рытье и нашел эти ресурсы:
sh
учебник находится here
Баш книга, содержащая грамматику BNF Bash 2.0 в (путь от here) с соответствующими приложение still here
Я просмотрел источники bash
, pdksh
и posh
, но ничего не нашли удаленно на уровне абстракции, в которой я нуждаюсь.
Я бы ожидал, что sh, csh, ash, bash будут содержать парсеры. Варианты GNU - с открытым исходным кодом; вы можете просто пойти туда проверить.
это не EBNF - http://git.savannah.gnu.org/cgit/bash.git/plain/parse.y – user1709408
Не чистый EBNF, но вариация Yacc на нем. Вы можете найти правила грамматики, если вы посмотрите. Да, они похоронены среди остальной части определения YACC/Lex. Добро пожаловать в настоящие определения грамматики для рабочих инструментов. –
В стандарте POSIX определяется оболочка POSIX grammar. Определение включает аннотированную грамматику Yacc. Таким образом, он может быть преобразован в EBNF более или менее механически.
Если вы хотите «настоящую» грамматику, вам придется выглядеть сложнее. Выберите свою «настоящую оболочку» и найдите источник и определите, из чего состоит грамматика.
Обратите внимание, что EBNF широко не используется. Он имеет ограниченную практическую ценность, не в последнюю очередь потому, что по существу нет инструментов, которые его поддерживают. Таким образом, вы вряд ли найдете грамматику EBNF (почти ничего) готовой.
[BNF] (https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form#History) используется легко: [Grako] (https://pypi.python.org/pypi/grako/) выводит [ASTs] (https://pypi.python.org/pypi/grako/3.6.6#abstract-syntax-trees-asts) из [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)) в [Python] (https://docs.python.org/3.6/reference/grammar.html?highlight=grammar), [и т. Д.] (Https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form #Software_using_BNF) – jalanb
@ceving нашел другую копию и сохранил ее в WayBackMachine, должен увеличить долговечность ссылки. – rubenvb