钱癣用什么药膏最好| 嘴苦什么原因| 悠是什么意思| 心魔是什么意思| 薛之谦属什么生肖| 屈臣氏是卖什么的| 嘱托是什么意思| 眼睛浮肿是什么原因引起的| 舔逼什么感觉| 关我什么事| 什么茶降糖效果最好| b型和ab型生的孩子是什么血型| 新蒜什么时候上市| 2017什么年| 睡觉为什么会磨牙| 肾素低说明什么| 什么猫好看| 月经来的少是什么原因| 蟾蜍是什么动物| 胃酸胃胀吃什么药| 茱萸是什么意思| 右眼皮一直跳什么预兆| 华盖星是什么意思| 高血压能喝什么饮料| 滴水不漏是什么生肖| 磨盘有什么风水说法| 碗摔碎了预示着什么| 女人大姨妈来了吃什么最好| ibs是什么单位| 翡翠属于什么五行| 内分泌失调吃什么食物好| 肆意是什么意思| 盆腔炎吃什么消炎药效果好| 蒙圈什么意思| 黄瓜敷脸有什么好处| 什么叫割礼| mcm中文叫什么牌子| 卫生局是什么单位| 吃什么食物增加黑色素| 减肥晚餐适合吃什么| 白菜什么时候播种| 脚扭了挂什么科| 春指什么生肖| 节瓜煲汤放什么材料| 地心引力是什么意思| 葡萄糖粉适合什么人喝| 102是什么意思| 儿童说话晚去医院挂什么科| 拔罐出水泡是什么原因| 二月二十二日是什么星座| 云代表什么动物| 风热感冒 吃什么| 未成年改名字需要什么手续| 发票抬头写什么| few是什么意思| 三伏贴是什么| 黑眼圈看什么科| 美什么美什么| 嗓子疼吃什么| 肋骨疼挂什么科| 哪吒妈妈叫什么名字| 胃不好吃什么最养胃| 雷龙吃什么| 两肺纤维灶是什么意思| 眉毛上的痣代表什么| 怀孕一个月有什么反应| 710是什么意思| 阿胶糕什么人不能吃| 奶冻是什么| 姨妈提前是什么原因| 腿膝盖疼是什么原因| 石家庄古代叫什么名字| 地球是什么形状的| 7月24是什么星座| 女孩子学什么专业好| 姜黄与生姜有什么区别| 成人受到惊吓吃什么药| hbsag阳性什么意思| 为什么拉屎有血| cov是什么意思| 小便尿不出来是什么原因| 什么是生物制剂| 脑瘤早期什么症状| bpa是什么意思| 婚检查什么| 什么叫遗精| ky是什么意思| 鬼一般找什么人压床| 三文鱼为什么可以生吃| 男人吃什么补身体| 卡粉是什么意思| 老鸹是什么鸟| 穆赫兰道到底讲的什么| 月经颜色暗红色是什么原因| 龙井茶是什么茶| acr是什么意思| 良性反应性改变是什么意思| obsidian什么意思| 身上冷是什么原因| 家里为什么会有蟑螂| 白羊座跟什么星座最配| 3岁小孩说话结巴是什么原因| 董事总经理是什么职位| 3月4号是什么星座| 梦见鹦鹉是什么征兆| 经期吃榴莲有什么好处| 什么口服液补血补气最好| 腰肌劳损挂什么科| 取环需要做什么检查| 慢性阑尾炎吃什么消炎药| 皮肤发红发烫是什么原因| 指甲有竖纹是什么原因| 外阴白斑是什么病| 头脑胀痛什么原因| 帛字五行属什么| 什么是结核病| 藠头是什么菜| 肺门不大是什么意思| 两拐是什么军衔| 85年属什么的生肖| 什么大山| 什么颜色衣服显白| 胎儿宫内窘迫是什么意思| j是什么| 梨花是什么颜色| 2026年是什么命| 村支部书记是什么级别| 儿童包皮手术挂什么科| 正畸和矫正有什么区别| 00后属什么生肖| 月经为什么推迟不来| 什么是动态口令| 眼皮跳是什么原因| 感情里什么叫偏爱| 手脚经常发麻是什么原因| 三百年前是什么朝代| bv什么意思| 血小板低是什么病| 经常出鼻血是什么原因| 宝付支付是什么| 肚脐眼周围痛挂什么科| 什么人容易得尿毒症| 属鼠的是什么命| 精心的什么| 马蜂长什么样| 看胸挂什么科| 1905年属什么生肖| 西芹炒什么好吃| 疤痕痒是什么原因| 社保卡是什么样的图片| 羡慕的意思是什么| 原住民是什么意思| 四川有什么好玩的| 是什么为什么怎么办| 粽子叶是什么植物的叶子| 头部出汗多吃什么药| 今天天气适合穿什么衣服| 4朵玫瑰代表什么意思| 为什么尿黄| 钙片吃多了有什么副作用| 明火是什么意思| 胆在什么位置图片| 兔子可以吃什么水果| 华为最新款手机是什么型号| 送老人什么礼物最好| 梦见家里发大水了是什么征兆| 单纯性苔藓是什么病| 什么是性质| 钙化灶是什么意思| 低密度胆固醇高吃什么药| 备孕前要注意什么| 月经后是什么期| 走婚是什么意思| 狮子被称为什么| 套马的汉子你威武雄壮是什么歌| 尖货是什么意思| 人活着到底有什么意义| 吃什么食物养肝| 五月二十五是什么星座| 长春有什么好吃的| 单丛属于什么茶| 什么在千里| 良人什么意思| 老鼠的克星是什么| 肌张力高有什么表现| 2月23是什么星座| 仓鼠吃什么| 过期的啤酒有什么用处| 左手大拇指麻木是什么原因| 失眠吃什么中成药效果最好| 癫痫属于什么科| 塔利班是什么| 结婚12年是什么婚| 舌头疼吃什么药好得快| 晨字属于五行属什么| 男生小便尿道刺痛什么原因| 心慌是什么感觉| 过剩是什么意思| 曹操是什么星座| 熬粥用什么锅好| 高丽参是什么参| 山见念什么| 丝瓜什么时候种植最好| 太安鱼是什么鱼| 食物链是什么意思| 胆固醇高有什么危害| 反流性咽喉炎吃什么药| 脚拇指外翻是什么原因造成的| 吃什么东西最营养| 火加良念什么| 卵圆孔未闭是什么意思| 天罗地网是什么生肖| 什么星球最大| 6月23号什么星座| 腹部淋巴结肿大是什么原因| 小妮子是什么意思| 凌晨1点是什么时辰| 支气管扩张是什么原因引起| 为什么一热身上就痒| 炎性增殖灶是什么意思| 小样是什么意思| 附骨疽是什么病| 阳明病是什么意思| 空调管滴水是什么原因| 初秋的天冰冷的夜是什么歌| 伏特加是什么| abo什么意思| 五月生日是什么星座| 土土心念什么| 大兴安岭属于什么市| 瓜田李下是什么意思| 周武王叫什么名字| 胎盘低要注意什么| 黄芪配升麻有什么作用| 子宫肌瘤吃什么中药可以消除掉| 舌苔厚腻发白是什么原因| 馕是什么意思| 十二指肠胃溃疡吃什么药| 性格是什么| 朗朗原名叫什么| 芝柏手表什么档次| 月经老是推后是什么原因| 胎位lsa是什么意思| 荷叶又什么又什么| 京东快递是什么快递| 收阴是什么意思| 马蜂蛰了用什么药| 小孩子注意力不集中看什么科| 困是什么原因| 打磨工为什么没人干| 给小孩买什么保险好| xpe是什么材料| 女性为什么不适合喝茉莉花茶| 瀹是什么意思| 女人人中深代表什么| 有什么放不下| 狗的本命佛是什么佛| 是什么车| 密度增高影是什么意思| 吃什么补白细胞| 吃什么吐什么| 3月31日是什么星座| 西洋参不能和什么一起吃| 天蝎座的幸运色是什么| 百度Jump to content

车辆乱停 广裕街拥堵不堪 司机堵心 高峰期寸步难行

From Wikipedia, the free encyclopedia
百度 在此,我代表浙江省委、省政府向广大网友表示衷心的感谢,希望广大网友继续关心、支持和监督我们的工作。

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-05.
  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-05, retrieved 2025-08-05
  20. ^ "Tools", Act world, archived from the original on 2025-08-05
  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-05. Retrieved 2025-08-05.
  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]
什么是滑精 旗舰店什么意思 孕妇不能吃什么食物 乳贴是什么 甲基化是什么意思
喝金银花有什么好处 EPS什么意思 梦见被子是什么意思 梦见自己升职了是什么预兆 喝苦丁茶有什么好处
舍本逐末什么意思 vc是什么 身体铅超标有什么危害 北京市长属于什么级别 藏红花是什么
鳝鱼吃什么食物 腹股沟淋巴结肿大挂什么科 随波逐流什么意思 什么叫混合斑块 飞机什么时候开始登机
oct是什么hcv7jop5ns5r.cn 仓鼠能吃什么hcv9jop5ns9r.cn 梦到车坏了是什么意思hanqikai.com 九月份有什么节日hcv9jop8ns3r.cn 为什么说hcv8jop6ns8r.cn
96120是什么电话hcv8jop3ns4r.cn 人中短代表什么ff14chat.com 过敏性鼻炎喝什么茶好hcv7jop9ns1r.cn 现在什么冰箱最好hcv9jop4ns3r.cn 无精打采是什么意思hcv9jop0ns7r.cn
工夫是什么意思hcv9jop3ns7r.cn 十二月四号是什么星座hcv9jop0ns5r.cn 妇科支原体是什么病hcv9jop2ns4r.cn 七个月宝宝能吃什么水果hcv8jop1ns3r.cn 梦见穿新衣服是什么意思hcv9jop3ns2r.cn
舌强语謇是什么意思hcv8jop1ns3r.cn 水瓶是什么星座hcv9jop2ns7r.cn 梦见捡到很多钱是什么意思hcv9jop5ns8r.cn 葵瓜子吃多了有什么危害hcv8jop0ns5r.cn 六月初五是什么星座hcv7jop6ns2r.cn
百度