2016-10-31 1 views
0

私はRascalサイトの文書を見つけました: http://tutor.rascal-mpl.org/Rascal/Libraries/lang/java/m3/AST/createAstFromFile/createAstFromFile.html しかし、私は正直なところ、これをどのように適用するのか分かりません。コードでこれをどのように適用するかの例を教えてもらえますか? 私はいくつかのことを試しましたが、修正子 "java"がないか、宣言されていない変数エラーが発生します。ファイルからラスカルASTを作成する方法

私は、現在で立ち往生しています:

ast = createAstFromFile(l,true,"1.8"); 

二つの追加の質問:どのような "宣言" は、ここで追加しますか?このコンテキストでcollectBindingsブール値はどういう意味ですか? (ドキュメントがラスカルのこの部分に関連することは明らかではありません)

追加情報:

rascal>import lang::java::jdt::m3::Core; 
ok 
rascal>createM3FromEclipseFile(|project://smallsql/src/smallsql/tools/CommandLine.java|); 
|plugin://rascal_eclipse/src/org/rascalmpl/eclipse/library/lang/java/jdt/Project.rsc|(276,127,<11,0>,<12,47>): IO("**smallsql does not exist**") 
     at somewhere plugin://rascal_eclipse/src/org/rascalmpl/eclipse/library/lang/java/jdt/Project.rsc|(276,127,<11,0>,<12,47>)) 
     at classPathForProject(|plugin://rascal_eclipse/src/org/rascalmpl/eclipse/library/lang/java/jdt/m3/Core.rsc|(1776,2,<54,55>,<54,57>)) 
     at $root$(|prompt:///|(0,82,<1,0>,<1,82>)) 


rascal>projects(); 
set[loc]: { 
    |project://smallsql|, 
    |project://MetricsTest|, 
    |project://Analysis|, 
    |project://hsqldb| 
} 

答えて

1

私は同様の運を持っていましたが、次の回避策を見つけた:

createAstsFromEclipseProject(|project://myProject|,true) 

このあなたのプロジェクトのためのすべてのastを与えるだろうし、あなたはそれから必要なものを選択することができます。

問題はコンパイラのパラメータ(クラスパスなど)の周りにあります。プロジェクトが与えられると、関数はプロジェクトの構成からメタ情報を導出し、正しく機能させることができます。

  • collectBindingsは、ファイルが解析されるだけでなく、名前のバインドと型のバインドも実行されることを意味します。これは便利ですが、時間がかかります。
  • Declarationは、何かを宣言する一般的なタイプのものです。
関連する問題