Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
konggujushi opened this issue Mar 6, 2023 · 4 comments
Assignees

Comments

@konggujushi
Copy link

以截至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处理等。全部提前综合考虑的话,或许最初的框架预设都会发生改变。

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

@konggujushi
Copy link
Author

konggujushi commented Mar 6, 2023

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

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

@chochain
Copy link
Owner

chochain commented Mar 8, 2023

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 chochain self-assigned this Mar 8, 2023
@konggujushi
Copy link
Author

konggujushi commented Mar 9, 2023

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都没响应了。

@chochain
Copy link
Owner

chochain commented Mar 10, 2023

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看能否改善或重覆!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants