ბეკუს-ნაურის ფორმალიზმი
ბეკუს-ნაურის ფორმალიზმი — მეტასინტაქსი (ინგლისური შემოკლებით BNF), რომელიც იხმარება კონტექსტისგან თავისუფალი გრამატიკის შესაქმნელად. ბეკუს-ნაურის ფორმალიზმი ფორმალური ენების აღსაწერი ფორმალური საშუალებაა.
ეს სინტაქსი არის გამოგონილი ჯონ ბეკუსის და პეტერ ნაურის მიერ Algol 60 ენის გრამატიკის შექმნის დროს.
სინტაქსი
[რედაქტირება | წყაროს რედაქტირება]BNF-ში განასხვავებენ მეტასიმბოლოებს, საბოლოო ტერმინებს (terminals) და არა საბოლოო ტერმინებს (non terminals). მეტასიმბოლოები წარმოადგენენ BNF-ის სიმბოლოებს. არა საბოლოო ტერმინების სიმბოლოები წარმოადგენენ დაწესებული კატეგორიების სახელებს, და საბოლოო ტერმინები არიან აღწერილი ენის სიმბოლოები.
ავიღოთ მაგალითად C პროგრამირების ენის if-ის სტრუქტურა:
<if_structure> ::= if "(" <condition> ")" "{" <code> "}"
წარმოადგენენ არა საბოლოო ტერმინებს. ::= არის მეტა-სიმბოლო რომელიც ნიშნავს "განსაზღვრულია". if, "(", ")", "{" და "}" არიან საბოლოო ტერმინები. როდესაც საბოლოო ტერმონები მარტო ერთი ნიშნით შედგებიან, არა ალფაციფრულ ნიშანებს შეიცავენ ან მითი არევა შესაძლოა მეტა-სიმბოლოებთან, ვათავსებთ ბრჭყალებში.
ხშირად ხდება ისე რომ არა საბოლოო ტერმინი სხვადასხვანაირად აღიქვას. ასეთ შემთხვევაში ვხმარობთ | მეტა-სიმბოლოს.
<category> ::= <one> | <two> | ...
ზოგჯერ ფრჩხილებსაც ვხმარობთ:
<category> ::= ( <one> | <two> ) <three>
რაც უდრის :
<category> ::= <one> <three> | <two> <three>
რესურსები ინტერნეტში
[რედაქტირება | წყაროს რედაქტირება]- (ინგლისური) BNF Web Club დაარქივებული 2007-01-24 საიტზე Wayback Machine. გთავაზობთ რამდენიმე პროგრამირების ენის BNF-ს