Backus–Naur form
In computer science, Backus–Naur form or Pāṇini–Backus Form (BNF or PBF, pronounced /ˌbækəsˈnaʊər/), also known as Backus normal form, is a notation system for defining the syntax of programming languages and other formal languages, developed by John Backus and Peter Naur. It is a metasyntax for context-free grammars, providing a precise way to outline the rules of a language's structure.
It has been widely used in official specifications, manuals, and textbooks on programming language theory, as well as to describe document formats, instruction sets, and communication protocols. Over time, variations such as extended Backus–Naur form (EBNF) and augmented Backus–Naur form (ABNF) have emerged, building on the original framework with added features.
Structure
BNF specifications outline how symbols are combined to form syntactically valid sequences. Each BNF consists of three core components: a set of nonterminal symbols, a set of terminal symbols, and a series of derivation rules.[1] Non-terminal symbols represent categories or variables that can be replaced, while terminal symbols are the fixed, literal elements (such as keywords or punctuation) that appear in the final sequence. Derivation rules provide the instructions for replacing non-terminal symbols with specific combinations of symbols.
A derivation rule is written in the format: <symbol> ::= __expression__
where:
<symbol>[2] is a non-terminal symbol, enclosed in angle brackets (<>), identifying the category to be replaced::=is a metasymbol meaning "is replaced by,"__expression__is the replacement, consisting of one or more sequences of symbols—either terminal symbols (e.g., literal text like "Sr." or ",") or non-terminal symbols (e.g.,<last-name>)—with options separated by a vertical bar (|) to indicate alternatives.
For example, in the rule <opt-suffix-part>::= "Sr." | "Jr." | "", the entire line is the derivation rule, "Sr.", "Jr.", and "" (an empty string) are terminal symbols, and <opt-suffix-part> is a non-terminal symbol.
تتضمن عملية إنشاء تسلسل صحيح البدء برمز بداية مُحدد وتطبيق قواعد الاشتقاق بشكل متكرر. [ 1 ] يمكن لهذه العملية توسيع التسلسلات تدريجيًا. ولإتاحة المرونة، تتضمن بعض تعريفات BNF رمز "حذف" اختياريًا (مُمثلًا ببديل فارغ، على سبيل المثال )، مما يُتيح إزالة عناصر مُعينة مع الحفاظ على صحة التركيب النحوي. [ 1 ]<item> ::=<thing> |
مثال
ومن الأمثلة العملية على استخدام صيغة BNF مواصفات عنوان بريدي أمريكي مبسط :
< العنوان البريدي > ::= < جزء الاسم > < عنوان الشارع > < جزء الرمز البريدي >< جزء الاسم > ::= < الجزء الشخصي > < اسم العائلة > < جزء اللاحقة الاختيارية > < نهاية السطر > | < الجزء الشخصي > < جزء الاسم >< الجزء الشخصي > ::= < الاسم الأول > | < الحرف الأول > "." < عنوان الشارع > ::= < رقم المنزل > < اسم الشارع > < رقم الشقة الاختيارية > < نهاية السطر >< جزء من الرمز البريدي > ::= < اسم المدينة > "," < رمز الولاية > < الرمز البريدي > < نهاية السطر ><opt-suffix-part> :: = " Sr. " | "Jr." | <roman-numeral> | "" <opt-apt-num> :: = "Apt " <apt-num> | " "هذا يُترجم إلى اللغة الإنجليزية على النحو التالي:
- يتكون العنوان البريدي من جزء الاسم، متبوعًا بجزء عنوان الشارع ، متبوعًا بجزء الرمز البريدي .
- يتكون جزء الاسم إما من: جزء شخصي متبوع باسم العائلة متبوعًا بلاحقة اختيارية (الابن، الأب، أو رقم السلالة) ونهاية السطر ، أو جزء شخصي متبوعًا بجزء الاسم (توضح هذه القاعدة استخدام التكرار في أسماء العائلة، وتغطي حالة الأشخاص الذين يستخدمون أسماء أولى وأسماء وسطى وأحرف أولى متعددة). [ 3 ]
- يتكون الجزء الشخصي إما من اسم أول أو حرف أول متبوع بنقطة.
- يتكون عنوان الشارع من رقم المنزل، متبوعًا باسم الشارع، متبوعًا بمحدد الشقة الاختياري ، متبوعًا بنهاية السطر.
- يتكون جزء الرمز البريدي من اسم المدينة ، متبوعًا بفاصلة، متبوعًا برمز الولاية ، متبوعًا بالرمز البريدي، متبوعًا بنهاية السطر.
- يتكون الجزء الاختياري من لاحقة، مثل "Sr." أو "Jr." أو رقم روماني ، أو سلسلة فارغة (أي لا شيء).
- يتكون رقم الشقة الاختياري من بادئة "Apt" متبوعة برقم الشقة، أو سلسلة فارغة (أي لا شيء).
لاحظ أن العديد من الأمور (مثل تنسيق الاسم الأول، ورقم الشقة، والرمز البريدي، والأرقام الرومانية) لم تُحدد هنا. ويمكن وصفها، عند الضرورة، باستخدام قواعد BNF إضافية.
تاريخ
يعود مفهوم استخدام قواعد إعادة الكتابة لوصف بنية اللغة إلى بانيني على الأقل ، وهو نحوي سنسكريتي هندي قديم عاش في الفترة ما بين القرنين السادس والرابع قبل الميلاد . [ 4 ] وتُعادل طريقة تدوينه لوصف بنية الكلمات السنسكريتية في قوتها طريقة BNF، وتُظهر العديد من الخصائص المشابهة. [ 5 ]
في المجتمعات الغربية، لطالما نُظر إلى قواعد اللغة على أنها موضوع للتدريس لا للدراسة العلمية؛ وكانت الأوصاف غير رسمية وموجهة للاستخدام العملي. تغير هذا المنظور في النصف الأول من القرن العشرين، عندما بدأ لغويون مثل ليونارد بلومفيلد وزيليج هاريس محاولات لإضفاء الطابع الرسمي على وصف اللغة، بما في ذلك بنية العبارة . في الوقت نفسه، استكشف علماء الرياضيات أفكارًا ذات صلة من خلال قواعد إعادة كتابة السلاسل كنظم منطقية رسمية ، مثل أكسل ثيو عام 1914، وإميل بوست في عشرينيات وأربعينيات القرن العشرين، [ 6 ] وآلان تورينج عام 1936. جمع نعوم تشومسكي ، الذي كان يُدرّس اللغويات لطلاب نظرية المعلومات في معهد ماساتشوستس للتكنولوجيا ، بين اللغويات والرياضيات، مُكيّفًا شكلية ثيو لوصف بناء الجملة في اللغة الطبيعية. في عام 1956، قدّم تمييزًا واضحًا بين القواعد التوليدية (قواعد النحو الخالية من السياق ) وقواعد التحويل. [ 7 ] [ 8 ]
ظهرت صيغة باكوس الطبيعية (BNF) عندما اقترح جون باكوس ، مصمم لغات البرمجة في شركة IBM ، لغةً وصفيةً من الصيغ اللغوية الوصفية لتحديد بنية لغة البرمجة الجديدة IAL، المعروفة اليوم باسم ALGOL 58 ، في عام 1959. [ 9 ] تمّت صياغة هذه الصيغة رسميًا في تقرير ALGOL 60 ، حيث أطلق عليها بيتر نور اسم "صيغة باكوس الطبيعية" في تقرير اللجنة لعام 1963. [ 10 ] يبقى من غير المؤكد ما إذا كان باكوس قد تأثر بشكل مباشر بعمل تشومسكي. [ 11 ] [ 12 ]
جادل دونالد كنوث في عام 1964 بأن اختصار BNF يجب أن يُقرأ على أنه صيغة باكوس-ناور ، لأنه "ليس صيغة طبيعية بالمعنى التقليدي"، على عكس صيغة تشومسكي الطبيعية . [ 13 ] وفي عام 1967، اقترح بيتر زيلاهي إنجرمان إعادة تسميته إلى صيغة بانيني باكوس ، اعترافًا بتطوير بانيني المستقل السابق لتدوين مماثل. [ 5 ]
في تقرير ALGOL 60، وصف نور BNF بأنه صيغة ما وراء اللغة : [ 10 ]
تمثل سلاسل الأحرف المحصورة بين قوسين <> متغيرات لغوية وصفية، وقيمها عبارة عن سلاسل من الرموز. أما العلامتان "::=" و " | " (الأخيرة بمعنى "أو") فهما رابطان لغويان وصفيان. أي علامة في الصيغة، ما لم تكن متغيرًا أو رابطًا، تدل على نفسها. ويشير تجاور العلامات أو المتغيرات في الصيغة إلى تجاور التسلسل المشار إليه.
ويتضح ذلك في القسم 2.3 من التقرير، حيث تم تحديد التعليقات:
لغرض تضمين نص بين رموز البرنامج، تُطبق اصطلاحات "التعليق" التالية:
تسلسل الرموز الأساسية: يعادل ; تعليق < أي تسلسل لا يحتوي على ';' > ; ؛ بداية التعليق < أي تسلسل لا يحتوي على ';' > ; يبدأ نهاية < أي تسلسل لا يحتوي على 'نهاية' أو ';' أو 'وإلا' > نهاية يعني التكافؤ هنا أنه يمكن استبدال أي من الهياكل الثلاثة الموضحة في العمود الأيسر، في أي حالة خارج السلاسل النصية، بالرمز الموضح في نفس السطر في العمود الأيمن دون أي تأثير على عمل البرنامج.
قام نور بتعديل رموز باكوس الأصلية للغة ALGOL 60، فاستبدل :≡الرمزين ::=" أو " اللذين يحملان خطًا علويًا بالرمز " |، باستخدام الأحرف الشائعة. [ 14 ] : 14
تُشبه صيغة BNF إلى حد كبير معادلات الجبر البولياني ذات الصيغة المتعارف عليها (المستخدمة في تصميم الدوائر المنطقية)، مما يعكس خلفية باكوس الرياضية كمصمم للغة فورتران. [ 2 ] كانت دراسات الجبر البولياني جزءًا شائعًا من مناهج الرياضيات، وهو ما قد يكون أثر على منهج باكوس. لم يصف باكوس ولا نور الأسماء المُضمنة في BNF بأنها رموز غير طرفية - لم تُستخدم مصطلحات تشومسكي في الأصل لوصف BNF. أطلق نور عليها لاحقًا اسم "فئات" في مواد الدورة التدريبية لعام 1961. [ 2 ] في تقرير ALGOL 60، كانت هذه "متغيرات لغوية وصفية"، مع رموز أخرى تُحدد اللغة المستهدفة.<>
ساهم شاول روزن ، العضو في جمعية آلات الحوسبة منذ عام 1947، في الانتقال من لغة IAL إلى لغة ALGOL، وقام بتحرير مجلة "اتصالات جمعية آلات الحوسبة". وقد وصف لغة BNF بأنها لغة وصفية للغة ALGOL في كتابه الصادر عام 1967. [ 15 ] واتبعت كتيبات ALGOL الأولى الصادرة عن شركات IBM وهانيويل وبوروز وديجيتال إكويبمنت هذا الاستخدام.
تأثير
أثرت صيغة BNF بشكل كبير على تطوير لغات البرمجة، لا سيما كأساس لأنظمة المترجمات المبكرة . ومن الأمثلة على ذلك "مترجم موجه نحو بناء الجملة للغة ALGOL 60" لإدغار تي. آيرونز، و"نظام بناء المترجمات" لبروكر وموريس، اللذان استخدما BNF بشكل مباشر. [ 16 ] بينما قام آخرون، مثل META II لشور ، بتكييف BNF إلى لغة برمجة، مستبدلين السلاسل النصية بعلامات اقتباس، ومضيفين عوامل مثل $ للتكرار، كما في:<>
EXPR = TERM $ ( '+' TERM . OUT (' ADD ') | '-' TERM . OUT (' SUB '));وقد أثر ذلك على أدوات مثل yacc ، وهو مولد محلل نحوي واسع الانتشار يعتمد على مبادئ BNF. [ 17 ] ولا تزال BNF واحدة من أقدم التدوينات المتعلقة بالحاسوب التي لا تزال تُستخدم حتى اليوم، على الرغم من أن متغيراتها غالبًا ما تهيمن على التطبيقات الحديثة.
ومن أمثلة استخدامها كلغة وصفية تعريف التعبيرات الحسابية:
<expr> :: = <term> | <expr> <addop> <term>هنا، يمكن تضمين نفسه بشكل متكرر، مما يسمح بالإضافات المتكررة.<expr>
تُعد لغة BNF اليوم واحدة من أقدم اللغات المتعلقة بالحاسوب التي لا تزال قيد الاستخدام.
تمثيل BNF لذاته
يمكن تمثيل صيغة BNF نفسها باستخدام صيغة BNF مثل ما يلي:
< بناء الجملة > ::= < القاعدة > | < القاعدة > < بناء الجملة >< قاعدة > ::= < مسافة بيضاء اختيارية > "<" < اسم القاعدة > ">" < مسافة بيضاء اختيارية > " ::= " < مسافة بيضاء اختيارية > < تعبير > < نهاية السطر ><opt-whitespace> :: = " " <opt-whitespace> | " "< تعبير > ::= < قائمة > | < قائمة > < مسافة بيضاء اختيارية > "|" < مسافة بيضاء اختيارية > < تعبير >< نهاية السطر > ::= < مسافة بيضاء اختيارية > < نهاية السطر > | < نهاية السطر > < نهاية السطر >< قائمة > ::= < مصطلح > | < مصطلح > < مساحة بيضاء اختيارية > < قائمة >< المصطلح > ::= < حرفي > | "<" < اسم القاعدة > ">" < نص حرفي > ::= '"' < نص1 > '"' | "'" < نص2 > "'" <text1> :: = " " | <character1> <text1><text2> :: = " " | <character2> <text2>< حرف > ::= < حرف > | < رقم > | < رمز >< حرف > ::= "أ" | "ب" | "ت" | "د" | "هـ" | "و" | "ز" | "ح" | "ط" | "ي" | "ك" | "ل" | "م" | "ن" | "س" | "ع" | "ف" | "ق" | "ر" | "س" | "ت" | "ث" | "خ" | "ي" | "ي" | "ز" | "أ" | "ب" | "ت" | "د" | "هـ" | "و" | "ز" | "ح" | "ط" | "ي" | "ك" | "ل" | "م" | "ن" | "س" | "ع" | "ف" | "ق" | "ر" | "س" | "ت" | "ث" | "خ" | "ي" | "ز" < رقم > ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" < symbol > ::= "|" | " " | "!" | "#" | "$" | "%" | "&" | "(" | ")" | "*" | "+" | "," | "-" | "." | "/" | ":" | ";" | ">" | "=" | "<" | "?" | "@" | "[" | "\" | "]" | "^" | "_" | "`" | "{" | "}" | "~" < character1 > ::= < character > | "'" < character2 > ::= < character > | '"' < اسم القاعدة > ::= < حرف > | < اسم القاعدة > < حرف القاعدة >< حرف القاعدة > ::= < حرف > | < رقم > | "-" لاحظ أن "" هي سلسلة فارغة .
لم تستخدم النسخة الأصلية من BNF علامات اقتباس كما هو موضح في القاعدة. وهذا يفترض عدم الحاجة إلى مسافات بيضاء لتفسير القاعدة بشكل صحيح.<literal>
<EOL>يمثل مُحدد نهاية السطر المناسب (في ASCII ، إرجاع المؤشر إلى بداية السطر، أو تغذية السطر، أو كليهما حسب نظام التشغيل ). ويجب استبدالها باسم/تسمية القاعدة المُعلنة أو النص الحرفي، على التوالي.<rule-name><text>
في مثال عنوان البريد الأمريكي أعلاه، يُمثل النص الكامل المقتبس فاصلة . كل سطر أو مجموعة أسطر متصلة تُمثل قاعدة؛ على سبيل المثال، تبدأ إحدى القواعد بـ . الجزء الآخر من تلك القاعدة (باستثناء نهاية السطر) هو تعبير، ويتكون من قائمتين مفصولتين بخط عمودي . تتكون هاتان القائمتان من بعض المصطلحات (ثلاثة مصطلحات ومصطلحان، على التوالي). كل مصطلح في هذه القاعدة تحديدًا هو اسم قاعدة.<syntax><name-part> ::=|
المتغيرات
EBNF
توجد العديد من الصيغ والامتدادات لصيغة باكوس-ناور الطبيعية (BNF)، إما لتبسيطها واختصارها، أو لتكييفها مع تطبيق محدد. ومن السمات المشتركة بين العديد من هذه الصيغ استخدام عوامل تكرار التعبيرات النمطية مثل *و +. وتُعد صيغة باكوس-ناور الموسعة (EBNF) من الصيغ الشائعة.
ومن الإضافات الشائعة الأخرى استخدام الأقواس المربعة حول العناصر الاختيارية. ورغم عدم وجودها في تقرير ALGOL 60 الأصلي (بل أُضيفت بعد بضع سنوات في تعريف PL/I الخاص بشركة IBM )، إلا أن هذه الصيغة باتت معترفًا بها عالميًا.
ABNF
يُعد كل من شكل باكوس-ناور المعزز (ABNF) وشكل باكوس-ناور للتوجيه (RBNF) [ 18 ] امتدادات شائعة الاستخدام لوصف بروتوكولات فرقة عمل هندسة الإنترنت (IETF) .
تعتمد قواعد تحليل التعبيرات على صيغة BNF ورموز التعبيرات العادية لتشكيل فئة بديلة من القواعد الرسمية ، والتي هي في الأساس تحليلية وليست توليدية في طبيعتها.
آحرون
تهدف العديد من مواصفات BNF المتوفرة على الإنترنت اليوم إلى أن تكون سهلة القراءة البشرية وغير رسمية. وغالبًا ما تتضمن هذه المواصفات العديد من قواعد بناء الجملة والامتدادات التالية:
- العناصر الاختيارية الموجودة بين قوسين مربعين: .
[<item-x>] - يتم وضع العناصر الموجودة 0 مرة أو أكثر بين قوسين معقوفين أو يتم وضع علامة النجمة (
*) في نهايتها مثل أو على التوالي.<word> ::= <letter> {<letter>}<word> ::= <letter><letter>* - يتم إضافة رمز الجمع (+) إلى العناصر الموجودة مرة واحدة أو أكثر
+، مثل .<word> ::= <letter>+ - قد تظهر الرموز الطرفية بخط غامق بدلاً من الخط المائل، والرموز غير الطرفية بنص عادي بدلاً من الأقواس الزاوية.
- عند تجميع العناصر، يتم وضعها بين قوسين بسيطين.
البرامج التي تستخدم BNF أو ما شابهها
برنامج يقبل BNF (أو مجموعة فرعية) كمدخلات
- ANTLR ، مولد محلل لغوي مكتوب بلغة جافا
- Coco/R ، مولد مترجم يقبل قواعد نحوية منسوبة في EBNF
- مجموعة أدوات إعادة هندسة برمجيات إدارة المستندات ، نظام تحليل وتحويل البرامج للغات برمجة متعددة.
- GOLD ، مولد محلل BNF
- محلل RPA BNF. [ 19 ] عرض توضيحي للتحليل عبر الإنترنت (PHP): JavaScript، XML
- نظام XACT X4MR، [ 20 ] نظام خبير قائم على القواعد لترجمة لغات البرمجة
- محلل XPL ، وهو أداة تقبل صيغة BNF المبسطة للغة وتنتج محللًا لتلك اللغة في XPL؛ ويمكن دمجها في برنامج SKELETON المرفق، والذي يمكن من خلاله تصحيح اللغة [ 21 ] ( برنامج SHARE المساهم به، والذي سبقه مولد المترجم [ 22 ] ).
- bnfparser 2 ، [ 17 ] أداة شاملة للتحقق من بناء الجملة
- bnf2xml، [ 23 ] ترميز المدخلات باستخدام علامات XML من خلال مطابقة BNF المتقدمة
- JavaCC ، [ 24 ] مُجمِّع جافا (JavaCC) - مُولِّد مُحلِّل جافا
- Instaparse ، [ 25 ] لبناء محللات نحوية لقواعد اللغة الخالية من السياق في Clojure ، مُوسّعة بصيغة تشبه PEG للتنبؤ المسبق والتنبؤ المسبق السلبي
برامج مماثلة
- GNU bison ، نسخة GNU من yacc
- Yacc ، مولد المحلل اللغوي (يستخدم عادةً مع المعالج المسبق Lex )
- أدوات تحليل لغة Racket، تحليل lex و yacc (إصدار Racket الجميل)
- يستخدم Qlik Sense، وهو أداة ذكاء الأعمال، نوعًا مختلفًا من BNF لكتابة البرامج النصية [ 26 ].
- محول BNF (BNFC [ 27 ] )، يعمل على صيغة تُسمى "صيغة باكوس-ناور المُعَلَّمة" (LBNF). في هذه الصيغة، يُعطى كل إنتاج لرمز غير طرفي مُحدد تسمية، يمكن استخدامها كدالة إنشاء لنوع بيانات جبري يُمثل ذلك الرمز غير الطرفي. يستطيع المحول إنتاج أنواع ومحللات نحوية للبنية المجردة في عدة لغات، بما في ذلك هاسكل وجافا.
انظر أيضاً
- صيغة باكوس-ناور المعززة (ABNF)
- لغة وصف المترجم (CDL)
- قواعد الجملة المحددة – بديل أكثر تعبيرًا لقواعد BNF المستخدمة في لغة برولوج
- شكل باكوس-ناور الموسع (EBNF)
- ميتا-2 – أداة كتابة وتدوين مبكرة للمترجمات
- مخطط بناء الجملة – مخطط السكك الحديدية
- صيغة باكوس-ناور الانتقالية (TBNF)
- قواعد Van Wijngaarden - تُستخدم بدلاً من BNF لتعريف Algol68
- تدوين ويرث النحوي - بديل لـ BNF من عام 1977
مراجع
- 1 2 3 جانيكو، سيزاري ز. "ما هو BNF؟" (PDF) .
- 1 2 3 نور، بيتر (1961). "دورة في برمجة ALGOL 60 مع إشارة خاصة إلى نظام DASK ALGOL" (ملف PDF) . كوبنهاغن: Regnecentralen . تاريخ الاسترجاع: 26 مارس 2015 .
- ↑ تستند هذه المقالة إلى مواد مأخوذة من Backus-Naur+Form في قاموس الحوسبة المجاني على الإنترنت قبل 1 نوفمبر 2008 وتم دمجها بموجب شروط "إعادة الترخيص" الخاصة بـ GFDL ، الإصدار 1.3 أو أحدث.
- ↑ "سيرة بانيني" . كلية الرياضيات والإحصاء، جامعة سانت أندروز، اسكتلندا . تم الاطلاع عليه بتاريخ 22-03-2014 .
- 1 2 إنجرمان، بيتر زيلاهي (مارس 1967). ""صيغة بانيني-باكوس المقترحة" . اتصالات رابطة الحوسبة الآلية . 10 (3): 137. doi : 10.1145/363162.363165 . S2CID 52817672 .
- ↑ بوست، إميل ل. (1943). "الاختزالات الرسمية لمسألة القرار التوافقي العام". المجلة الأمريكية للرياضيات . 65 (2): 197-215 . doi : 10.2307/2371804 .
- ↑ تشومسكي، نعوم (1956). "ثلاثة نماذج لوصف اللغة". معاملات معهد مهندسي الراديو في نظرية المعلومات . 2 (3): 113-24 . doi : 10.1109/TIT.1956.1056813 . S2CID 19519474 .
- ↑ تشومسكي، نعوم (1957). البنى النحوية . لاهاي: موتون.
- ↑ باكوس، جيه دبليو (1959). "بنية ودلالات اللغة الجبرية الدولية المقترحة لمؤتمر زيورخ ACM-GAMM". وقائع المؤتمر الدولي لمعالجة المعلومات . اليونسكو. ص 125-132 .
- 1 2 تم تعديل تقرير ALGOL 60 القسم 1.1. "ALGOL 60" . تم الاطلاع عليه في 18 أبريل 2015 .
- ↑ فولتون، سكوت م.، الثالث (20 مارس 2007). "جون دبليو. باكوس (1924 - 2007)" . بيتا نيوز، إنك . تم الاسترجاع في 3 يونيو 2014 .
{{cite web}}: صيانة CS1: أسماء متعددة: قائمة المؤلفين ( رابط ) - ↑ جون باكوس (سبتمبر 2006). جرادي بوتش (محرر). التاريخ الشفوي لجون باكوس (ملف PDF) (تقرير). متحف تاريخ الحاسوب.هنا: صفحة 25
- ↑ كنوت، دونالد إي. (1964). "صيغة باكوس العادية مقابل صيغة باكوس العادية" . اتصالات رابطة آلات الحوسبة . 7 (12): 735-736 . doi : 10.1145/355588.365140 . S2CID 47537431 .
- ↑ باكوس، جيه دبليو (1959). "بنية ودلالات اللغة الجبرية الدولية المقترحة لمؤتمر زيورخ ACM-GAMM" . وقائع المؤتمر الدولي لمعالجة المعلومات . اليونسكو. ص 125-132 .
- ↑ شاول روزن (يناير 1967). أنظمة ولغات البرمجة . سلسلة ماكجرو هيل لعلوم الحاسوب. نيويورك: ماكجرو هيل. ISBN 978-0070537088.
- ↑ ماكيمان، دبليو إم؛ هورنينج، جيه جيه؛ وورتمان، دي بي (1970). مولد المترجمات . برنتيس هول. ISBN 978-0-13-155077-3.
- 1 2 "محلل BNF²"، سورس فورج (مشروع)
- ↑ RBNF .
- ↑ "عرض توضيحي عبر الإنترنت"، RPatk ، مؤرشف من الأصل بتاريخ 2012-11-02 ، تم استرجاعه بتاريخ 2011-07-03
- ↑ "أدوات"، عالم العمل ، مؤرشف من الأصل بتاريخ 29 يناير 2013
- ↑ إذا كان المعالج المستهدف هو System/360، أو ما شابهه، حتى z/System، وكانت اللغة المستهدفة مشابهة لـ PL/I (أو XPL بالفعل)، فيمكن تكييف "مُصدِرات" التعليمات البرمجية المطلوبة من "مُصدِرات" XPL لـ System/360.
- ↑ ماكيمان، دبليو إم؛ هورنينج، جيه جيه؛ وورتمان، دي بي (1970). مولد المترجمات . برنتيس هول. ISBN 978-0-13-155077-3.
- ↑ bnf2xml
- ↑ "JavaCC" . مؤرشف من الأصل بتاريخ 2013-06-08 . تم الاطلاع عليه بتاريخ 2013-09-25 .
- ↑ إنستابارس ، استرجاعها 2026-02-18
{{citation}}: CS1 maint: url-status ( link ) - ↑ "بنية البرمجة النصية - Qlik Sense على نظام التشغيل Windows" . Qlik.com . QlikTech International AB . تم الاطلاع عليه بتاريخ 10 يناير 2022 .
- ↑ "BNFC"، تكنولوجيا اللغة ، جنوب شرق : تشالمرز
روابط خارجية
- غارشول، لارس ماريوس، BNF وEBNF: ما هما وكيف يعملان؟، NO : Priv.
- RFC 5234 – صيغة BNF المعززة لمواصفات بناء الجملة: ABNF.
- RFC 5511 – توجيه BNF: صيغة مستخدمة في مواصفات البروتوكولات المختلفة.
- ISO/IEC 14977:1996(E) تكنولوجيا المعلومات - لغة وصفية نحوية - صيغة BNF الموسعة ، متاحة من "متاحة للجمهور"، المعايير ، ISOأو من كون، ماركوس، ISO 14977 (ملف PDF) ، المملكة المتحدة : CAM(النسخة الأخيرة تفتقر إلى صفحة الغلاف، ولكنها أنظف بكثير فيما عدا ذلك)
قواعد اللغة
- بيرنهارد، Algol-60 BNF ، DE : LRZ München، النسخة الأصلية من كتاب BNF.
- "قواعد BNF لـ SQL-92 و SQL-99 و SQL-2003"، سافاج ، أستراليا : نتقواعد BNF متاحة مجاناً للغة SQL .
- "نادي BNF الإلكتروني"، بحث DB ، سويسرا : جامعة جنيف، مؤرشف من الأصل بتاريخ 24 يناير 2007 ، تم استرجاعه بتاريخ 25 يناير 2007قواعد BNF متاحة مجاناً للغات SQL و Ada و Java .
- "قواعد لغة برمجة مجانية لبناء المترجمات"، شفرة المصدر ، البلد الحر، قواعد BNF/ EBNF متاحة مجاناً للغات C/C++، Pascal ، COBOL ، Ada 95 ، PL/I .
- ملفات BNF المتعلقة بمعيار STEP، محرك Exp ( SVN )، Sourceforge
{{citation}}: صيانة CS1: خدمة الأرشفة المهملة ( رابط ) . تتضمن الأجزاء 11 و14 و21 من معيار ISO 10303 (STEP).
- اللغات الرسمية
- بناء المترجم
- اللغات الوصفية
