<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=REBOL</id>
	<title>REBOL - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=REBOL"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=REBOL&amp;action=history"/>
	<updated>2026-07-16T06:26:22Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=REBOL&amp;diff=54019&amp;oldid=prev</id>
		<title>imported&gt;ExultantEditor 来自 2025年12月26日 (五) 15:29</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=REBOL&amp;diff=54019&amp;oldid=prev"/>
		<updated>2025-12-26T15:29:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{NoteTA-lite|G1=IT}}&lt;br /&gt;
{{Infobox programming language&lt;br /&gt;
| name = Rebol&lt;br /&gt;
| logo = Rebol logo.png&lt;br /&gt;
| paradigm = [[面向语言编程|面向语言]]、[[数据交换]]、[[同像性]]、[[指令式编程|指令式]]、[[函数式编程|函数式]]、[[基于原型编程|基于原型]]&lt;br /&gt;
| year = {{Start date and age|1997}}&lt;br /&gt;
| designer = {{le|Carl Sassenrath|}}&lt;br /&gt;
| developer = REBOL技术&lt;br /&gt;
| typing = [[动态类型|动态]]、[[强类型]]&lt;br /&gt;
| license = 2.7.8为{{le|免费重新发布软件|Freely redistributable software}}&amp;lt;ref name=&amp;quot;lic&amp;quot;&amp;gt;REBOL Technologies. &amp;#039;&amp;#039;The REBOL/View and REBOL/Core 2.7.8 [http://www.rebol.com/license.html license] {{Wayback|url=http://www.rebol.com/license.html |date=20210506103107 }}&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt;，&amp;lt;br /&amp;gt;R3为[[Apache License|Apache 2.0许可证]]&amp;lt;ref name=&amp;quot;r3src&amp;quot;&amp;gt;[https://github.com/rebol/r3 R3 source] at [[GitHub]]&amp;lt;/ref&amp;gt;&lt;br /&gt;
| file ext = .r, .reb&amp;lt;ref&amp;gt;{{Cite web |url=http://www.rebol.com/article/0540.html |title=Carl&amp;#039;s REBOL Blog - Let&amp;#039;s switch to .reb suffix |publisher=Rebol.com |date=August 18, 2013 |access-date=January 23, 2014 |archive-date=2020-09-24 |archive-url=https://web.archive.org/web/20200924202754/http://www.rebol.com/article/0540.html }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| influenced_by = [[Self]], [[Forth]], [[Lisp]], [[Logo (程序语言)|Logo]]&amp;lt;ref name=&amp;quot;OG&amp;quot;&amp;gt;Goldman, E., Blanton, J. (2000). &amp;#039;&amp;#039;REBOL: The Official Guide.&amp;#039;&amp;#039; McGraw-Hill Osborne Media. {{ISBN|0-07-212279-X}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
| influenced = [[JSON]]&amp;lt;ref name=&amp;quot;JSON&amp;quot;&amp;gt;[[Douglas Crockford|Crockford, Douglas]]. &amp;#039;&amp;#039;[https://www.youtube.com/watch?v=-C-JoyNuQJs The JSON Saga] {{Wayback|url=https://www.youtube.com/watch?v=-C-JoyNuQJs |date=20201103161004 }}&amp;#039;&amp;#039;, [http://crockford.com/codecamp/jsonsaga.ppt jsonsaga.ppt] {{Webarchive|url=https://web.archive.org/web/20121004043939/http://crockford.com/codecamp/jsonsaga.ppt# |date=October 4, 2012 }}&amp;lt;/ref&amp;gt;, {{le|Red (编程语言)|Red (programming language)|Red}}&lt;br /&gt;
| operating_system = [[跨平台]]&lt;br /&gt;
| website = {{URL|www.rebol.com}}&lt;br /&gt;
| wikibooks = Rebol Programming&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;REBOL&amp;#039;&amp;#039;&amp;#039;（發音&amp;#039;&amp;#039;&amp;#039;reb-ol&amp;#039;&amp;#039;&amp;#039; [&amp;#039;reb-ol]，英文&amp;#039;&amp;#039;&amp;#039;R&amp;#039;&amp;#039;&amp;#039;elative &amp;#039;&amp;#039;&amp;#039;E&amp;#039;&amp;#039;&amp;#039;xpression &amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;ased &amp;#039;&amp;#039;&amp;#039;O&amp;#039;&amp;#039;&amp;#039;bject &amp;#039;&amp;#039;&amp;#039;L&amp;#039;&amp;#039;&amp;#039;anguage的缩写），自R3发行版改称为&amp;#039;&amp;#039;&amp;#039;Rebol&amp;#039;&amp;#039;&amp;#039;&amp;lt;ref&amp;gt;{{Cite web |url=http://www.rebol.com/cgi-bin/blog.r?view=0525 |title=Calling REBOL Rebol? |date=December 14, 2012 &amp;lt;!--6:49 GMT--&amp;gt; |access-date=December 2, 2013 |archive-date=December 3, 2013 |archive-url=https://web.archive.org/web/20131203023615/http://www.rebol.com/cgi-bin/blog.r?view=0525 }}&amp;lt;br/&amp;gt;{{Cite web|last1=Sassenrath|first1=Carl|title=Cross-compiling Rebol for your favorite embedded board|url=http://www.rebol.com/article/0526.html|access-date=16 September 2016|archive-date=2020-12-02|archive-url=https://web.archive.org/web/20201202131330/http://www.rebol.com/article/0526.html}}&amp;lt;/ref&amp;gt;，是[[跨平台]]的[[数据交换#數據交換語言|数据交换语言]]和[[编程范型|多范型]]的[[动态语言|动态]][[编程语言]]。由[[AmigaOS]]的系统架构师{{le|Carl Sassenrath|Carl Sassenrath}}设计，用于网络通信和[[分布式计算]]。&lt;br /&gt;
&lt;br /&gt;
==简介==&lt;br /&gt;
REBOL介入了方言化的概念：用于代码和数据的小型的、[[程式優化|优化]]的[[领域特定语言]]&amp;lt;ref name=&amp;quot;RD&amp;quot;&amp;gt;Roberts, Ralph (2000). &amp;#039;&amp;#039;REBOL for Dummies.&amp;#039;&amp;#039; Hungry Minds. {{ISBN|0-7645-0745-1}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;RP&amp;quot;&amp;gt;Auverlot, Olivier (2001). &amp;#039;&amp;#039;Rebol Programmation.&amp;#039;&amp;#039; Eyrolles. {{ISBN|2-212-11017-0}}.&amp;lt;/ref&amp;gt;，据设计者{{le|Carl Sassenrath|}}所说这是这个语言最显著的性质：“尽管它可以用于编程、写函数和进行处理，它最大的长处是轻易的建立领域特定语言或方言的能力。&amp;lt;ref&amp;gt;{{Cite web|last=Sassenrath|first=Carl|date=2000-07-01|url=http://www.ddj.com/184404172|title=Inside the REBOL scripting language|publisher=[[Dr. Dobb&amp;#039;s Journal]]|access-date=2021-02-19|archive-date=2009-04-27|archive-url=https://web.archive.org/web/20090427025459/http://www.ddj.com/184404172}}&amp;lt;/ref&amp;gt;”&lt;br /&gt;
&lt;br /&gt;
知名于[[JavaScript]]开发上贡献的[[道格拉斯·克羅克福特]]，曾经描述Rebol为是对[[JSON]]有影响者之一：“更加现代的语言，但具有一些非常类似于Lisp的想法，它全部建造在数据表示之上，然后再被作为程序执行。&amp;lt;ref name=&amp;quot;JSON&amp;quot; /&amp;gt;”&lt;br /&gt;
&lt;br /&gt;
最初，这个语言和它的官方实现，是REBOL技术公司开发的[[专有软件|专有]]和封闭源代码的软件。经过跟{{le|Lawrence Rosen|Lawrence Rosen (attorney)|Lawrence Rosen}}的讨论&amp;lt;ref&amp;gt;{{Cite web |url=http://www.rebol.com/article/0511.html |title=REBOL to become open source |publisher=Rebol.com |date=September 25, 2012 |access-date=January 23, 2014 |archive-date=2013-12-03 |archive-url=https://web.archive.org/web/20131203025424/http://www.rebol.com/article/0511.html }}&amp;lt;/ref&amp;gt;，Rebol版本R3解释器于2012年12月12日在[[Apache许可证|Apache 2.0许可证]]下发行&amp;lt;ref&amp;gt;{{Cite web|url=http://www.rebol.com/cgi-bin/blog.r?view=0519|title=Comments on: R3 Source Code Released!|first=Carl|last=Sassenrath|date=December 12, 2012|access-date=August 14, 2014|quote=&amp;#039;&amp;#039;You probably thought the source release would never happen? Am I right? Well, it&amp;#039;s there now in github at github.com/rebol/rebol.&amp;#039;&amp;#039;|archive-date=2014-08-19|archive-url=https://web.archive.org/web/20140819084949/http://www.rebol.com/cgi-bin/blog.r?view=0519}}&amp;lt;/ref&amp;gt;。老版本能以二进制形式获得到，没有发行它们的源代码的规划。&lt;br /&gt;
&lt;br /&gt;
Rebol已经被用于编程[[互联网]][[应用软件|应用]]（[[客户端]]和[[服务器端]]二者）、[[数据库]]应用、[[实用程序|实用工具]]和[[多媒体]]应用&amp;lt;ref name=&amp;quot;RD&amp;quot; /&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
==实例==&lt;br /&gt;
Rebol的设计原理之一就是“以简单方式做简单的事情”&amp;lt;ref name=&amp;quot;RD&amp;quot; /&amp;gt;。使用下面的“可视界面方言”例子来描述一个具有图形用户界面的简单的[[Hello world]]程序：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;view layout [text &amp;quot;Hello world!&amp;quot; button &amp;quot;Quit&amp;quot; [quit]]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用R3-GUI的类似的例子：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;view [text &amp;quot;Hello world!&amp;quot; button &amp;quot;Quit&amp;quot; on-action [quit]]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:R3-GUIHelloWorld.png|R3-GUI Hello world example]]&lt;br /&gt;
&lt;br /&gt;
==方言==&lt;br /&gt;
Rebol的[[领域特定语言]]叫做“方言”，是为特定用途优化的微型语言。方言可以用来定义业务规则、图形用户界面或在程序安装期间的屏幕序列。用户可以定义他们自己的方言，重用任何现存的Rebol单词并给予它在方言中的特殊含义&amp;lt;ref name=&amp;quot;RD&amp;quot; /&amp;gt;。方言是有处理Robol块的函数以特殊方式[[解释器|解释]]的。&lt;br /&gt;
&lt;br /&gt;
Rebol的方言能力的例子可以从单词&amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;看出来。在“数据交换方言”中&amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;就是个没有任何特殊含义的单词。在“执行方言”中, &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;是个[[全局变量]]，指称传递回一个函数结果值的一个原生[[子程序|函数]]&amp;lt;ref name=&amp;quot;OG&amp;quot;&amp;gt;Goldman, E., Blanton, J. (2000). &amp;#039;&amp;#039;REBOL: The Official Guide.&amp;#039;&amp;#039; McGraw-Hill Osborne Media. {{ISBN|0-07-212279-X}}.&amp;lt;/ref&amp;gt; 。在“可视界面方言”（VID）中&amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;是一个[[保留字|关键字]]，导致布局引擎去模拟一个[[回车符|回车返回]]，移动“呈现笔”下至下一行的开始处&amp;lt;ref name=&amp;quot;RP&amp;quot; /&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
具有图形能力的Rebol解释器必须理解和解释很多方言。下表按重要性依次列出最主要的方言。&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 方言名字&lt;br /&gt;
! 解释于&lt;br /&gt;
! 用途&lt;br /&gt;
|-&lt;br /&gt;
| 数据交换方言&lt;br /&gt;
| &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;函数&lt;br /&gt;
| 表示数据和元数据；Rebol方言的共用平台&lt;br /&gt;
|-&lt;br /&gt;
| 执行方言&lt;br /&gt;
| &amp;lt;code&amp;gt;do&amp;lt;/code&amp;gt;函数&lt;br /&gt;
| 编程&lt;br /&gt;
|-&lt;br /&gt;
| 解析方言&lt;br /&gt;
| &amp;lt;code&amp;gt;parse&amp;lt;/code&amp;gt;函数&lt;br /&gt;
| [[模式匹配]]&lt;br /&gt;
|-&lt;br /&gt;
| 函数规定方言&lt;br /&gt;
| &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;函数&lt;br /&gt;
| [[子程序|函数]]定义；[[函数式编程]]&lt;br /&gt;
|-&lt;br /&gt;
| 对象规定方言&lt;br /&gt;
| &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;函数&lt;br /&gt;
| [[对象 (计算机科学)|对象]]定义/继承；[[基于原型编程]]&lt;br /&gt;
|-&lt;br /&gt;
| 可视界面方言或&amp;lt;br /&amp;gt;RebGUI&lt;br /&gt;
| &amp;lt;code&amp;gt;layout&amp;lt;/code&amp;gt;函数或&amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;display&amp;lt;/code&amp;gt;函数&lt;br /&gt;
| 指定[[图形用户界面]]&lt;br /&gt;
|-&lt;br /&gt;
| 绘图方言&lt;br /&gt;
| &amp;lt;code&amp;gt;view&amp;lt;/code&amp;gt;函数&lt;br /&gt;
| 定义图形元素（直线、多边形等）&lt;br /&gt;
|-&lt;br /&gt;
| 脚本规定方言&lt;br /&gt;
| &amp;lt;code&amp;gt;do&amp;lt;/code&amp;gt;函数&lt;br /&gt;
| 脚本定义&lt;br /&gt;
|-&lt;br /&gt;
| 安全政策方言&lt;br /&gt;
| &amp;lt;code&amp;gt;secure&amp;lt;/code&amp;gt;函数&lt;br /&gt;
| 指定安全政策&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==语法==&lt;br /&gt;
Rebol的{{le|语法 (编程语言)|syntax (programming languages)|语法}}是[[自由形式语言|自由形式]]的，不要求特殊定位。但是，通常使用[[缩进风格|缩进]]来更好将文本结构传达给人类读者。&lt;br /&gt;
&lt;br /&gt;
不同方言的语法属性可以不同。对于所有Rebol方言的公共平台是“数据交换方言”；其他方言通常从它派生。除了是所有方言的公共平台之外，“数据交换方言”直接用来表示数据和元数据、迁移（populate）数据结构，在互联网上发送数据，并把它们保存在数据存储中。&lt;br /&gt;
&lt;br /&gt;
对比于编程语言比如[[C语言|C]]，“数据交换方言”不构成自[[聲明 (編程)|声明]]、[[语句 (计算机科学)|语句]]、{{le|表达式 (计算机科学)|expression (programming)|表达式}}或[[保留字|关键字]]。有效的“数据交换方言”文本流是[[树 (数据结构)|树数据结构]]，构成自块（根块是隐含的，子块由[[方括号]]{{le|界定符|delimiter|界定}}），圆块（[[圆括号]]界定）、[[字符串]]（[[双引号]]或适用多行字符串的[[花括号]]来界定；[[脱字符表示法]]用于不可打印字符）、[[统一资源定位符|URL]]、e-mail地址、文件、路径或其他[[变量 (计算机科学)|复合值]]。不同于[[ALGOL]]的[[块 (编程)|块]]，Rebol的块是复合（composite）值，类似于[[Lisp]]中引用起来的[[表达式]]。代码以Rebol块的形式写成的事实，使语言具有[[同像性]]&amp;lt;ref name=&amp;quot;OG&amp;quot; /&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
块还有圆块可以包含由[[空白字符|空白]]分隔的其他复合值（一个块可以包含子块、圆块、字符串等等)或[[变量 (计算机科学)|标量值]]比如：&amp;lt;code&amp;gt;word&amp;lt;/code&amp;gt;（单词）、&amp;lt;code&amp;gt;set-word&amp;lt;/code&amp;gt;（后缀着[[冒号]]的单词）、&amp;lt;code&amp;gt;get-word&amp;lt;/code&amp;gt;（前缀着冒号的单词）、&amp;lt;code&amp;gt;lit-word&amp;lt;/code&amp;gt;（前缀着[[撇号]]的单词）&amp;lt;ref&amp;gt;{{Cite web|url=http://www.rebol.com/r3/docs/datatypes/word.html|title=REBOL 3 Datatypes: Word!|access-date=2022-02-10|archive-date=2022-02-10|archive-url=https://web.archive.org/web/20220210215520/http://www.rebol.com/r3/docs/datatypes/word.html}}&amp;lt;/ref&amp;gt;，数字、钱款、[[字符编码|字符]]等。注意在单词中允许特殊字符，所以&amp;lt;code&amp;gt;a+b&amp;lt;/code&amp;gt;是一个单词，不同于&amp;lt;code&amp;gt;a + b&amp;lt;/code&amp;gt;，它是空格分隔的三个单词。&lt;br /&gt;
&lt;br /&gt;
[[注释 (计算机语言)|注释]]可以出现在[[分号]]之后直到行结束。多行注释或不被词法分析器忽略的注释，可以使用平常的数据类型比如多行字符串来书写&amp;lt;ref name=&amp;quot;OG&amp;quot; /&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
==语义==&lt;br /&gt;
块包含领域特定语言，它可以作为[[参数 (计算机科学)|实际参数]]提交给特定的“求值器”函数&amp;lt;ref name=&amp;quot;RD&amp;quot; /&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
===do===&lt;br /&gt;
最常用的求值器是&amp;lt;code&amp;gt;do&amp;lt;/code&amp;gt;函数。它被缺省的用来解释给解释器[[命令行界面|控制台]]的文本输入。&lt;br /&gt;
&lt;br /&gt;
由&amp;lt;code&amp;gt;do&amp;lt;/code&amp;gt;函数解释的“执行方言”，是一个{{le|面向表达式编程语言|expression-oriented programming languages|面向表达式}}的“数据交换方言”的子语言。语言的主要语义单元是{{le|表达式 (计算机科学)|expression (programming)|表达式}}。对比于派生自[[ALGOL]]的指令式编程语言，“执行方言”既没有关键字也没有语句。&lt;br /&gt;
&lt;br /&gt;
单词被用作[[大小写敏感性|大小写不敏感]][[变量 (计算机科学)|变量]]。像在所有[[动态类型]]语言中那样，变量没有关联的类型，类型是关联于值的。在&amp;lt;code&amp;gt;do&amp;lt;/code&amp;gt;函数遇到一个单词的时候，返回对这个单词的求值结果。&amp;lt;code&amp;gt;set-word&amp;lt;/code&amp;gt;单词可以用于[[赋值 (计算机科学)|赋值]]。尽管没有语句，赋值和[[副作用 (计算机科学)|有副作用的函数]]在一起，可以用于[[指令式编程]]&amp;lt;ref name=&amp;quot;OG&amp;quot; /&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
根块的子块自行用&amp;lt;code&amp;gt;do&amp;lt;/code&amp;gt;求值。块作为解释器实际参数这个性质被用来处理数据块，通过把块作为实际参数提交给[[控制流程|控制]]函数如&amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;either&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt;等用于[[结构化编程]]，在把块传递给特定解释器函数时用于方言&amp;lt;ref name=&amp;quot;RD&amp;quot; /&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
值得注意的特殊问题是赋值给变量的复合值是不复制的。要制作一个复本，这个值必须传递给&amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;函数&amp;lt;ref name=&amp;quot;OG&amp;quot; /&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;do&amp;lt;/code&amp;gt;函数通常服从[[波兰表示法|前缀表示法]]求值，这里函数处理跟随在其后的实际参数。但是，也存在使用中缀[[算子_(編程)|算符]]的[[中缀表示法|中缀求值]]。中缀求职优先于前缀求值。例如：&lt;br /&gt;
 [[绝对值|abs]] -2 + 3&lt;br /&gt;
返回&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;，因为中缀加法优先于计算绝对值。在求值中缀表达式的时候，求值的次序是从左至右，没有算符[[运算次序|优先]]于其他算符。例如&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
2 + 3 * 4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
返回&amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;，对于乘法优先于加法的求值这将产生14。所有算法都有前缀版本。&amp;lt;code&amp;gt;Do&amp;lt;/code&amp;gt;在将实际参数传递给函数之前通常对实际参数进行求值。所以，下列表达式：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
print read http://zh.wikipedia.org/wiki/Rebol&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
首先读取维基百科的Rebol页面，接着把结果传递给&amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt;函数。圆括号可以用来改变求值的次序。使用[[波兰表示法|前缀表示法]]，可以避免使用圆括号&amp;lt;ref name=&amp;quot;OG&amp;quot; /&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
这种简单的优先级规则有如下优势：&lt;br /&gt;
* 不需要在写表示式的时候查看优先级表格，&lt;br /&gt;
* 不需要在定义新算符的时候重写优先级表格，&lt;br /&gt;
* 表达式可以轻易的从中缀[[转写]]成前缀表示法或反之。&lt;br /&gt;
还有一个劣势：&lt;br /&gt;
*习惯了常规优先级规则的用户容易出错&amp;lt;ref name=&amp;quot;RD&amp;quot; /&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
===parse===&lt;br /&gt;
&amp;lt;code&amp;gt;parse&amp;lt;/code&amp;gt;函数适合用于规定、验证、变换和解释方言。它通过在运行时间匹配“解析表达式”来完成工作&amp;lt;ref name=&amp;quot;RD&amp;quot; /&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
“解析表达式”是使用“解析方言”来书写的，它类似于“执行方言”，是“数据交换方言”的面向表达式的子语言。不同于“执行方言”，“解析方言”使用关键字来代表算符和大多数重要的[[终结符与非终结符|非终结符]]，中缀分析算符没有前缀等价者并使用优先级规则（序列优先于选择）&amp;lt;ref name=&amp;quot;RD&amp;quot; /&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
动作也可以被包含而在解析处理期间进行，并且&amp;lt;code&amp;gt;parse&amp;lt;/code&amp;gt;函数可以被用来处理块或字符串。在“字符串解析”层级，&amp;lt;code&amp;gt;parse&amp;lt;/code&amp;gt;必须处理“低层”解析，需要考虑到[[字符 (计算机科学)|字符]]和{{le|界定符|delimiter}}。“块解析”是更高层级，处理在Rebol值的级别上的扫描&amp;lt;ref name=&amp;quot;RD&amp;quot; /&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
解析方言属于由{{le|自顶向下解析语言|top-down parsing language}}或[[解析表达文法]]（PEG）为代表的文法家族。主要的类似性是所有家族成员都有序列和选择算符的出现。解析方言的语法和在解析方言和PEG之间的类似性可以用分析算术表达式的[[解析表达文法#示例|PEG示例]]的如下转写来展示：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
Digit: charset [#&amp;quot;0&amp;quot; - #&amp;quot;9&amp;quot;]&lt;br /&gt;
Value: [some Digit | &amp;quot;(&amp;quot; Expr &amp;quot;)&amp;quot;]&lt;br /&gt;
Product: [Value any [[&amp;quot;*&amp;quot;| &amp;quot;/&amp;quot;] Value]]&lt;br /&gt;
Sum: [Product any [[&amp;quot;+&amp;quot;| &amp;quot;-&amp;quot;] Product]]&lt;br /&gt;
Expr: Sum&lt;br /&gt;
parse/all &amp;quot;12+13&amp;quot; Expr&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==引用==&lt;br /&gt;
{{reflist|2}}&lt;br /&gt;
&lt;br /&gt;
==延伸阅读==&lt;br /&gt;
* {{Cite news|last=Mikes|first=Nora|title=A REBOL incursion: It&amp;#039;s not a scripting language, not a programming language -- and not a new Amiga, either. Or is it?|url=http://www.linuxworld.com/linuxworld/lw-1999-10/lw-10-rebol.html|newspaper=LinuxWorld|date=November 20, 1999|archive-url=https://web.archive.org/web/20050324001942/http://linuxworld.com/linuxworld/lw-1999-10/lw-10-rebol.html|archive-date=March 24, 2005}}&lt;br /&gt;
* {{Cite news|last=Story|first=Derrick|title=Rebol Might Be the Language for the Rest of Us|url=http://webreview.com/pub/1999/08/27/feature/index.html|newspaper=[[Web Review]]|date=Aug 27, 1999|archive-url=https://web.archive.org/web/19991012182529/http://webreview.com/pub/1999/08/27/feature/index.html |archive-date=October 12, 1999}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* {{Curlie|Computers/Programming/Languages/REBOL|REBOL}}&lt;br /&gt;
* [http://re-bol.com/rebol.html A REBOL tutorial] {{Wayback|url=http://re-bol.com/rebol.html |date=20210301001217 }}&lt;br /&gt;
* [http://learnrebol.com/rebol3_book.html Rebol 3 Tutorial] {{Wayback|url=http://learnrebol.com/rebol3_book.html |date=20210130011136 }}&lt;br /&gt;
&lt;br /&gt;
{{程序设计语言}}&lt;br /&gt;
{{Data Exchange}}&lt;br /&gt;
[[Category:程序设计语言]]&lt;br /&gt;
[[Category:動態編程語言]]&lt;br /&gt;
[[Category:动态类型编程语言]]&lt;br /&gt;
[[Category:函数式编程语言]]&lt;br /&gt;
[[Category:基于原型的编程语言]]&lt;br /&gt;
[[Category:同像性编程语言]]&lt;br /&gt;
[[Category:脚本语言]]&lt;br /&gt;
[[Category:AmigaOS軟件]]&lt;br /&gt;
[[Category:1997年建立的程式語言]]&lt;/div&gt;</summary>
		<author><name>imported&gt;ExultantEditor</name></author>
	</entry>
</feed>