Fift 深入解析
Fift 是一种高级的基于栈的语言,用于本地操作cell和其他 TVM 原语,主要用于将 TVM 汇编代码转换为合约代码的cell包。
警告
本节描述了与 TON 特有功能在非常低层级的交互。 需要对栈语言基础有深入理解。
简单算术
你可以使用 Fift 解释器作为计算器,以逆波兰表示法(reverse Polish notation)编写表达式。
6 17 17 * * 289 + .
2023 ok
标准输出
27 emit ."[30;1mgrey text" 27 emit ."[37m"
grey text ok
emit
从栈顶取出数字,并将指定代码的 Unicode 字符打印到 stdout。
."..."
打印常量字符串。
定义函数(Fift words)
定义word的主要方式是将其效果括在大括号中,然后写 :
和word名称。
{ minmax drop } : min
{ minmax nip } : max
Fift.fif
不过,还有几个定义word的方法,不仅仅是 :
。它们的不同之处在于,用其中一些定义的word是active(在大括号内工作),而有些是prefix(不需要在它们之后有空格字符):
{ bl word 1 2 ' (create) } "::" 1 (create)
{ bl word 0 2 ' (create) } :: :
{ bl word 2 2 ' (create) } :: :_
{ bl word 3 2 ' (create) } :: ::_
{ bl word 0 (create) } : create
Fift.fif