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

მასალა ვიკიპედიიდან — თავისუფალი ენციკლოპედია

ბეკუს-ნაურის ფორმალიზმიმეტასინტაქსი (ინგლისური შემოკლებით 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>

რესურსები ინტერნეტში[რედაქტირება | წყაროს რედაქტირება]