これは、Rascal の内部で何が起こっているかを理解するための、より単純な個人的な試みです。(まだサポートされていない場合)より良い解決策が必要です。コードは次のとおりです。
fileLoad = |home:///PHPAnalysis/systems/ApilTestScripts/simple1.php|;
fileAST=loadPHPFile(fileLoad,true,false);
//assign a simple id to each node
public map[value,int] assignID12(node N)
{
myID=();
visit(N)
{
case node M:
{
name=getName(M);
myID[name] =999;
}
}
return myID;
}
ids=assignID12(fileAST);
私にくれます
|stdin:///|(92,4,<1,92>,<1,96>): Expected str, but got value
loadPHPFile は list[Stmt] タイプのノードを返します。ここで、各 Stmt は、プログラム (私の場合は PHP) で発生する可能性のある多くのタイプのステートメントの 1 つです。なぜこれを行うのかを説明せずに、上記のコードが機能しないのはなぜですか? 非常に単純な例がオンラインドキュメントで解決されているため、特にイライラします. 参照: http://tutor.rascal-mpl.org/Recipes/Basic/Basic.html#/Recipes/Common/CountConstructors/CountConstructors.html