Có sẵn ngữ pháp sh POSIX hiện có hay tôi có phải tìm ra từ đặc điểm kỹ thuật trực tiếp không?POSIX sh Ngữ pháp EBNF
Lưu ý Tôi không quan tâm nhiều đến số thuần túy sh; một sh mở rộng nhưng phù hợp cũng là tốt hơn cho mục đích của tôi.
Có sẵn ngữ pháp sh POSIX hiện có hay tôi có phải tìm ra từ đặc điểm kỹ thuật trực tiếp không?POSIX sh Ngữ pháp EBNF
Lưu ý Tôi không quan tâm nhiều đến số thuần túy sh; một sh mở rộng nhưng phù hợp cũng là tốt hơn cho mục đích của tôi.
Tôi đã làm một số digging hơn và tìm thấy các nguồn lực:
Một sh
Hướng dẫn được đặt here
Một cuốn sách Bash chứa BNF ngữ pháp Bash 2.0 (đi từ here) với liên quan phụ lục still here
Tôi đã xem xét các nguồn của bash
, pdksh
và posh
nhưng không tìm thấy bất kỳ điều gì từ xa ở mức trừu tượng mà tôi cần.
Tôi mong rằng sh, csh, ash, bash, sẽ chứa các trình phân tích cú pháp. Các phiên bản GNU trong số này là mã nguồn mở; bạn có thể chỉ cần kiểm tra ở đó.
không phải là EBNF - http://git.savannah.gnu.org/cgit/bash.git/plain/parse.y – user1709408
Không thuần túy EBNF, nhưng biến thể của Yacc trên đó. Bạn có thể tìm thấy các quy tắc ngữ pháp nếu bạn nhìn. Có, chúng được chôn cất trong phần còn lại của định nghĩa YACC/Lex. Chào mừng bạn đến với định nghĩa ngữ pháp thực sự cho các công cụ làm việc. –
Chuẩn POSIX xác định grammar cho vỏ POSIX. Định nghĩa bao gồm ngữ pháp Yacc được chú thích. Như vậy, nó có thể được chuyển đổi sang EBNF nhiều hơn hoặc ít hơn về cơ học.
Nếu bạn muốn ngữ pháp 'thực', thì bạn phải nhìn kỹ hơn. Chọn 'vỏ thật' của bạn và tìm nguồn và tìm hiểu ngữ pháp là gì.
Lưu ý rằng EBNF không được sử dụng rộng rãi. Nó có giá trị thực tế hạn chế, không ít nhất là vì về cơ bản không có công cụ hỗ trợ nó. Do đó, bạn không thể tìm thấy một ngữ pháp EBNF (của hầu như bất cứ điều gì) off-the-shelf.
[BNF] (https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form#History) được sử dụng dễ dàng: [Grako] (https://pypi.python.org/pypi/grako/) xuất phát [ASTs] (https://pypi.python.org/pypi/grako/3.6.6#abstract-syntax-trees-asts) từ [ngữ pháp 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)) trong [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
@ceving tìm thấy một bản sao khác và được lưu vào WayBackMachine, nên tăng tuổi thọ liên kết. – rubenvb