梦见和妈妈吵架是什么意思| 妆前乳是什么| 盛夏什么意思| 长命的动物是什么生肖| 双肺门不大是什么意思| 里是什么结构| hr是什么职业| 机缘是什么意思| 枪色是什么色| a型熊猫血是什么血型| 痛经是什么引起的| 橄榄色是什么颜色| 茔是什么意思| 抽烟对女生有什么危害| 龟兔赛跑的故事告诉我们什么道理| 肠溶片和缓释片有什么区别| 胆囊检查做什么检查| 高血糖喝什么茶好| 食物不耐受是什么意思| 砧木是什么意思| 什么是蛇缠腰病| 扭转乾坤什么意思| 蘸什么意思| 风向是什么意思| 须发早白吃什么中成药| 在所不辞是什么意思| 夸父是一个什么样的人| 手持吸尘器什么牌子好| 肝癌是什么症状| 中阴身是什么意思| 什么东西能解酒| 什么叫湿热| 乌鸦反哺是什么意思| 23度穿什么衣服合适| 早上7点多是什么时辰| 11月20是什么星座| 618是什么意思| 肚子上方中间疼是什么部位| 茔和坟有什么区别| 肝裂不宽是什么意思| 德行是什么意思| 圆寂为什么坐着就死了| 猫屎为什么那么臭| 外阴起红点是什么病| 西兰花和什么菜搭配| 肾阴虚吃什么中成药| 党参和丹参有什么区别| 奥特莱斯是什么| 71年的猪是什么命| 出汗是什么原因| 什么什么生机| 隐血是什么意思| 属鸡的是什么命| 黄体酮不足吃什么| 什么是肌张力| 血糖高不能吃什么| 盐酸多西环素片治什么病| 检查是否怀孕要挂什么科| 鼻子干痒是什么原因| 感染hpv有什么症状| 脚凉是什么原因造成的| 肥胖纹什么样子| essential是什么意思| 什么叫包皮过长| 跛行是什么意思| e6e7阳性是什么意思| 520送男朋友什么礼物| 此地无银三百两什么意思| 入睡难一般是什么原因造成的| 身体老是出汗是什么原因| 门庭冷落是什么意思| 舌苔厚发黄是什么原因| 牙龈上火吃什么药| 川贝是什么| 什么样的人容易得抑郁症| pcl是什么意思| 铁罗汉是什么茶| 假体是什么| 肚脐眼下方是什么器官| 香菜什么时候种植最好| 趋光性是什么意思| 手脚发麻什么原因| 手指甲紫色是什么原因| shark是什么意思| 枸杞泡茶有什么功效| 胃胀吃什么| 吃头孢不能吃什么水果| 什么是白色家电| 李嘉诚属什么生肖| 脸上皮肤痒是什么原因| 清宫和人流有什么区别| 舌苔厚腻发白是什么原因| 七月11日是什么星座| 摘胆对身体有什么影响| 右边偏头痛是什么原因| 高血脂是什么原因造成的| 爱是什么排比句| 鼻炎吃什么药见效快| 做腹部彩超挂什么科| 安利什么意思| 不经意间是什么意思| 淋巴肉是什么| 哈衣是什么意思| 人的反义词是什么| 血管瘤是什么病| 为什么月经老是提前| 算了是什么意思| 333是什么意思| 龋齿是什么样子的图片| 处女男和什么星座最配| 疝外科是治什么病的| 湿热吃什么药好| 粉瘤不切除有什么危害| ifound是什么牌子| 还有什么寓言故事| 等闲识得东风面什么意思| 戏谑什么意思| 夏天有什么| 系统b超主要检查什么| 喉咙扁桃体发炎吃什么药| 糖尿病人吃什么水果好| 牙齿一吸就出血是什么原因| 稀盐酸是什么| 什么叫保守治疗| 太阳是什么星| miu是什么意思| 荨麻疹打什么针好得快| 中国第一个不平等条约是什么| 杨梅有什么好处| 很困但是睡不着是什么原因| 什么是黄疸| 中度脂肪肝吃什么药| 龟苓膏不能和什么一起吃| 美业是什么| 瓜怂是什么意思| 什么病不能吃核桃| 生活质量是什么意思| 腮腺炎不能吃什么| 起付线是什么意思| 鹿土念什么| 骨量偏高是什么原因| 胺试验阳性是什么意思| 记忆力不好是什么原因| 动车是什么| 验光是什么意思| 怀孕初期吃什么水果好| ct检查是什么意思| 枫叶是什么树| 命门火衰是什么意思| 夏朝前面是什么朝代| 什么样的天安门| 高考450分能上什么学校| 什么叫前列腺炎| 袖珍人是什么| 内膜薄吃什么增长最快| 什么叫意象| 女人梦见蛇预示着什么| 为什么会低血压| 反射弧太长是什么意思| 脸跳动是什么原因| kolumb是什么牌子| 尿隐血阳性什么意思| 总放屁是什么原因| 知了有什么功效与作用| 尿道炎症吃什么药| 抑郁症吃什么药| 1992属什么生肖| 羊奶有什么作用与功效| 汗是什么味道| 生蚝吃多了有什么危害| 做什么生意好赚钱| 阿拉是什么意思| 山东特产是什么生肖| 秋天什么时候| 正品是什么意思| 拔智齿需要注意什么| 三月十二是什么星座| 小肠火吃什么药效果快| 人活着意义是什么| 肾结石什么东西不能吃| 女人戴什么招财又旺夫| 为什么生化妊娠是好事| ciel是什么意思| 圆明园是什么时候被烧的| 脑白质疏松是什么意思| 央企董事长什么级别| 困惑什么意思| 阴道痒吃什么药| 锁骨疼挂什么科| 脚面疼痛什么原因| 孩子出疹子应该注意什么| 丁香泡水喝有什么功效和作用| 宫内膜回声不均匀是什么意思| 冰心的原名是什么| 虎落平阳被犬欺是什么生肖| 戒烟有什么方法| 为什么会得神经性皮炎| 治霉菌性阴炎用什么药好得快| 不完全性右束支传导阻滞是什么意思| 梦见吃豆腐是什么意思| 口发苦是什么原因| 出去旅游需要带什么| 头疼是什么原因| 太平猴魁属于什么茶| 什么是家| 人中浅的女人代表什么| 什么原因造成糖尿病| 离婚需要带什么证件| 眩晕症是什么原因引起| 什么车不能开| 粽子用什么叶子包| 世界上最大的数是什么| 花枝招展是什么意思| 特别出演什么意思| 喝红酒对身体有什么好处| 冲床工是做什么的| 头晕头重昏昏沉沉是什么原因| 人民检察院是国家的什么机关| 11月16号是什么星座| 埋头苦干是什么生肖| 烂嘴是什么原因| 梦见恐龙是什么预兆| 责成是什么意思| 妈祖属什么生肖| 黑下打信是什么任务| 血压低头疼是什么原因| 头发长不长是什么原因怎么办| 麻腮风疫苗是预防什么| 黄帝内经讲的什么| 冬天手脚冰凉是什么原因怎么调理| 手机充电口叫什么| ca125是什么| 鱼翅是什么东西| 俄罗斯的国花是什么花| 什么是应激反应| 菠菜炒什么好吃| 贫血查什么| 腠理是什么意思| 1976年五行属什么| 菠萝蜜和什么不能一起吃| 父母都没有狐臭为什么孩子会有呢| 什么贝壳| 杰瑞是什么品种的老鼠| 中国红是什么颜色| 蝙蝠为什么倒挂着睡觉| 狗狗湿疹用什么药膏最有效| 砂仁后下是什么意思| 指甲油什么牌子好| 骨挫伤是什么意思| 脑震荡挂什么科| 02年属马的是什么命| 什么症状吃柏子养心丸| 三围是什么| 肺的作用和功能是什么| 尿隐血弱阳性是什么意思| 水痘可以吃什么水果| 孕妇可以吃什么感冒药| ml什么意思| 什么情况下会怀孕| 结婚5年是什么婚| 高血脂会引起什么疾病| 属猪本命佛是什么佛| 双鱼座和什么星座最配| 跳梁小丑是什么生肖| 百度Jump to content

大马挫败恐袭阴谋 7人谋杀害警察袭击住宅被抓马来西亚沙巴弗兹

From Wikipedia, the free encyclopedia
(Redirected from Backus-Naur form)
百度 印度《印度快报》中国特色社会主义进入新时代,目标是实现更高水平发展,为人民谋求更多福利;从外部看,中国希望在国际事务中发挥更大作用。

In computer science, Backus–Naur form (BNF, 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

[edit]

BNF specifications outline how symbols are combined to form syntactically valid sequences. Each BNF consists of three core components: a set of non-terminal 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.

Generating a valid sequence involves starting with a designated start symbol and iteratively applying the derivation rules.[1] This process can extend sequences incrementally. To allow flexibility, some BNF definitions include an optional "delete" symbol (represented as an empty alternative, e.g., <item> ::=<thing> | ), enabling the removal of certain elements while maintaining syntactic validity.[1]

Example

[edit]

A practical illustration of BNF is a specification for a simplified U.S. postal address:

 <postal-address> ::= <name-part> <street-address> <zip-part>

      <name-part> ::= <personal-part> <last-name> <opt-suffix-part> <EOL> | <personal-part> <name-part>

  <personal-part> ::= <first-name> | <initial> "."

 <street-address> ::= <house-num> <street-name> <opt-apt-num> <EOL>

       <zip-part> ::= <town-name> "," <state-code> <ZIP-code> <EOL>

<opt-suffix-part> ::= "Sr." | "Jr." | <roman-numeral> | ""
    <opt-apt-num> ::= "Apt" <apt-num> | ""

This translates into English as:

  • A postal address consists of a name-part, followed by a street-address part, followed by a zip-code part.
  • A name-part consists of either: a personal-part followed by a last name followed by an optional suffix (Jr. Sr., or dynastic number) and end-of-line, or a personal part followed by a name part (this rule illustrates the use of recursion in BNFs, covering the case of people who use multiple first and middle names and initials).[3]
  • A personal-part consists of either a first name or an initial followed by a dot.
  • A street address consists of a house number, followed by a street name, followed by an optional apartment specifier, followed by an end-of-line.
  • A zip-part consists of a town-name, followed by a comma, followed by a state code, followed by a ZIP-code followed by an end-of-line.
  • An opt-suffix-part consists of a suffix, such as "Sr.", "Jr." or a roman-numeral, or an empty string (i.e. nothing).
  • An opt-apt-num consists of a prefix "Apt" followed by an apartment number, or an empty string (i.e. nothing).

Note that many things (such as the format of a first-name, apartment number, ZIP-code, and Roman numeral) are left unspecified here. If necessary, they may be described using additional BNF rules.

History

[edit]

The concept of using rewriting rules to describe language structure traces back to at least Pā?ini, an ancient Indian Sanskrit grammarian who lived sometime between the 6th and 4th centuries BC.[4] His notation for describing Sanskrit word structure is equivalent in power to that of BNF and exhibits many similar properties.[5]

In Western society, grammar was long regarded as a subject for teaching rather than scientific study; descriptions were informal and targeted at practical usage. This perspective shifted in the first half of the 20th century, when linguists such as Leonard Bloomfield and Zellig Harris began attempts to formalize language description, including phrase structure. Meanwhile, mathematicians explored related ideas through string rewriting rules as formal logical systems, such as Axel Thue in 1914, Emil Post in the 1920s–40s,[6] and Alan Turing in 1936. Noam Chomsky, teaching linguistics to students of information theory at MIT combined linguistics and mathematics, adapting Thue's formalism to describe natural language syntax. In 1956, he introduced a clear distinction between generative rules (those of context-free grammars) and transformation rules.[7][8]

BNF itself emerged when John Backus, a programming language designer at IBM, proposed a metalanguage of metalinguistic formulas to define the syntax of the new programming language IAL, known today as ALGOL 58, in 1959.[9] This notation was formalized in the ALGOL 60 report, where Peter Naur named it Backus normal form in the committee's 1963 report.[10] Whether Backus was directly influenced by Chomsky's work is uncertain.[11][12]

Donald Knuth argued in 1964 that BNF should be read as Backus–Naur form, as it is "not a normal form in the conventional sense," unlike Chomsky normal form.[13] In 1967, Peter Zilahy Ingerman suggested renaming it Pā?ini Backus form to acknowledge Pā?ini's earlier, independent development of a similar notation.[5]

In the ALGOL 60 report, Naur described BNF as a metalinguistic formula:[10]

Sequences of characters enclosed in the brackets <> represent metalinguistic variables whose values are sequences of symbols. The marks "::=" and "|" (the latter with the meaning of "or") are metalinguistic connectives. Any mark in a formula, which is not a variable or a connective, denotes itself. Juxtaposition of marks or variables in a formula signifies juxtaposition of the sequence denoted.

This is exemplified in the report's section 2.3, where comments are specified:

For the purpose of including text among the symbols of a program the following "comment" conventions hold:

The sequence of basic symbols: is equivalent to
; comment <any sequence not containing ';'>; ;
begin comment <any sequence not containing ';'>; begin
end <any sequence not containing 'end' or ';' or 'else'> end

Equivalence here means that any of the three structures shown in the left column may be replaced, in any occurrence outside of strings, by the symbol shown in the same line in the right column without any effect on the action of the program.

Naur altered Backus's original symbols for ALGOL 60, changing :≡ to ::= and the overbarred "or" to |, using commonly available characters.[14]:?14?

BNF is very similar to canonical-form Boolean algebra equations (used in logic-circuit design), reflecting Backus's mathematical background as a FORTRAN designer.[2] Studies of Boolean algebra were commonly part of a mathematics curriculum, which may have informed Backus's approach. Neither Backus nor Naur described the names enclosed in < > as non-terminals—Chomsky's terminology was not originally used in describing BNF. Naur later called them "classes" in 1961 course materials.[2] In the ALGOL 60 report, they were "metalinguistic variables," with other symbols defining the target language.

Saul Rosen, involved with the Association for Computing Machinery since 1947, contributed to the transition from IAL to ALGOL and edited Communications of the ACM. He described BNF as a metalanguage for ALGOL in his 1967 book.[15] Early ALGOL manuals from IBM, Honeywell, Burroughs, and Digital Equipment Corporation followed this usage.

Impact

[edit]

BNF significantly influenced programming language development, notably as the basis for early compiler-compiler systems. Examples include Edgar T. Irons' "A Syntax Directed Compiler for ALGOL 60" and Brooker and Morris' "A Compiler Building System," which directly utilized BNF.[16] Others, like Schorre's META II, adapted BNF into a programming language, replacing < > with quoted strings and adding operators like $ for repetition, as in:

 EXPR = TERM $('+' TERM .OUT('ADD') | '-' TERM .OUT('SUB'));

This influenced tools like yacc, a widely used parser generator rooted in BNF principles.[17] BNF remains one of the oldest computer-related notations still referenced today, though its variants often dominate modern applications.

Examples of its use as a metalanguage include defining arithmetic expressions:

 <expr> ::= <term> | <expr> <addop> <term>

Here, <expr> can recursively include itself, allowing repeated additions.

BNF today is one of the oldest computer-related languages still in use.[citation needed]

BNF representation of itself

[edit]
BNF syntax diagram
BNF syntax diagram

BNF's syntax itself may be represented with a BNF like the following:

<syntax>         ::= <rule> | <rule> <syntax>
<rule>           ::= <opt-whitespace> "<" <rule-name> ">" <opt-whitespace> "::=" <opt-whitespace> <expression> <line-end>
<opt-whitespace> ::= " " <opt-whitespace> | ""
<expression>     ::= <list> | <list> <opt-whitespace> "|" <opt-whitespace> <expression>
<line-end>       ::= <opt-whitespace> <EOL> | <line-end> <line-end>
<list>           ::= <term> | <term> <opt-whitespace> <list>
<term>           ::= <literal> | "<" <rule-name> ">"
<literal>        ::= '"' <text1> '"' | "'" <text2> "'"
<text1>          ::= "" | <character1> <text1>
<text2>          ::= "" | <character2> <text2>
<character>      ::= <letter> | <digit> | <symbol>
<letter>         ::= "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" | "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z"
<digit>          ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
<symbol>         ::= "|" | " " | "!" | "#" | "$" | "%" | "&" | "(" | ")" | "*" | "+" | "," | "-" | "." | "/" | ":" | ";" | ">" | "=" | "<" | "?" | "@" | "[" | "\" | "]" | "^" | "_" | "`" | "{" | "}" | "~"
<character1>     ::= <character> | "'"
<character2>     ::= <character> | '"'
<rule-name>      ::= <letter> | <rule-name> <rule-char>
<rule-char>      ::= <letter> | <digit> | "-"

Note that "" is the empty string.

The original BNF did not use quotes as shown in <literal> rule. This assumes that no whitespace is necessary for proper interpretation of the rule.

<EOL> represents the appropriate line-end specifier (in ASCII, carriage-return, line-feed or both depending on the operating system). <rule-name> and <text> are to be substituted with a declared rule's name/label or literal text, respectively.

In the U.S. postal address example above, the entire block-quote is a <syntax>. Each line or unbroken grouping of lines is a rule; for example one rule begins with <name-part> ::=. The other part of that rule (aside from a line-end) is an expression, which consists of two lists separated by a vertical bar |. These two lists consists of some terms (three terms and two terms, respectively). Each term in this particular rule is a rule-name.

Variants

[edit]

EBNF

[edit]

There are many variants and extensions of BNF, generally either for the sake of simplicity and succinctness, or to adapt it to a specific application. One common feature of many variants is the use of regular expression repetition operators such as * and +. The extended Backus–Naur form (EBNF) is a common one.

Another common extension is the use of square brackets around optional items. Although not present in the original ALGOL 60 report (instead introduced a few years later in IBM's PL/I definition), the notation is now universally recognised.

ABNF

[edit]

Augmented Backus–Naur form (ABNF) and Routing Backus–Naur form (RBNF)[18] are extensions commonly used to describe Internet Engineering Task Force (IETF) protocols.

Parsing expression grammars build on the BNF and regular expression notations to form an alternative class of formal grammar, which is essentially analytic rather than generative in character.

Others

[edit]

Many BNF specifications found online today are intended to be human-readable and are non-formal. These often include many of the following syntax rules and extensions:

  • Optional items enclosed in square brackets: [<item-x>].
  • Items existing 0 or more times are enclosed in curly brackets or suffixed with an asterisk (*) such as <word> ::= <letter> {<letter>} or <word> ::= <letter> <letter>* respectively.
  • Items existing 1 or more times are suffixed with an addition (plus) symbol, +, such as <word> ::= <letter>+.
  • Terminals may appear in bold rather than italics, and non-terminals in plain text rather than angle brackets.
  • Where items are grouped, they are enclosed in simple parentheses.

Software using BNF or variants

[edit]

Software that accepts BNF (or a superset) as input

[edit]
  • ANTLR, a parser generator written in Java
  • Coco/R, compiler generator accepting an attributed grammar in EBNF
  • DMS Software Reengineering Toolkit, program analysis and transformation system for arbitrary languages
  • GOLD, a BNF parser generator
  • RPA BNF parser.[19] Online (PHP) demo parsing: JavaScript, XML
  • XACT X4MR System,[20] a rule-based expert system for programming language translation
  • XPL Analyzer, a tool which accepts simplified BNF for a language and produces a parser for that language in XPL; it may be integrated into the supplied SKELETON program, with which the language may be debugged[21] (a SHARE contributed program, which was preceded by A Compiler Generator[22])
  • bnfparser2,[17] a universal syntax verification utility
  • bnf2xml,[23] Markup input with XML tags using advanced BNF matching
  • JavaCC,[24] Java Compiler Compiler tm (JavaCC tm) - The Java Parser Generator

Similar software

[edit]
  • GNU bison, GNU version of yacc
  • Yacc, parser generator (most commonly used with the Lex preprocessor)
  • Racket's parser tools, lex and yacc-style parsing (Beautiful Racket edition)
  • Qlik Sense, a BI tool, uses a variant of BNF for scripting [25]
  • BNF Converter (BNFC[26]), operating on a variant called "labeled Backus–Naur form" (LBNF). In this variant, each production for a given non-terminal is given a label, which can be used as a constructor of an algebraic data type representing that nonterminal. The converter is capable of producing types and parsers for abstract syntax in several languages, including Haskell and Java

See also

[edit]

References

[edit]
  1. ^ a b c Janikow, Cezary Z. "What is BNF?" (PDF).
  2. ^ a b c Naur, Peter (1961). "A COURSE OF ALGOL 60 PROGRAMMING with special reference to the DASK ALGOL system" (PDF). Copenhagen: Regnecentralen. Retrieved 26 March 2015.
  3. ^ This article is based on material taken from Backus-Naur+Form at the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.
  4. ^ "Panini biography". School of Mathematics and Statistics, University of St Andrews, Scotland. Retrieved 2025-08-06.
  5. ^ a b Ingerman, Peter Zilahy (March 1967). ""Pā?ini-Backus Form" Suggested". Communications of the ACM. 10 (3): 137. doi:10.1145/363162.363165. S2CID 52817672.
  6. ^ Post, Emil L. (1943). "Formal Reductions of the General Combinatorial Decision Problem". American Journal of Mathematics. 65 (2): 197–215. doi:10.2307/2371804.
  7. ^ Chomsky, Noam (1956). "Three models for the description of language". IRE Transactions on Information Theory. 2 (3): 113–24. doi:10.1109/TIT.1956.1056813. S2CID 19519474.
  8. ^ Chomsky, Noam (1957). Syntactic Structures. The Hague: Mouton.
  9. ^ Backus, J. W. (1959). "The syntax and semantics of the proposed international algebraic language of the Zurich ACM-GAMM Conference". Proceedings of the International Conference on Information Processing. UNESCO. pp. 125–132.
  10. ^ a b Revised ALGOL 60 report section 1.1. "ALGOL 60". Retrieved April 18, 2015.
  11. ^ Fulton, Scott M., III (20 March 2007). "John W. Backus (1924 - 2007)". BetaNews, Inc. Retrieved Jun 3, 2014.{{cite web}}: CS1 maint: multiple names: authors list (link)
  12. ^ John Backus (Sep 2006). Grady Booch (ed.). Oral History of John Backus (PDF) (Report). Computer History Museum. Here: p.25
  13. ^ Knuth, Donald E. (1964). "Backus Normal Form vs. Backus Naur Form". Communications of the ACM. 7 (12): 735–736. doi:10.1145/355588.365140. S2CID 47537431.
  14. ^ Backus, J. W. (1959). "The syntax and semantics of the proposed international algebraic language of the Zurich ACM-GAMM Conference". Proceedings of the International Conference on Information Processing. UNESCO. pp. 125–132.
  15. ^ Saul Rosen (Jan 1967). Programming Systems and Languages. McGraw Hill Computer Science Series. New York: McGraw Hill. ISBN 978-0070537088.
  16. ^ McKeeman, W. M.; Horning, J.J.; Wortman, D. B. (1970). A Compiler Generator. Prentice-Hall. ISBN 978-0-13-155077-3.
  17. ^ a b "BNF parser2", Source forge (project)
  18. ^ RBNF.
  19. ^ "Online demo", RPatk, archived from the original on 2025-08-06, retrieved 2025-08-06
  20. ^ "Tools", Act world, archived from the original on 2025-08-06
  21. ^ If the target processor is System/360, or related, even up to z/System, and the target language is similar to PL/I (or, indeed, XPL), then the required code "emitters" may be adapted from XPL's "emitters" for System/360.
  22. ^ McKeeman, W. M.; Horning, J.J.; Wortman, D. B. (1970). A Compiler Generator. Prentice-Hall. ISBN 978-0-13-155077-3.
  23. ^ bnf2xml
  24. ^ "JavaCC". Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  25. ^ "Script Syntax - Qlik Sense on Windows". Qlik.com. QlikTech International AB. Retrieved 10 January 2022.
  26. ^ "BNFC", Language technology, SE: Chalmers
[edit]
  • Garshol, Lars Marius, BNF and EBNF: What are they and how do they work?, NO: Priv.
  • RFC 5234 — Augmented BNF for Syntax Specifications: ABNF.
  • RFC 5511 — Routing BNF: A Syntax Used in Various Protocol Specifications.
  • ISO/IEC 14977:1996(E) Information technology – Syntactic metalanguage – Extended BNF, available from "Publicly available", Standards, ISO or from Kuhn, Marcus, Iso 14977 (PDF), UK: CAM (the latter is missing the cover page, but is otherwise much cleaner)

Language grammars

[edit]
生性多疑是什么意思 荨麻疹抹什么药膏 水银中毒会出现什么状况 浸猪笼是什么意思 虹霓是什么意思
玻璃什么时候传入中国 吃瓜群众什么意思 韬略是什么意思 胡青是什么 子宫肌瘤是什么引起的
减肥吃什么食物瘦得快 手为什么会脱皮 地笼捕河虾用什么诱饵 青苹果什么时候成熟 火烧是什么
早泄吃什么 champion什么意思 化疗后白细胞低吃什么食物补得快 什么手机信号最好最强 缺钙有什么症状
什么是女人味hcv8jop8ns0r.cn 为什么清真不吃猪肉hcv8jop6ns9r.cn 九月有什么节日hcv8jop3ns4r.cn 黑胡椒和白胡椒有什么区别hcv8jop3ns7r.cn 鼻子两侧毛孔粗大是什么原因造成的hcv9jop5ns4r.cn
0101是什么意思hcv8jop0ns7r.cn 三代试管是什么意思xinmaowt.com 手一直抖是什么原因hcv7jop9ns6r.cn 珍馐是什么意思hcv8jop9ns7r.cn 男性囊肿是什么引起的hcv9jop8ns3r.cn
音欠读什么zhiyanzhang.com 韩后属于什么档次hcv8jop3ns2r.cn 肩周炎是什么原因造成的hcv8jop9ns0r.cn 入睡困难是什么原因引起的hcv8jop9ns1r.cn 尿频吃什么药最好yanzhenzixun.com
巧克力囊肿是什么意思hcv7jop4ns5r.cn 胸下面是什么部位mmeoe.com 农历11月14日是什么星座hcv8jop4ns2r.cn 晓五行属性是什么gysmod.com 心什么什么什么hcv8jop4ns7r.cn
百度