3

我正在做一项学术工作,我需要为 php 使用解析器和词法分析器生成器。我在互联网上搜索,我发现了这个

问题是创建语法和 plex 文件。例如:

<?php
class blah {
/*!lex2php
%input $this->data
%counter $this->N
%token $this->token
%value $this->value
%line $this->line
variable = @/?:([a-zA-Z0-9_]+)/?@
*/
/*!lex2php
variable {$a = 1;}
*/
}
?>

有人可以解释一下那个代码吗?

4

1 回答 1

2

第一个注释块用于声明。所有的 % 声明主要是供内部使用,在这个阶段并不是很相关。
不过这variable = @/?:([a-zA-Z0-9_]+)/?@很有趣。它定义了一个非终结符号 variable,由正则表达式定义@/?:([a-zA-Z0-9_]+)/?@

如果您使用此 plex 文件生成您的词法分析器并提供如下内容:

234lksdf lskdjf324 kl234jd

令牌流如下:

token: variable
value: 234lksdf 

token: variable
value: lskdjf324 

token: variable
value: kl234jd
于 2012-10-17T10:15:43.627 回答