2012-05-11 16 views

答えて

-2

私は、数学と解釈解析を混在させていると思います。

構造とデータを見て、質問の背後にある根拠を判断してください。

+0

「構造とデータを見てください」また、私は質問を改訂しました、うまくいけば、これはもっと簡単に答えることができますか? – RelaXNow

+0

私は上記のJazzのコメントに同意します。あなたの質問を精緻化して、SOの仕組みに沿ったものにしてください。 – infrared411

1

あなたがそれを見ていない場合に備えて私がこれを言いたいと思ったのは、これが純粋な学習のためでなければ、あなたに多くの時間を節約するかもしれません。

ソースファイルをトークンに解析するPHP Tokenizer Functionsをチェックしてください。次に、トークンを踏み越えてソースを調べることができます。

この例では、トークンにソースファイルを読み込み、そして取り除かコメントでそれを再生するPHP.netから取られました:

<?php 
/* 
* T_ML_COMMENT does not exist in PHP 5. 
* The following three lines define it in order to 
* preserve backwards compatibility. 
* 
* The next two lines define the PHP 5 only T_DOC_COMMENT, 
* which we will mask as T_ML_COMMENT for PHP 4. 
*/ 
if (!defined('T_ML_COMMENT')) { 
    define('T_ML_COMMENT', T_COMMENT); 
} else { 
    define('T_DOC_COMMENT', T_ML_COMMENT); 
} 

$source = file_get_contents('example.php'); 
$tokens = token_get_all($source); 

foreach ($tokens as $token) { 
    if (is_string($token)) { 
     // simple 1-character token 
     echo $token; 
    } else { 
     // token array 
     list($id, $text) = $token; 

     switch ($id) { 
      case T_COMMENT: 
      case T_ML_COMMENT: // we've defined this 
      case T_DOC_COMMENT: // and this 
       // no action on comments 
       break; 

      default: 
       // anything else -> output "as is" 
       echo $text; 
       break; 
     } 
    } 
} 
?> 
+0

ありがとう!もっと学習プロジェクトであり、PHPを使ったトークン化には、PHPバージョンのトークン(それよりも小さい、より小さい)用に書かれたPHPコードをトークン化できないという欠点があります。 PHP 5.2)。 – RelaXNow

2

あなたは、PHPのためのパーサを構築している場合は、を見てください。既存のもの:

https://github.com/nikic/PHP-Parser - これはPHPで書かれており、スタンドアロンのPHPパーサーです。

https://github.com/svalaskevicius/ionPulse/tree/master/ionParticles/ionPhp/phpParser - この1つは<で機能テストを持つC++で書かれたionPulse IDE用のphp-サポートプラグイン、の一部である...>/ionTests/phpparsertest.h [まだ進行中の作業]

関連する問題