Stata软件tokenize和gettoken命令的用法

2021年10月28日09:40:24Stata软件tokenize和gettoken命令的用法已关闭评论

Stata软件tokenize和gettoken命令的用法

有时可能想要对宏进行分解,而只获取所需的部分,可以通过tokenize或gettoken命令来实现。相比起语法(Syntax)命令,这种解析方式也被称为低水平语法分析。下面对这两个命令分别进行介绍。

(1)tokenize

通过tokenize将宏分解成几部分的基本命令为:

     tokenize [[']"] [string] ["[']] [, parse("pchars")]

其中,string代表要分解的宏的名称,选项parse("pchars")表示用pchars作为各个部分的分隔符,默认为空格。tokenize命令会将指定的宏分解为几个记号(Token),并依次将各部分保存在局部宏`1'、`2'中,以此类推。

(2)gettoken

gettoken命令提供了解析输入参数的另一途径,基本命令格式为:

     gettoken emname1 [emname2] : emname3 [, parse("pchars") quotes qed(lmacname)
     match(lmacname) bind]

该命令会获取宏emname3分隔符之前的记号(Token),并将其存储在宏emname1中。如果同时设定了宏emname2,Stata就会将剩下的记号存储在宏emname2中。宏emname1和emname3,或者宏emname2和emname3,可以有相同的名字。

宏emname可以有如下3种形式:

①macroname局部宏

②(local) macroname局部宏

③(global) macroname全局宏

对于其他的选项,quotes表示宏emname1内容的外引号被保留,该选项不影响宏emname2,因为它总是保留其内容的外引号。qed(lmacname)表示生成一个局部宏lmacname,若返回的记号(Token)在初始字符串中为引号所包围,则其值为1,否则为0。match(lmacname)表示,在决定记号时,括号会被匹配;此外,在记号被存储至宏emname1之前,括号会被移除。而如果有括号,局部宏lmacname的值为“(”,否则,就是空串。bind表示小括号“()”或中括号“[]”中的内容会被当作一个记号,即便分隔符不是括号。

通常情况下,gettoken命令的运用方式是这样的:

     gettoken emname1 : 0 [, options]

或:

     gettoken emname1 0 : 0 [, options]

这里,宏`0'包含用户所输入的内容。第1种方式会将取出的第一个token保存到宏emname1中;而第2种方式将剩下的部分再保存到宏`0'中。

  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。