- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有以下 EBNF:
ProductNo ::= Digitgroup "-" Lettergroup;
Digitgroup ::= Digit Digit? Digit? Digit?;
Digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
Lettergroup ::= Letter Letter? Letter? Letter? Letter?;
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";
现在我想设置 ProductNo = 5 的最大 token
示例:
Input : 1-A (EBNF valid and Token < 5)
Input : 023-A (EBNF valid and Token < 5)
Input : 0231-ABI (currently EBNF valid but Token = 8 > 5 so this should not be valid)
Input : 022-ABCDE(currently EBNF valid but Token = 9 > 5 so this should not be valid)
正如您在此示例输入中所看到的,只要其 EBNF 符合(最少 1 位数字,最多 4 位数字),(最少 1 个字母,最多 5 个字母),数字和字母的组合就可以有所不同,但 token 的总和<= 5(包括“-”)。
问题:除了写下字母和数字的每个有效组合之外,还有其他方法吗?
我当前的解决方案:
ProductNo ::= Token Token Token Token? Token?;
Token ::= Digit | Letter | "-";
Digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
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";
问题:ProductNo(数字组、“-”、字母组)的组成未再现。所以我需要将两个 EBNF 合并为一个,但我真的不知道如何做到这一点。
最佳答案
我假设您使用的是 W3C 表示法:http://www.w3.org/TR/REC-xml/#sec-notation ,不是标准 ISO 表示法:http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form .
如果我错了,请指定您正在使用哪个 EBNF!
在 W3C 表示法中,您可以使用:
Digit ::= [0-9]
Letter ::= [A-Z]
GoodFormat ::= Digit+ "-" Letter+
Token ::= Digit | Letter | "-"
TooLong ::= Token Token Token Token Token Token+
ProductNo ::= GoodFormat - TooLong
关于max - EBNF 最大代币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19728784/
如何用 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 的
我是一名优秀的程序员,十分优秀!