Forth 采用Create,Does>定义新的词(word)& 延迟词技术
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;}
// 定义一个 双字长常数 : DCONSTANT CREATE , , DOES> DUP 2 + @ SWAP @ ; |
123.456 DCONSTANT CON1 |
运行时间行为:
: DEFER ( - ) (建立一个延迟词) CREATE (建立延迟词首部) 2 ALLOT (参数域为一个单元) DOES> @ EXECUTE ; (运行时间代码) |
当定义词 DEFER 运行时,在词典中建立一个词身位一个单元的延迟词,并规定延迟词的运行时间代码;当延迟词执行时,把其 pfa 单元内的地址交给 EXECUTE 执行。 |
: WARNING ." Uninitialized" ; : DEFER CREATE ['] WARNING , DOES> @ EXECUTE ; // 这样定义防止DEFER定义词未赋值么有执行代码无法继续执行下去 |
STATE ( - addr) 具有编译状态的变量。STATE 之值非 0 ,表明系统处于编译状态;为零,则表明系统处于解释(执行)状态。 |
: (IS) ( cfa - ) ( IS的执行时间行为) R@ @ >BODY ! (得到目标地址) R> 2+ >R ; ( 调整 IP ) |
: IS ( cfa - ) 把跟着的词身(pfa)置为参数栈顶的数值。若在冒号定义内使用,则IS作用于在冒号定义中跟着它的词。 STATE @ IF COMPILE (IS) 系统处于编译状态则做此工作。 ELSE ' >BODY ! 系统处于解释状态做此工作。 THEN ; IMMEDIATE 由于 IS 在冒号定义内部也要能使用,所以它必须是立即词。 |
Forth 采用Create,Does>定义新的词(word)& 延迟词技术的更多相关文章
- CREATE RULE - 定义一个新的重写规则
SYNOPSIS CREATE [ OR REPLACE ] RULE name AS ON event TO table [ WHERE condition ] DO [ INSTEAD ] { N ...
- CREATE OPERATOR - 定义一个新的操作符
SYNOPSIS CREATE OPERATOR name ( PROCEDURE = funcname [, LEFTARG = lefttype ] [, RIGHTARG = righttype ...
- CREATE FUNCTION - 定义一个新函数
SYNOPSIS CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] ) RETURNS rettype { LANGUAGE lang ...
- CREATE AGGREGATE - 定义一个新的聚集函数
SYNOPSIS CREATE AGGREGATE name ( BASETYPE = input_data_type, SFUNC = sfunc, STYPE = state_data_type ...
- CREATE VIEW - 定义一个视图
SYNOPSIS CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ] AS query DESCRIPTION 描述 CREATE ...
- CREATE CONVERSION - 定义一个用户定义的码制转换
SYNOPSIS CREATE [DEFAULT] CONVERSION name FOR source_encoding TO dest_encoding FROM funcname DESCRIP ...
- CREATE CAST - 定义一个用户定义的转换
SYNOPSIS CREATE CAST (sourcetype AS targettype) WITH FUNCTION funcname (argtype) [ AS ASSIGNMENT | A ...
- php大力力 [023节]CREATE TABLE创建新表sql写字段备注(2015-08-27)
2015-08-27 php大力力023.CREATE TABLE创建新表sql写字段备注 http://www.cnblogs.com/dalitongxue/p/4762182.html 参考: ...
- Vue Create 创建一个新项目 命令行创建和视图创建
Vue Create 创建一个新项目 命令行创建和视图创建 开始之前 你可以先 >>:cd desktop[将安装目录切换到桌面] >>:vue -V :Vue CLI 3.0 ...
随机推荐
- XML DOM 节点类型(Node Types)
节点类型 下面的表格列出了不同的 W3C 节点类型,以及它们可拥有的子元素: 节点类型 描述 子元素 Document 表示整个文档(DOM 树的根节点) Element (max. one) Pro ...
- python_json序列化和反序列化
序列化 import json dic = {'} print(json.dumps(dic)) 反序列化;json.loads() dic = {'} print(json.dumps(dic)) ...
- fiddler学习总结--手机端(APP/微信小程序)抓包
步骤一.手机和电脑要在同一个局域网中 步骤二.完成fiddler的基本配置,与web端抓包一样: TOOLS-->options-->connections-->1.设置端口:2.勾 ...
- web前端学习历程--跨域问题
一.同源策略 一个页面的ajax只能获取这个页面相同源(协议.域名.端口号都必须相同)的数据. 二.jsonp方法 1.json和jsonp JSON(JavaScript Object Notati ...
- vim中的分屏操作
title: vim中的分屏操作 date: 2017-11-14 21:45:11 tags: vim categories: 开发工具 在命令行中: vim -On file1 file2 # O ...
- 一定要知道的,那些Linux操作命令
一定要知道的,那些Linux基本操作命令(一) 目录 1.文件和目录操作命令 2.用户和用户组操作命令 3.vim编辑器操作命令 4.打包和解压操作命令 5.系统操作命令 为什么要学习linux? 1 ...
- Linux分区、文件系统
Linux分区类型: ◆主分区:总共最多只能分四个 ◆扩展分区:只能有一个,也算作主分区的一种,也就是 说主分区不能存储数据和格式化,必须再划分为逻辑分区才能使用. ◆逻辑分区:逻辑分区是在扩展分区中 ...
- 5、Spring-Kafka3
3. Introduction This first part of the reference documentation is a high-level overview of Spring fo ...
- Codeforces Round #466 (Div. 2) -A. Points on the line
2018-02-25 http://codeforces.com/contest/940/problem/A A. Points on the line time limit per test 1 s ...
- 关于vim的折叠
参考: http://www.cnblogs.com/fakis/archive/2011/04/14/2016213.html 和 这篇文章: https://blog.csdn.net/benda ...