欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

PHP词法解析源码分析之引号及其内容

程序员文章站 2022-06-14 10:51:25
...

在 词法 解析 的代码中, 引号 里面 内容 的 解析 就占了所有代码的一半以上,可见其情况是比较多的,这次就来简单 分析 一下。由于lex_scan开头的一段整个函数都用得到,所以这里就再贴一下: int lex _scan(zval *zendlval TSRMLS_ DC){//设置当前token的

词法解析的代码中,引号里面内容解析就占了所有代码的一半以上,可见其情况是比较多的,这次就来简单分析一下。由于lex_scan开头的一段整个函数都用得到,所以这里就再贴一下:

int lex_scan(zval *zendlval TSRMLS_DC)
{
//设置当前token的首位置为当前位置
restart:
    SCNG(yy_text) = YYCURSOR;

yymore_restart:
//这段注释定义了各个类型的正则表达式匹配,在词法解析程序(如bison、re2c等)程序将本文件转化为c代码时会用到
/*!re2c
re2c:yyfill:check = 0;
LNUM    [0-9]+
DNUM    ([0-9]*"."[0-9]+)|([0-9]+"."[0-9]*)
EXPONENT_DNUM    (({LNUM}|{DNUM})[eE][+-]?{LNUM})
HNUM    "0x"[0-9a-fA-F]+
BNUM    "0b"[01]+
LABEL    [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
WHITESPACE [ \n\r\t]+
TABS_AND_SPACES [ \t]*
TOKENS [;:,.\[\]()|^&+-/*=%!~$?@]
ANY_CHAR [^]
NEWLINE ("\r"|"\n"|"\r\n")

/* compute yyleng before each rule */
!*>