Forth 词典和词汇
body, table{font-family: 微软雅黑; font-size: 13.5pt}
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;}
| VARIABLE DP 用户变量,其值为词典上部第一个可被使用的内存地址。 |
| : HERE ( - addr ) DP @ ; 返回词典上方的地址,它告诉编译程序待用的自由存贮区域始于何处 |
| : ALLOT ( n - ) DP +! ; 使 DP 之值增加 n,也即为了某种目的给词典的区域增加 n 个字节。 |
| : , ( n - ) HERE ! 2 ALLOT ; 把参数堆栈顶上的数 n 送入到词典上部的下一个可用单元,使 DP 之值增加 2 。(把 n 编入词典) |
| : C, ( byte - ) HERE C! 1 ALLOT ; |
| INTERPRET -> -FIND -> (FIND) : INTERPRET ( - ) 逐个顺序处理从输入流中分离出来的字符串;或是执行或是编译由当时系统的状态决定。 BEGIN 开始解释程序循环 -FIND ( - pfa b tf , or ff ) 把从输入流中检测到的下一个字符串送到 HERE 处。首先搜索 context 词汇,继之搜索 current 词汇,核实在词典中是否有与在 HERE 处的字符串同名的定义。若有,被找到之词的参数域地址 pfa,长度字节 b 及为真标志 tf 留在堆栈上;若没有,堆栈上仅留下为假标志 ff 。 AGAIN ; : -FIND ( - pfa b tf , or ff ) BL WORD 把以空格为终止符的下一个字符串从输入流中分离出来,并将它送到词典的顶部(HERE 处) HERE 有待去词典中发现的字符串的地址 CONTEXT @ @ 取出在 context 词汇中最后一个(最新)一个被定义词的名字域地址 nfa ,词典搜索行将开始。 (FIND) (addr1 addr2 - pfa b tf , or ff) CODE 词,承担具体搜索工作。addr1是有待被搜索的字符串的地址,addr2是被搜索区的起始地址。(FIND) 从堆栈顶上给出的地址出发搜索词典,以求发现和堆栈上的第二个地址(addr1)处的字符串相符合的名字。若找到,返回相符定义的 pfa , 长度字节以及为真标志。若未找到则仅返回一个假标志。 DUP 0= 检查栈顶标志。 IF 在 context 词汇中未找到同名的定义 DROP 丢弃假标志 HERE 重新取得字符串的地址。 CURRENT @ @ 取出在 current 词汇中最后一个被定义的词的 nfa。 (FIND) 搜索 current 词汇。 ENDIF ; |
Forth 词典和词汇的更多相关文章
- C++第15周(春)项目3 - OOP版电子词典(一)
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759.内有完整教学方案及资源链接 [项目3-OOP版电子词典](本程序中须要的相 ...
- 第14周 项目三-OOP版电子词典
做一个简单的电子词典.在文件dictionary.txt中,保存的是英汉对比的一个词典,词汇量近8000个,英文.中文释义与词性间用'\t'隔开. (1)编程序,由用户输入英文词.显示词性和中文释义. ...
- wxWidgets+wxSmith版电子词典
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目3-OOP版电子词典](本程序须要的相关 ...
- C++第15周(春)项目3 - OOP版电子词典(二)
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目3-OOP版电子词典](本程序须要的相关 ...
- OOP版电子词典
输入代码: /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名:sum123.cpp * 作 者:林海云 * 完毕日期:20 ...
- 第十四周(OOP版电子词典)
/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名:第十四周(OOP版电子词典) *作者:王忠 *完毕日期:2015.6.10 *版本 ...
- 侣行APP
本次要做的是团队共同完成一个项目.由队长组织,全体队员一起讨论分析并完成一款APP的需求调研,分析等工作. 1.团队介绍 队长:杨晓帅 队员 ...
- 看美剧英文字幕学英语的利器——“深蓝英文字幕助手”简介
我从初中开始基本上就是一个英语很烂的人,数理化再好有什么用,工作了,结果发现数理化都没啥用,最有用的还是当年学的最烂的英语.于是在2011年年底开始了学习英语的课程,在学习的过程中,外教经常会放英剧美 ...
- 2013级C++第15周(春)项目——输入输出流及文件文件操作
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759.内有完整教学方案及资源链接 本周程序阅读及程序调试中须要的文件,请到htt ...
随机推荐
- centos7中安装、配置jdk(转载)
参考命令:http://www.jb51.net/os/RedHat/73016.html来进行安装 安装说明 系统环境:centos7安装方式:rpm安装软件:jdk-8u25-linux-x64. ...
- Centos 忘记root密码怎么办?
1 - 在启动grub菜单,选择编辑选项启动 2 - 按键盘e键,来进入编辑界面 3 - 找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh 4 - 现在按下 Co ...
- Pycharm激活方法步骤
Pycharm激活步骤 第一步:找到hosts文件 先按下键盘的win + r ,然后复制c:\windows\system32\drivers\etc粘贴到对话框回车打开文件管理器 第二步:修改ho ...
- 为archlinux终端ls不同类型文件设置不同显示颜色
title: 为archlinux终端ls不同类型文件设置不同显示颜色 date: 2017-11-13 20:53:55 tags: linux categories: linux archlinu ...
- CentOS 7 使用SVN+Apache搭建版本控制服务器
svn简介 Subversion是一个免费/开源的版本控制系统, Subversion 可以跨越时间地对文件和目录, 以及它们的修改进行管理. 这就允许你恢复 数据的旧版本, 或检查数据的修改历史. ...
- html5 javascript 事件练习3键盘控制练习
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- springboot之jar包部署步骤
eclipse中: 1.单击整个项目 run as - maven clean - maven install 2.找到项目所在的路径 找到所有的jar包 3.把jar包放到linux对应的文件夹 l ...
- window 系统虚拟机安装mac系统
前言: 我们用的是虚拟机,物理机安装一是复杂,二是兼容性实在太差,所以不推荐使用,除非你的电脑配置不够.这篇文章很长,如果想安装的话建议收藏,否则你有可能记不住步骤,我尽量缩减步骤,所以如果你想安装黑 ...
- springboot项目打成war包
在某种情况下,比如..........之下,我们不得不,将springboot打成war包 1.在pom.xml文件中修改 <packaging>war</packaging> ...
- GlitchBot
问题 F: GlitchBot 时间限制: 1 Sec 内存限制: 128 MB 提交: 230 解决: 113 [提交] [状态] [命题人:admin] 题目描述 One of our del ...