3

私は、phpにパーサーとレクサージェネレーターを使用する必要がある学術的な仕事をしています。インターネットで検索したところ、これが見つかりまし

問題は、文法とプレックスファイルを作成することです。例えば:

<?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_]+)/?@

このプレックス ファイルを使用してレクサーを生成し、次のようにフィードするとします。

234lksdf lskdjf324 kl234jd

トークンストリームは次のようになります。

token: variable
value: 234lksdf 

token: variable
value: lskdjf324 

token: variable
value: kl234jd
于 2012-10-17T10:15:43.627 に答える