(Translated by https://www.hiragana.jp/)
REBOL - 维基百科,自由的百科全书 とべ转到内容ないよう

REBOL

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
Rebol
编程范型めんこう语言, かずすえ交换, どうぞうせい, 指令しれいしき, 函数かんすうしき, もと于原がた
設計せっけいしゃCarl SassenrathえいCarl Sassenrath
じつ作者さくしゃREBOLわざ
发行时间1997ねん,​27ねんまえ​(1997
とうぜん版本はんぽん
  • 2.101.0 (2012ねん12月12にち)
編輯維基數據鏈接
かたたい系統けいとう动态, つよ类型
操作そうさけいまたが平台ひらだい
許可きょかしょう2.7.8为めん费重しん发布软件えいFreely redistributable software[1]
R3为Apache 2.0许可证[2]
ぶんけん扩展めい.r, .reb[3]
あみwww.rebol.com
啟發けいはつげん
Self, Forth, Lisp, Logo[4]
影響えいきょうげん
JSON[5], RedえいRed (programming language)

REBOL發音はつおんreb-ol ['reb-ol],英文えいぶんRelative Expression Based Object Languageてき缩写),R3发行ばん改称かいしょうRebol[6]またが平台ひらだいてきかずすえ交换语言范型てき动态编程语言ゆかりAmigaOSまとけい统架构师Carl SassenrathえいCarl Sassenrath设计,よう于网络通信和しんわ分布ぶんぷしき计算

简介

[编辑]

REBOL介入かいにゅうりょう方言ほうげんてき概念がいねんよう于代码和すうすえてき小型こがたてき优化えいProgram optimizationてき领域特定とくてい语言[7][8]すえ设计しゃCarl SassenrathえいCarl Sassenrathところ说这这个语言さい显著てきせい质:“つきかん它可以用于编ほどうつし函数かんすう进行处理,它最大さいだいてき长处轻易てき建立こんりゅう领域特定とくてい语言ある方言ほうげんてき能力のうりょく[9]

知名ちめいJavaScript开发じょう贡献てきみちかくひしげ斯·かつかつぶくとく,曾经描述Rebol为是对JSONゆうかげ响者いち:“さら现代てき语言,ただし具有ぐゆう一些非常类似于Lispてきそうほう,它全建造けんぞうざいすうすえ表示ひょうじうえしかきさきさいさく为程じょ执行。[5]

最初さいしょ,这个语言它的かんかた实现,REBOLわざ公司こうし开发てき专有かずふう闭源だい码的软件。经过跟Lawrence RosenえいLawrence Rosen (attorney)てき讨论[10],Rebol版本はんぽんR3かい释器于2012ねん12月12にちざいApache 2.0许可证しも发行[11]ろうばん本能ほんのう以二进制形式获得到,ぼつゆう发行它们てきみなもとだい码的规划。

Rebolやめ经被よう于编ほど互联网应用きゃく户端ふく务器はししゃ)、かずすえ应用、实用工具こうぐ媒体ばいたい应用[7]

实例

[编辑]

Rebolてき设计原理げんりいち就是“以简单方しき做简单的事情じじょう[7]使用しよう下面かめんてき视界めん方言ほうげんれい子来こらい描述一个具有图形用户界面的简单的Hello worldほどじょ

view layout [text "Hello world!" button "Quit" [quit]]

使用しようR3-GUIてき类似てきれい

view [text "Hello world!" button "Quit" on-action [quit]]

R3-GUI Hello world example

方言ほうげん

[编辑]

Rebolてき领域特定とくてい语言さけべ做“方言ほうげん”,特定とくてい用途ようと优化てきほろかた语言。方言ほうげん以用てい义业务规则、图形よう户界めんあるざいほどじょやすそう间的へいまく序列じょれつよう户可以定义他们自己じこてき方言ほうげん重用じゅうようにんなん现存てきRebol单词并给它在方言ほうげんちゅうてき特殊とくしゅ含义[7]方言ほうげんゆう处理Robol块的函数かんすう特殊とくしゅ方式ほうしきかいてき

Rebolてき方言ほうげん能力のうりょくてきれい以从单词return出来できざいかずすえ交换方言ほうげんちゅうreturn就是个没ゆうにんなん特殊とくしゅ含义てき单词。ざい“执行方言ほうげんちゅう, return全局ぜんきょく变量ゆびしょう传递かい一个函数结果值的一个原生函数かんすう[4]ざい视界めん方言ほうげん”(VID)ちゅうreturnいち关键,导致ぬのきょく引擎去拟一个かい车返かいうつり动“てい现笔”しもいたりいちぎょうてき开始处[8]

具有ぐゆう图形能力のうりょくてきRebolかい释器必须理解りかい和解わかい释很方言ほうげん下表かひょう重要じゅうようせいれつさい主要しゅようてき方言ほうげん

方言ほうげん名字みょうじ かい释于 用途ようと
かずすえ交换方言ほうげん load函数かんすう 表示ひょうじすうすえもとすうすえ;Rebol方言ほうげんてき共用きょうよう平台ひらだい
执行方言ほうげん do函数かんすう 编程
解析かいせき方言ほうげん parse函数かんすう しきひきはい
函数かんすう规定方言ほうげん make函数かんすう 函数かんすうてい义;函数かんすうしき编程
对象规定方言ほうげん make函数かんすう 对象てい义/继承;もと于原がた编程
视界めん方言ほうげんある
RebGUI
layout函数かんすうある
display函数かんすう
指定してい图形よう户界めん
绘图方言ほうげん view函数かんすう てい义图がた元素げんそちょく线、边形とう
脚本きゃくほん规定方言ほうげん do函数かんすう 脚本きゃくほんてい
安全あんぜん政策せいさく方言ほうげん secure函数かんすう 指定してい安全あんぜん政策せいさく

语法

[编辑]

Rebolてき语法えいsyntax (programming languages)これ自由形じゆうがたしきてき要求ようきゅう特殊とくしゅ定位ていいただし通常つうじょう使用しよう缩进らいさらこう将文まさふみほん结构传达给人类读しゃ

不同ふどう方言ほうげんてき语法属性ぞくせい不同ふどう。对于所有しょゆうRebol方言ほうげんてき公共こうきょう平台ひらだいただしかずすえ交换方言ほうげん”;其他方言ほうげん通常つうじょう从它派生はせいじょりょう所有しょゆう方言ほうげんてき公共こうきょう平台ひらだいそと,“かずすえ交换方言ほうげん直接ちょくせつようらい表示ひょうじすうすえもとすうすえ、迁移(populate)すうすえ结构,ざい互联网上发送すうすえ,并把它们保存ほぞんざいすうすえそん储中。

对比于编ほど语言C,“かずすえ交换方言ほうげん构成声明せいめいえいdeclaration (computer science)语句おもて达式えいexpression (programming)ある关键有效ゆうこうてきかずすえ交换方言ほうげんぶん本流ほんりゅう树数すえ结构,构成块(块是隐含てき块由かたくくごうさかいじょうえいdelimiter),圆块(圆括ごうさかいじょう)、くしそう引号ある适用くだりくしてきはなくくごうかいてい脱字だつじ表示法ひょうじほうよう不可ふか印字いんじ)、URL、e-mailぶんけんみちみちある其他复合值不同ふどうALGOLてき,Rebolてき块是复合(composite)值,类似于Lispちゅう引用いんようおこりらいてきおもて达式だい码以Rebol块的形式けいしきうつしなりてきこと实,使つかい语言具有ぐゆうどうぞうせい[4]

块还ゆう圆块以包含由空白くうはくぶんへだたてき其他复合值(一个块可以包含子块、圆块、くしとうとう)ある标量值如:word(单词)、set-wordきさき缀着おかせごうてき单词)、get-wordぜん缀着おかせごうてき单词)、lit-wordぜん缀着撇号てき单词)[12]数字すうじ、钱款、ひとし注意ちゅういざい单词ちゅうまこと特殊とくしゅ所以ゆえんa+bいち个单词,不同ふどうa + b,它是そらかくぶんへだたてきさん个单词。

ちゅう以出现在ぶんごうこれきさきちょくいたあるき结束。くだりちゅう释或词法分析ぶんせきゆるがせりゃくてきちゅう释,使用しよう平常へいじょうてきすうすえ类型如多ぎょうくしらい书写[4]

语义

[编辑]

包含ほうがん领域特定とくてい语言,它可以作为实际さんすうひさげ交给特定とくていてきもとめ值器”函数かんすう[7]

do

[编辑]

さい常用じょうようてきもとめ值器do函数かんすう。它被かけしょうてきようらいかい释给かい释器ひかえせいだいてきぶんほん输入。

ゆかりdo函数かんすうかい释的“执行方言ほうげん”,いちめんこうひょう达式えいexpression-oriented programming languagesてきかずすえ交换方言ほうげんてき语言。语言てき主要しゅよう语义单元おもて达式えいexpression (programming)。对比于派生はせいALGOLてき指令しれいしき编程语言,“执行方言ほうげんすんでぼつゆう关键也没ゆう语句。

单词用作ようさく大小だいしょううつし不敏ふびんかん变量ぞうざい所有しょゆう动态类型语言ちゅう样,变量ぼつゆう关联てき类型,类型关联于值てきざいdo函数かんすうぐういた一个单词的时候,かえしかい对这个单词的もとめ值结はてset-word单词以用于赋值つきかんぼつゆう语句,赋值ゆう副作用ふくさようてき函数かんすうざい一起かずき以用于指令しれいしき编程[4]

块的块自行用ぎょうようdoもとめ值。块作为解释器实际さんすう这个せい质被ようらい处理すうすえ块,つう过把块作为实际参すうひさげ交给ひかえせい函数かんすうifeitherloopひとしよう结构编程ざい块传递给特定とくていかい释器函数かんすう时用于方言ほうげん[7]

值得注意ちゅういてき特殊とくしゅ问题赋值给变量的りょうてき复合值是复制てきよう制作せいさくいち个复ほん,这个值必须传递给copy函数かんすう[4]

do函数かんすう通常つうじょうふくぜん表示法ひょうじほうもとめ值,这里函数かんすう处理跟随ざい其后てき实际さんすうただし,也存在そんざい使用しようちゅうさんえいOperator (computer programming)てきちゅう缀求值ちゅう缀求职优さき于前缀求值。れい如:

abs -2 + 3

かえしかい1いん为中缀加ほう优先于计さん绝对值。ざいもとめ值中缀表达式てき时候,もとめ值的次序じじょ从左いたりみぎぼつゆうざん优先于其さんれい

2 + 3 * 4

かえしかい20,对于乘法じょうほう优先于加法的ほうてきもとめ值这はた产生14。所有しょゆう算法さんぽうみやこゆうぜん版本はんぽんDoざいしょう实际さんすう传递给函すうぜん通常つうじょう对实际参すう进行もとめ值。所以ゆえんしもれつひょう达式:

print read http://en.wikipedia.org/wiki/Rebol

くびさき读取维基百科ひゃっかてきRebol页面,接着せっちゃく结果传递给print函数かんすう。圆括ごう以用らいあらため变求值的次序じじょ使用しようぜん表示法ひょうじほう以避めん使用しよう圆括ごう[4]

这种简单てき优先级规则有如下优势:

  • 需要じゅようざいうつし表示ひょうじしきてき时候查看优先级表かく
  • 需要じゅようざいてい义新さんてき时候じゅううつし优先级表かく
  • おもて达式以轻えきてき从中缀转写なりぜん表示法ひょうじほうあるはんこれ

还有いち个劣势:

  • 习惯りょうつね规优さき级规则的よう容易ようい[7]

parse

[编辑]

parse函数かんすう适合よう于规じょう、验证、变换和解わかい方言ほうげん。它通过在运行时间ひきはい解析かいせきひょう达式”らい完成かんせい工作こうさく[7]

解析かいせきひょう达式”使用しよう解析かいせき方言ほうげんらい书写てき,它类于“执行方言ほうげん”,かずすえ交换方言ほうげんてきめんむこうひょう达式てき语言。不同ふどう于“执行方言ほうげん”,“解析かいせき方言ほうげん使用しよう关键らい代表だいひょうざん和大かずひろ多数たすう重要じゅうようてき终结ちゅう分析ぶんせきざんぼつゆうぜん缀等价者并使用しよう优先级规则(序列じょれつ优先于选择)[7]

动作也可以被包含ほうがん而在解析かいせき处理间进ぎょう,并且parse函数かんすう以被ようらい处理块或くしざいくし解析かいせき”层级,parse必须处理“てい层”解析かいせき需要じゅようこう虑到さかいていえいdelimiter。“块解析かいせきさらだか层级,处理ざいRebol值的级别じょうてき扫描[7]

解析かいせき方言ほうげんぞく于由顶向解析かいせき语言えいtop-down parsing languageある解析かいせきひょう达文ほう(PEG)为代表だいひょうてき文法ぶんぽう家族かぞく主要しゅようてき类似せい所有しょゆう家族かぞくなり员都ゆう序列じょれつ选择さんてき现。解析かいせき方言ほうげんてき语法ざい解析かいせき方言ほうげんPEG间的类似せい以用分析ぶんせきざん术表达式てきPEGしめせれいてき如下转写らい展示てんじ

Digit: charset [#"0" - #"9"]
Value: [some Digit | "(" Expr ")"]
Product: [Value any [["*"| "/"] Value]]
Sum: [Product any [["+"| "-"] Product]]
Expr: Sum
parse/all "12+13" Expr

引用いんよう

[编辑]
  1. ^ REBOL Technologies. The REBOL/View and REBOL/Core 2.7.8 license页面そん档备份そん互联网档あん
  2. ^ R3 source at GitHub
  3. ^ Carl's REBOL Blog - Let's switch to .reb suffix. Rebol.com. August 18, 2013 [January 23, 2014]. (原始げんし内容ないようそん档于2020-09-24). 
  4. ^ 4.0 4.1 4.2 4.3 4.4 4.5 4.6 Goldman, E., Blanton, J. (2000). REBOL: The Official Guide. McGraw-Hill Osborne Media. ISBN 0-07-212279-X.
  5. ^ 5.0 5.1 Crockford, Douglas. The JSON Saga页面そん档备份そん互联网档あん, jsonsaga.ppt 互联网档あんてきそんそん档日October 4, 2012,.
  6. ^ Calling REBOL Rebol?. December 14, 2012 [December 2, 2013]. (原始げんし内容ないようそん档于December 3, 2013). 
    Sassenrath, Carl. Cross-compiling Rebol for your favorite embedded board. [16 September 2016]. (原始げんし内容ないようそん档于2020-12-02). 
  7. ^ 7.00 7.01 7.02 7.03 7.04 7.05 7.06 7.07 7.08 7.09 Roberts, Ralph (2000). REBOL for Dummies. Hungry Minds. ISBN 0-7645-0745-1.
  8. ^ 8.0 8.1 Auverlot, Olivier (2001). Rebol Programmation. Eyrolles. ISBN 2-212-11017-0.
  9. ^ Sassenrath, Carl. Inside the REBOL scripting language. Dr. Dobb's Journal. 2000-07-01 [2021-02-19]. (原始げんし内容ないようそん档于2009-04-27). 
  10. ^ REBOL to become open source. Rebol.com. September 25, 2012 [January 23, 2014]. (原始げんし内容ないようそん档于2013-12-03). 
  11. ^ Sassenrath, Carl. Comments on: R3 Source Code Released!. December 12, 2012 [August 14, 2014]. (原始げんし内容ないようそん档于2014-08-19). You probably thought the source release would never happen? Am I right? Well, it's there now in github at github.com/rebol/rebol. 
  12. ^ REBOL 3 Datatypes: Word!. [2022-02-10]. (原始げんし内容ないようそん档于2022-02-10). 

延伸えんしん阅读

[编辑]

外部がいぶ链接

[编辑]