gpt4 book ai didi

forth - 与 "parse-word"类似的单词,但用于将整数压入堆栈

转载 作者:行者123 更新时间:2023-12-02 05:01:04 26 4
gpt4 key购买 nike

我想实现 DSL用于在套接字对象上设置端口号。

我希望 DSL 遵循此 API 来设置主机端口号:

host: 8080

如果这是一个字符串操作(例如host: localhost),我可以使用parse-word。但这并不理想,因为 Forth 非常擅长解析数字,而重新发明轮子是一件坏事。

Forth 中是否有任何标准单词可以获取输入字符串中的第一项,将其解析为数字并将其压入堆栈?

最佳答案

>NUMBER 是一个 ANS 单词(在 CORE 中),可以将字符串转换为数字,但使用起来很麻烦。您的 Forth 可能有更灵活的变体。您的 Forth 可能还支持类似 #16 $10 %10000 的语法,无论 BASE 是什么,它们的计算结果都为 16 。因此,一种方法可以做到这一点:

: parse-num ( "number" -- n | d | r )  parse-word evaluate ;

或者使用 >NUMBER,并且仅返回单个单元格数字:

: parse-num ( "number" -- n )
0. parse-word >number ( d c-addr u )
abort" not a number" drop
abort" double received where single-cell number expected" ;

如果返回的字符串不是空字符串(如果 PARSE-WORD 的整个输出都转换为数字,或者如果 double 的高位不是空字符串),则会中止0,如果输入单元格无法表示的数字,就会出现这种情况。 (注意。 >NUMBER 也不处理双数语法。它将在点处停止解析 1.。它甚至不处理负数。)

关于forth - 与 "parse-word"类似的单词,但用于将整数压入堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34735004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com