- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 Rebol Wikipedia page .
"Parse expressions are written in the parse dialect, which, like the do dialect, is an expression-oriented sublanguage of the data exchange dialect. Unlike the do dialect, the parse dialect uses keywords representing operators and the most important nonterminals"
你能解释一下什么是终端和非终端吗?我读了很多关于语法的知识,但不明白它们的意思。这是另一个link这个词经常被使用的地方。
最佳答案
终结符和非终结符的定义不是特定于 Parse 的,而是与一般语法有关。像this之类的东西维基页面或简介 Grune's book很好地解释了它们。 OTOH,如果您对 Red Parse 的工作原理感兴趣并渴望简单的示例和指导,我建议您访问我们的专用 chat room .
<小时/>“解析”的含义略有不同,但我更喜欢的是通过正式配方(语法)将线性结构(广义上的符号字符串)转换为层次结构(推导树),或者检查是否给定的字符串具有由语法指定的树状结构(即,如果“字符串”属于“语言”)。
字符串中的所有符号都是终结符,从某种意义上说,树派生在它们上“终止”(即它们是树中的叶子)。反过来,非终结符是语法规则中使用的一种抽象形式 - 它们将终结符和非终结符分组在一起(即它们是树中的节点)。
例如,在以下 Parse 语法中:
greeting: ['hi | 'hello | 'howdy]
person: [name surname]
name: ['john | 'jane]
surname: ['doe | 'smith]
sentence: [greeting person]
问候语
、人
、姓名
、姓氏
和句子
是非终结符(因为它们实际上从未出现在线性输入序列中,仅出现在语法规则中);hi
、hello
、howdy
和 john
、jane
、doe
和 smith
是终端(因为解析器无法像处理非终端那样将它们“扩展”为一组终端和非终端,因此它通过到达底部)。>> parse [hi jane doe] sentence
== true
>> parse [howdy john smith] sentence
== true
>> parse [wazzup bubba ?] sentence
== false
正如你所看到的,终结符和非终结符是不相交的集合,即一个符号可以在其中一个集合中,但不能同时在两个集合中;而且,在语法规则中,只有非终结符可以写在左侧。
一种语法可以匹配不同的字符串,一个字符串也可以匹配不同的语法(在上面的例子中,可以是[问候语姓名]
,或者[感叹号2名词]
,甚至是[some noun]
,前提是定义了感叹号
和名词
非终结符)。
而且,像往常一样,一张图片胜过一千个文字:
希望有帮助。
关于grammar - 什么是终结符和非终结符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57908662/
我已经为此苦苦挣扎了一段时间。我创建了一个允许您打开 .TXT 文件的实用程序。这些文本文件包含 PCL(打印命令语言)。当我导入一个新文件时,它被\0(NULL 终止符)截断了。因为 PCL 文件随
我是一名优秀的程序员,十分优秀!