body, table{font-family: 微软雅黑}
table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;}
th{border: 1px solid gray; padding: 4px; background-color: #DDD;}
td{border: 1px solid gray; padding: 4px;}
tr:nth-child(2n){background-color: #f8f8f8;}
利用磁盘存贮源文本再编译进词典
重复定义同一个名字的词,都会编译进词典,但是文本解释程序总是从最新定义所处的词典尾部开始搜索,所以它最先发现的词就是你最后定义的词,解释程序指给 EXEXUTE 的就是最后定义的那个词。
证明:
//FORGET DEMO 表示删除DEMO这个词;例子两次定义了DEMO,最后执行的时候是执行的最后一次的定义,但是删除DEMO是删除的最后一次定义的,前一次定义的还在
当你从终端键入定义的词时,其源文本不能保存;退出就没了;从终端键入的定义仅仅是它的编译形式被保存在词典中。不能对定义好的词作修改。如果要修改,就要使用编辑程序。编辑程序可以在我们需要的时候保留和修改源文本。
编辑程序是把源文本保存在磁盘上。
FORTH 使用磁盘
FORTH 的编译程序是把整个词典都编译进计算机内存,以便能迅速访问各个定义。FORTH把词典的源文本存贮在磁盘上。 这样可以从键盘把源文本传送给解释程序,又可以先把源文本存贮在磁盘上,然后再从磁盘读出并传送给解释程序。
在终端想看哪块屏幕只要键入 屏幕号 和 LIST 命令 1 LIST ; 要加载执行快的内容使用词 LOAD,键入命令: 1 LOAD
LOAD 命令把你输入的块号的内容发送给输入流,然后由文本解释程序读取。文本解释程序不会考虑文本来自哪里,只有识别出“:”就将定义进行编译。
Screen 里面的 ( 也是一个词 告诉文本解释程序跳过其后的文本,但是 ) 不是一个词,只是 ( 寻找的字符,称为终止符。
//编排块的习惯做法:
编辑文本并把它存入磁盘
编辑源文本首先要找一空块并显示它,当显示的是空块的话,16行都没有内容,最后的 OK 表示文本解释程序已经执行完显示该块的显示命令。 通过显示某块,同时也就把该块选为我要编辑的快了。
1、先找一块空的快; 词 LIST ( n - - )
2、进入编辑状态; 词 EDIT ( n - - )
3、编辑完后 ESC 退出保存。
4、用的到的词 F9 清除整个快内容同时光标放在第一行开始位置,要运行这个快的内容先加载该快 LOAD ( n - - )
180 LIST | EDIT E 表示编辑 180 表示待编辑的快 |
//直接按esc键退出保存 ,再次 esc 退出到终端 | 180 LOAD 加载刚才编辑的块 下面的快捷命令是要按f1 f2 f3 …… |
上面的例子也可以实现加载16屏面,然后直接 180 EDIT
16 LOAD 180 EDIT 16 LOAD命令是从FORTH屏面存储文件中载入和编译小屏面编辑程序 |
无意中发现的命令(非小屏面编辑状态) | ^ R 向前进入下一个屏面 ^ C 向后进入下一屏面 ^ V 进入插入模式,在光标前插入,字符后移 |