- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何将此 BNF 转换为 EBNF?
<vardec> ::= var <vardeclist>;
<vardeclist> ::= <varandtype> {;<varandtype>}
<varandtype> ::= <ident> {,<ident>} : <typespec>
<ident> ::= <letter> {<idchar>}
<idchar> ::= <letter> | <digit> | _
最佳答案
EBNF 或 Extended Backus-Naur Form是 ISO 14977:1996 ,并且可以从 ISO 免费获得 PDF 格式*。它没有被计算机语言标准广泛使用。还有一个paper描述它,并且那篇论文包含这个总结EBNF符号的表格。
Table 1: Extended BNF
Extended BNF Operator Meaning
-------------------------------------------------------------
unquoted words Non-terminal symbol
" ... " Terminal symbol
' ... ' Terminal symbol
( ... ) Brackets
[ ... ] Optional symbols
{ ... } Symbols repeated zero or more times
{ ... }- Symbols repeated one or more times†
= in Defining symbol
; post Rule terminator
| in Alternative
, in Concatenation
- in Except
* in Occurrences of
(* ... *) Comment
? ... ? Special sequence
*
运算符与前面的(无符号)整数一起使用;它似乎不允许可变数量的重复——例如在初始字符后 1-15 个字符使标识符长达 16 个字符。这个列表
(
称为起始组符号和右括号
)
称为端基符号;开方括号
[
是开始选项符号,右方括号是结束选项符号;开撑
{
是开始重复符号和右大括号
}
是结束重复符号。单引号
'
被称为首引号和双引号
"
是第二个引号。
<vardec> ::= var <vardeclist>;
<vardeclist> ::= <varandtype> {;<varandtype>}
<varandtype> ::= <ident> {,<ident>} : <typespec>
<ident> ::= <letter> {<idchar>}
<idchar> ::= <letter> | <digit> | _
vardec = 'var', vardeclist, ';';
vardeclist = varandtype, { ';', varandtype };
varandtype = ident, { ',', ident }, ':', typespec;
ident = letter, { idchar };
idchar = letter | digit | '_';
::=
被
=
取代;终端如
;
和
_
用引号括起来;连接被明确标记为
,
;每个规则都以
;
结束.原文中的分组和替代操作恰好与标准符号一致。请注意,用逗号显式连接意味着多词非终结符是明确的。
{...}-
符号不是标准的一部分,只是论文的一部分。但是,如
jmmut注释在
comment ,标准确实定义了
{…}-
的含义:
§5.8 Syntactic term
…
When a syntactic-term is a syntactic-factor followed by an except-symbol followed by a syntactic-exception it represents any sequence of symbols that satisfies both of the conditions:
a) it is a sequence of symbols represented by the syntactic-factor,
b) it is not a sequence of symbols represented by the syntactic-exception.
…
NOTE -
{ "A" } -
represents a sequence of one or more A's because it is a syntactic-term with an empty syntactic-exception.
关于bnf - 如何将 BNF 转换为 EBNF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14922242/
如何用 EBNF 表示法描述带引号的字符串(如 C、Java 等)? 我在考虑这个(见下文),但 AnyCharacter 部分也将匹配双引号 (")。 QuotedString = '"' AnyC
这个问题在这里已经有了答案: 10年前关闭。 Possible Duplicate: Forth language EBNF rule for an infinite loop or if state
有没有EBNF描述 Forth 无限循环或 if 语句的规则? 最佳答案 EBNF 用于描述语法。无限循环或其他循环通常不会落入它所描述的范围内。因此,您将查看 EBNF 的无限循环,它看起来像: i
是否有一个 EBNF 铁路生成器可以创建更大的 block ,而不是每个语法生成一个图表? 我试过了 http://bottlecaps.de/rr/ui它非常好:可以从 W3C 规范(例如 http
有谁知道 Java 语言的 (E)BNF 的准确来源?最好是来自权威来源,例如太阳。 谢谢。 最佳答案 我相信第 3 版是最新的: JLS 3rd edition 关于Java EBNF?,我们在St
假设我有以下 EBNF: ProductNo ::= Digitgroup "-" Lettergroup; Digitgroup ::= Digit Digit? Digit? Digit?;
您是否知道一个语法分析器模块(用 Ruby、Python、Javascript 编写...),给定一个标记列表和一个 EBNF -like 语法(作为简单字符串传递),返回解析后的树?我发现最接近的是
我想设计一种满足 EBNF 的数学语言,让我编写尽可能接近自然数学语言的方程组和不等式。我想为这种小语言有两个解析器,一个解析器准备用这种语言编写的等式/不等式以供发布,另一个解析器准备它进行计算,即
我想使用扩展巴科斯-诺尔形式 (EBNF) 上下文无关语法定义一组无序的值。在 EBNF 中定义一个无序列表的值很容易,例如: value = 'A' | 'B' | 'C'; list = valu
在为语言解析器定义语法时,如何处理可能出现在文本中任何位置的注释(例如/* .... */)等内容? p> 当事物结构化时,从标签内的标签构建语法似乎效果很好,但注释似乎会抛出一切。 您只需分两步解析
我目前正在使用 lark parser for python尝试阅读一些问题规范。我对扩展 Backus-Naur 形式的“正确”语法感到困惑,尤其是 LHS 和 RHS 是如何分开的。 wikipe
我收到一个解析符合 EBNF 语法的文本的任务。有我可以使用的工具/库吗? 最佳答案 ANTLR是解析EBNF的标准工具。 参见Good parser generator (think lex/yac
我正在使用 LL(k) EBNF 语法来解析字符流。我需要三种不同类型的 token : CHARACTERS letter = 'A'..'Z' + 'a'..'z' . digit = "
我目前正在使用 lark parser for python尝试阅读一些问题规范。我对扩展 Backus-Naur 形式的“正确”语法感到困惑,尤其是 LHS 和 RHS 是如何分开的。 wikipe
我有以下数据: dbCon= { main = { database = "db1", hostname = "db1.serv.com", m
我最近需要为 C# 编写一个基本反射(reflect) SQL 的流畅界面。是的,我知道 LINQ to SQL,但我对“更接近金属”很感兴趣——有一些东西基本上只提供 在 C# 中的 Intelli
我正在使用 CocoR 生成类似 java 的扫描器/解析器: 我在创建 EBNF 表达式以匹配代码块时遇到了一些麻烦: 我假设一个代码块被两个众所周知的标记包围:示例: public method(
我不确定我是否将 EBNF 翻译成正确的代码,所以如果有人可以看看其中一种我很难做到的方法,那就太好了。 这是 EBNF 语法: program ::= P {declare} B {state
我正在尝试使用 Grako 和 Python 为 Cisco IOS 和 ASA 配置编写解析器。我试图弄清楚如何在 EBNF 中表示“作用域”关键字 - 例如,“描述”关键字必须出现在 interf
我正在使用 Grako EBNF/PEG parser . 我知道 EBNF 语法允许获取满足给定选项之一的表达式: (a | b | c) 是否有类似的语法部分或解决方法允许获取 a、b 和 c 的
我是一名优秀的程序员,十分优秀!