forth

    12熱度

    3回答

    每個Common Lisp程序員都知道宏是一個強大的工具。除此之外,Common Lisp宏已用於在Lisp 之上添加對象方向,而不更改語言規範;讀宏是另一種具有思維彎曲能力的構造。 允許元編程的另一個程序是Forth。用一個稍微不同的方式來使用'單詞'和'生成單詞'。 我想從使用兩種語言的人那裏知道,如果通用的lisp宏和前面的構造在寬度/力量上是可比的:你能用前者做些什麼,而後者則不能用後者來

    3熱度

    1回答

    以不同的方式,我如何定製解釋器? 例如,在SP-提出的解釋總是寫堆棧內容並始終在打印前進行CR/LF: 1 2 3 Ok (1 2 3) .s 1 2 3 Ok (1 2 3) 我想看看: 1 2 3 ok .s 1 2 3 ok 而且一般,我希望能夠定義新的數據輸入,如 4-3i {1,2,3,4,5} 解釋器應該然後按照我在擴展中定義的方式存儲數據。此外,在錯誤我想軟堆棧

    1熱度

    1回答

    我正在使用Gforth的解釋器指令(非ANS標準)控制結構,如手冊部分5.13.4 Interpreter Directives中所述。我基本上想使用循環詞來創建一個包含文字的動態大小的單詞。我想出了這個定義,例如: : foo [ 10 ] [FOR] 1 [NEXT] ; 然而[FOR]在此之後產生地址對齊異常(是的,我知道你不應該在第四,在所有使

    2熱度

    1回答

    我聽說你只需要在操作符前面放一個F,然後在末尾放一個(。)來計算浮點數然後顯示它。但它給了我這個答案: 2 3 F/ . :8: Floating-point stack underflow 2 3 >>>F/<<< . Backtrace: 我怎樣才能得到0.66666667 ok?

    2熱度

    2回答

    我正在做一個編程練習,我試圖用不同的方式做同樣的事情。 (我碰巧在Forth中添加了兩個3元素矢量)。在我的一個版本中,我使用返回堆棧來存儲臨時值(所以我使用了該功能),但除此之外,我正在考慮使用未分配的內存作爲臨時存儲。 我創建了兩個詞來訪問這個存儲: : front! here + ! ; : [email protected] here + @ ; 我試圖在我的實驗,似乎爲我所做的一切

    3熱度

    1回答

    爲什麼Skia包含Forth interpreter?

    3熱度

    1回答

    我想實現DSL來設置套接字對象上的端口號。 我想DSL遵循此API用於設置主機端口號: host: 8080 如果這是一個字符串操作(如host: localhost)我可以使用parse-word。儘管如此,這還不夠理想,因爲Forth非常善於分析數字,重新發明輪子是一件壞事。 Forth中是否有任何標準詞彙將輸入字符串中的第一項解析爲數字並將其推送到堆棧中?

    2熱度

    1回答

    有沒有辦法改變HERE指向什麼或者其他方式來確保我編譯的下一個定義最終會在某個特定位置?或者,我可以將定義複製到別的地方嗎?理想情況下,我希望在ANS Forth中有一個解決方案,但Gforth特有的東西足夠好。

    6熱度

    1回答

    對於減去各種長度的無符號整數的算法,我有一個神祕的錯誤。它幾乎適用於每一對數字,但是如果n不小於單元中的位數,那麼(2^n +1)-(2^n - 1) <> 2。我不明白爲什麼算法不起作用。 這些數字以「小數」系統(基數= 2 ^位)的數組存儲,最不顯着的單元格數爲低。在AD1數組是從陣列在AD2減去兩個相同尺寸LEN的,結果應存放在AD2: false borrow ! len 0 do i

    0熱度

    1回答

    我正在嘗試編寫一個Forth單詞,它將刪除堆棧中的所有項目。我正在使用一個非常笨的方法,通過運行帶有'drop'的無限循環並在'drop'失敗時捕獲錯誤,因爲堆棧是空的。 我的話被定義爲這樣的: (Infinite drop loop) : droploop begin drop true while drop repeat ; (Experimental catch with a sing