ბეკუს-ნაურის ფორმალიზმი

18:27, 31 დეკემბერი 2020-ის ვერსია, imported>InternetArchiveBot (გადარჩენა 1 წყაროების და მონიშვნა 0 მკვდრად.) #IABot (v2.0.7)
(განსხ.) ←წინა ვერსია | მიმდინარე შესწორების ჩვენება (განსხ.) | შემდეგი ვერსია→ (განსხ.)

ბეკუს-ნაურის ფორმალიზმიმეტასინტაქსი (ინგლისური შემოკლებით BNF), რომელიც იხმარება კონტექსტისგან თავისუფალი გრამატიკის შესაქმნელად. ბეკუს-ნაურის ფორმალიზმი ფორმალური ენების აღსაწერი ფორმალური საშუალებაა.

ეს სინტაქსი არის გამოგონილი ჯონ ბეკუსის და პეტერ ნაურის მიერ Algol 60 ენის გრამატიკის შექმნის დროს.

სინტაქსი

BNF-ში განასხვავებენ მეტასიმბოლოებს, საბოლოო ტერმინებს (terminals) და არა საბოლოო ტერმინებს (non terminals). მეტასიმბოლოები წარმოადგენენ BNF-ის სიმბოლოებს. არა საბოლოო ტერმინების სიმბოლოები წარმოადგენენ დაწესებული კატეგორიების სახელებს, და საბოლოო ტერმინები არიან აღწერილი ენის სიმბოლოები.

ავიღოთ მაგალითად C პროგრამირების ენის if-ის სტრუქტურა: <source lang=bnf>

 <if_structure> ::= if "(" <condition> ")" "{"  "}" 

</source>

წარმოადგენენ არა საბოლოო ტერმინებს. ::= არის მეტა-სიმბოლო რომელიც ნიშნავს "განსაზღვრულია". if, "(", ")", "{" და "}" არიან საბოლოო ტერმინები. როდესაც საბოლოო ტერმონები მარტო ერთი ნიშნით შედგებიან, არა ალფაციფრულ ნიშანებს შეიცავენ ან მითი არევა შესაძლოა მეტა-სიმბოლოებთან, ვათავსებთ ბრჭყალებში.

ხშირად ხდება ისე რომ არა საბოლოო ტერმინი სხვადასხვანაირად აღიქვას. ასეთ შემთხვევაში ვხმარობთ | მეტა-სიმბოლოს. <source lang=bnf>

 <category> ::= <one> | <two> | ...

</source>

ზოგჯერ ფრჩხილებსაც ვხმარობთ: <source lang=bnf>

 <category> ::= ( <one> | <two> ) <three>

</source> რაც უდრის : <source lang=bnf>

 <category> ::= <one> <three> | <two> <three>

</source>

რესურსები ინტერნეტში

  • (ინგლისური) BNF Web Club Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted გთავაზობთ რამდენიმე პროგრამირების ენის BNF-ს