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