标签: red

在Rebol和Red中有关于定义范围的整体解释

REBOL /核心用户指南什么是红色,我了解到Rebol和Red都使用了定义范围.

从指南中,我知道它是静态作用域的一种形式,"变量的作用域在定义其上下文时确定",也称为运行时词法作用域,并且是依赖于上下文定义的动态形式的静态作用域..

我知道在com-sci中,有两种形式的范围:词法范围(静态范围)和动态范围.这个定义范围使我困惑.

那么什么是定义范围?

scope rebol red

17
推荐指数
2
解决办法
1801
查看次数

在Rebol或Red中搜索字符串

我有兴趣搜索很多长串,尝试在rebol中破解类似sed的实用程序作为学习练习.作为一个婴儿步骤,我决定寻找一个角色:

>> STR: "abcdefghijklmopqrz"

>> pos: index? find STR "z"
== 18

>> pos
== 18
Run Code Online (Sandbox Code Playgroud)

大!我们来寻找其他东西......

>> pos: index? find STR "n"
** Script Error: index? expected series argument of type: series port
** Where: halt-view
** Near: pos: index? find STR "n"

>> pos
== 18
Run Code Online (Sandbox Code Playgroud)

什么?:-(

是的,我正在搜索的字符串中没有"n".但是解释器爆炸而不是做一些明智的事情有什么好处,例如在pos中返回一个可测试的"null"字符?

我被告知我应该这样做:

>> if found? find STR "z" [pos: index? find STR "z"]
== 18

>> if found? find STR "n" [pos: index? find STR "n"]
== none

>> pos
== …
Run Code Online (Sandbox Code Playgroud)

string rebol rebol2 red

10
推荐指数
1
解决办法
440
查看次数

是否可以用Red编写Windows DLL?

我想为一些Windows应用程序编写一个插件,它必须是一个DLL.我真的很想尝试红色和红色/系统混合.但是在SO上询问Rebol&Red聊天室时,我对红色和红色/系统,红色/系统目前是否可能有不同的反应.什么是明确的答案?

red red-system

9
推荐指数
1
解决办法
337
查看次数

"如何将Red应用于此Lisp代码的编译时优化?"

这是我想用Red实现的Lisp代码优化模式:

(defmacro compute-at-compile (x)
  `(+ ,(* pi 2) ,x))

(macroexpand '(compute-at-compile 1))
; => (+ 6.283185307179586 1)
Run Code Online (Sandbox Code Playgroud)

我怎么用红色表达这个?(我意识到在今天的实现中可能无法实现,我想知道如何在语言级别表达代码以获得这样的优化.它是否需要源代码中的特殊标记,还是像Lisp一样自动化? )

lisp compiler-optimization red

7
推荐指数
1
解决办法
179
查看次数

字面词的类型

我正在阅读Bindology并试过这个:

>> type? first ['x]
== lit-word!
>> type? 'x
== word!
Run Code Online (Sandbox Code Playgroud)

我预计也会type? 'x回来lit-word!.欣赏任何见解.

rebol red

7
推荐指数
1
解决办法
124
查看次数

REBOL3 - 不同分支之间有什么区别?

不同的Rebol 3分支之间有什么区别,特别是新的REN分支?

它们是运行的平台,功能集,代码组织,C标准合规性吗?

rebol red

7
推荐指数
1
解决办法
1164
查看次数

|红色编程语言| 如何从网页上获取Cookie?

我在Google和Stackoverflow上搜索了很多.我找不到如何从网页获取Cookies(或一般来说,HTTP标题),然后编辑并发送回去?

[我知道如何使用读/写进行POST/GET请求,但Cookie idk]

rebol rebol3 rebol2 red

7
推荐指数
1
解决办法
586
查看次数

如何使用Red cURL绑定?

我刚刚开始使用Red,我需要帮助才能使cURL绑定工作.

来自主要红灯网站的cURL链接将带您到这里

http://red.esperconsultancy.nl/Red-cURL/dir?ci=tip

但是只有一个使用Red/System的小例子,因此我不确定如何直接加载Red中的绑定.

我需要在Mac,Linux和Windows上使用它,所以我希望能够指出这些平台之间的差异.

curl red

6
推荐指数
1
解决办法
522
查看次数

如何使用Red或Rebol解析和翻译DSL

我试图看看我是否可以使用Red(或Rebol)来实现一个简单的DSL.我想将我的DSL编译为另一种语言的源代码,可能是Red或C#或两者 - 而不是直接解释和执行它.

DSL只有几个简单的语句,加上一个if/else语句.语句可以分为规则.规则将被转换为函数定义,每个语句都是目标语言中的等效语句.

Red/Rebol中的解析功能很棒,让我可以非常轻松地实现解析器 - 实际上它基本上只是语法本身的定义.

但是,我无法找到如何采取后续步骤的任何示例,特别是处理if语句并将其转换为其他源代码.翻译if语句似乎是一个很小的例子,但仍然有点棘手 - 因为在Red中有一个else意味着你需要将if改为其中一个,而不仅仅是一个额外的可选else.

传统上,在解析期间,我将构建一个抽象语法树,然后具有在AST上操作并生成新源代码的函数.我应该遵循同样的方法还是在Red中还有其他一些更惯用的方法?

我已经尝试在我的解析规则中使用collect/keep来返回嵌套块的块,这实际上形成了AST.另一种方法是将数据保存到表示不同语句等的特定对象中.

我仍然要处理收集/保留,以及何时创建新块以及将保留什么.我还想让我的解析器规则尽可能"干净",其中很少有其他代码交织在一起.所以我仍然不确定如何在解析规则的圆括号中添加红色代码.即使规则最终失败,过早添加代码也会导致Red代码被执行.添加代码太晚意味着代码可能无法按照您期望的顺序执行,尤其是在处理多级语句(如if,可能包含其他语句)时.

因此,特别是,如何将我的示例DSL转换为红色源代码的任何帮助将不胜感激.在Red或Rebol中实现这样的DSL的任何链接都会很棒!:)

这是我的解析规则: -

Red [
    Purpose: example rules for parsing a simple language
]

SimpleLanguageParser: make object! [
    Expr: [string! | integer! | block!]
    Data: ['Person.AGE | 'Person.INCOME]
    WriteMessageToLog: ['write 'message 'to 'log Expr]
    SetData: ['set 'data  Data '= Expr]
    IfStatement: ['if Expr [any Statement] opt ['else [any Statement]] 'endif]
    Statement: [WriteMessageToLog | SetData | IfStatement]

    Rule: [
        'rule word!
        [any Statement]
        'endrule
    ]

    AnySimpLeLanguage: [Rule | …
Run Code Online (Sandbox Code Playgroud)

dsl parsing rebol red

6
推荐指数
1
解决办法
788
查看次数

更简单的方法来重复`后退系列`

有时候,我倾向于next next a(反复地)去做一个特定的元素.当您需要2个或更少的遍历时,这很有效.但是,很快就会变得很麻烦.对于这个简单的情况,循环开销太大.

幸运的是at series pos,如果你知道这个位置,你可以做某些事情.

当谈到删除反向功能的冗余时,也就是说back,这不起作用.

最好是,我想做类似的事情at,但相对于系列中的当前位置

rebol series red

5
推荐指数
1
解决办法
65
查看次数

标签 统计

red ×10

rebol ×7

rebol2 ×2

compiler-optimization ×1

curl ×1

dsl ×1

lisp ×1

parsing ×1

rebol3 ×1

red-system ×1

scope ×1

series ×1

string ×1