chochain/eForth.js

使用JS也是本人非常接受的,但也得接受JS的很多坑;个人看法;关于局部变量;

Opened this issue · 4 comments

以截至23-3-6的版本为例(源码中好像版本信息),比如:
2+ 3*
这两个本是未定义的非法词,但是,会正常输入2和3
以本人自己的尝试体会看,搞不好还是得先处理好诸如0.1+0.2!=0.3、所谓深拷贝浅拷贝之类的问题,根据这个想法,那么,提前使用xe-utils.js、jQuery及其jQueryUi,包括codemirror、decimal.js在内的第三方库。所以,jeforth400其实还是很好的 :-)
其实还有latex.js也很值得考虑,还有本方案计划中的3D处理等。全部提前综合考虑的话,或许最初的框架预设都会发生改变。

另外,很期待本方案下,有没有考虑局部变量的计划?这个问题很是纠结,我自己拿不出手的尝试实在勉强,时至今日,才有勉强可以接受的设想。留待下次全部推倒重构时再尝试,期待这个话题引起大家的讨论。

3、比如我定义一个_AA的自定义新词,虽然可以正常执行,但see不出来的.而内核已经有的_dotstr
: _dotstr 1 2 + ;
能够被正常改编,只能到执行的时候才提示找不到.
另外:
ok
SEE HEX
hex ok
: HEX 1 2 + ;
ok
HEX
ok
.S
[]
ok
SEE HEX
HEX [
_dolit =[1] _dolit =[2] + ] ok

以上,一是测试了大小写混杂的情况;二是测试对既有系统原词改编的情况

konggujushi兄,
感謝您花時間試用首版的eForth.js,您不吝指正的幾個bugs末學已試圖改善如下:

  1. 0.1 0.2 + => 0.3 Javascript顯示可經由toLocaleString的options調整
  2. 3* => 3*? outer interpreter中加了一段RegExp碼檢視是否為數目(包含hex與其它base radix)。
  3. CodeMirror, tooltip, ... 已附加Fancy版安裝說明。
  4. 局部變量(local var)一如您所提,其正反皆有爭議,且丁陳老師原版未採用,目前尚無計劃補入。
  5. : _dotstr 123 ; => reDef? 包含內建字,重覆定義時會有提示。
  6. see hex => [ c=>_base=16 ] ok 內建字直接顯示其Javascript原碼。
  7. : xx 123 ; 0 ucase! : XX 456 ; => ok 由ucase變數控制大小寫是否視為相同。

您的回饋使eForth.js有機會不斷改善,請繼續指教。多謝!

chochain老师您别这么客气,诚惶诚恐啊。
http://localhost:8000/src/eforth8.html出现:
打开本地测试文件ctrl+enter后貌似没有执行:
本地文件ceshi.f内容:

: add2100 0 100 for i + next .s ;
add2100 

eForth 8.0 - Forth in Javascript -ceshi.f
ok
.s
[]
ok
但是在单命令行下达: add2100 回车后:
add2100
[5050]
ok
同时注意到:Dictionary列表下有[add2100]


几分钟后又试了一次,这次干脆毫无反应了。连add2100都没响应了。

konggujushi兄,
多謝再次指教,eforth8.html尚屬實驗品其功能仍認定中所以未加說明。
左側標列小圖騰各代表:

  • home: clear text
  • file+: create new file
  • file: load from local file
  • file<-: save updated file
  • boot: forget all word added, clear text 去除所有已定義的words並清除映幕
  • down-arrow: run selected/high-lighted text (same as Ctrl-Return) 只執行一段被選的代碼
  • run: run entire file 執行全檔的代碼

至於為何几分钟后无反应就有點兒費解了!可能Python3 Webserver timeout了嗎?Reload page看能否改善或重覆!