String Rebol/RED解析。是否将ASCII码从解析字符串保存到变量?

String Rebol/RED解析。是否将ASCII码从解析字符串保存到变量?,string,parsing,ascii,rebol,red,String,Parsing,Ascii,Rebol,Red,前几天,我无意中接触到了红色语言,并(或多或少地)花了最后24小时“学习”它。我用尽了我的谷歌搜索技能,试图为一个简单的问题找到解决方案,而这个问题恰恰回避了我的技能和逻辑,所以希望这里有人能引导我走向正义之路 正如标题所示,我试图解析一个简单字符串(实际上是任意随机文本字符串),获取单个字符(acter),然后尝试将它们保存到一个变量中。(另一个字符串/数组/任何类型) 我所能做的就是使用以下代码: alpha: charset [#"a" - #"z"] testString: "this

前几天,我无意中接触到了红色语言,并(或多或少地)花了最后24小时“学习”它。我用尽了我的谷歌搜索技能,试图为一个简单的问题找到解决方案,而这个问题恰恰回避了我的技能和逻辑,所以希望这里有人能引导我走向正义之路

正如标题所示,我试图解析一个简单字符串(实际上是任意随机文本字符串),获取单个字符(acter),然后尝试将它们保存到一个变量中。(另一个字符串/数组/任何类型)

我所能做的就是使用以下代码:

alpha: charset [#"a" - #"z"]
testString: "this is just random rambling to test parsing!"
作为(尝试)解析时的先决条件和类似内容:

将(第一个字母)ascii代码保存到text2,并多次运行脚本,在一行中正确添加(相同的第一个字母)ascii代码:

控制台输出

>> probe parse teststring [copy text to alpha (append text2 to-integer(to-char text)) to end]
true
== true
>> probe text2
"34"
== "34"
>> probe parse teststring [copy text to alpha (append text2 to-integer(to-char text)) to end]
true
== true
>> probe text2
"3434"
== "3434"
显然,我的解析并不是真正地“循环”字符串的各个字符,或者在执行时没有正确地保存它们。也许我的解析真的把整个字符串从头到尾,然后我试着把它转换成ASCII码,或者这里发生了什么事情


任何帮助都将不胜感激,因为在解决这个难题和理解解析如何在RED中真正工作之前,我不可能推进我的RED学习。

我不确定,我是否理解您的问题和您想要实现的目标,但是如果您正在寻找字符的所有ascii表示,您可以使用它

asciis: []
parse teststring [some [set a  alpha (append asciis to-integer a )| skip]]
== true
>> asciis
== [116 104 105 115 105 115 106 117 115 116 114 97 110 100 111 109 114 97 109 98 108 105 110 103 116 111 116 101 115 116 112 97 114 115 105 110 103]
some是负责循环的可用词之一

在你的审判中有一些问题。在进行任何转换之前,它会给出一些错误text2可能是以前声明的到alpha将在您尝试复制到第一个alpha字符时给出一个空字符串。请记住,上升至目标,但不包括目标。不能将空字符串转换为字符。如果我们假设到现在为止没有发生错误,那么您仍然在字符串的前面,并且直接进入字符串的末尾

一些。请参阅关于循环的迭代


您可以使用解析跟踪调试解析,也可以在您想要调查的规则部分后放置一个简单的(探测文本)

谢谢,这正是我想要实现的。你能解释一下我的代码中发生了什么,为什么它只给出了第一个字符('s ASCII码)?它是否在解析条件之间返回整个字符串,然后“to char and to integer”将其转换为单个字符及其ascii码?不喜欢收集
collect[parse[…(keep to integer!a)…]
(或者如果只有红色
parse[collect[some[…keep(to integer!a)…]]
)使用
parse trace
进行调试我认为您的先决条件测试代码中缺少一些要复制的内容,比如
text2:
非常正确,text2确实没有声明。这似乎是一个草率的粘贴,很抱歉。欢迎来到红色语言!几天前,我遇到了类似的问题:
asciis: []
parse teststring [some [set a  alpha (append asciis to-integer a )| skip]]
== true
>> asciis
== [116 104 105 115 105 115 106 117 115 116 114 97 110 100 111 109 114 97 109 98 108 105 110 103 116 111 116 101 115 116 112 97 114 115 105 110 103]