0
は、私は、テキストは大文字で始まっていない場合は(Eclipseの行の下に赤)の誤差を与える検証が定義されてhttp://www.davehofmann.de/?p=101のXtextスタンドアロンと検証ファイルを解析するスタンドアロンのプログラムを構築
の最初のオプションを使用しました。
スタンドアロンパーサは、検証に合格しなかった入力ファイルのエラーを出力しません。スタンドアロンの実装にも検証を検証するにはどうすればよいですか?
アップデート1
が含まれて文法を解析するために使用される分類:
class XtextParser {
@Inject
private IParser parser;
new() {
var injector = new MyDslStandaloneSetup().
createInjectorAndDoEMFRegistration();
injector.injectMembers(this)
}
def EObject parse(Reader reader) throws IOException {
var result = parser.parse(reader)
if (result.hasSyntaxErrors()) {
throw new ParseException("Provided input contains syntax errors.")
}
var resource = result.getRootASTElement().eResource()
//resource is null
//checkResource(resource)
return result.getRootASTElement();
}
@Inject IResourceValidator resourceValidator
def void checkResource(Resource resource) {
val issues = resourceValidator.validate(resource,
CheckMode.ALL, CancelIndicator.NullImpl)
for (issue : issues) {
switch issue.severity {
case ERROR:
println("ERROR: " + issue.message)
case WARNING:
println("WARNING: " + issue.message)
}
}
}
}
を呼び出す方法については非常にあいまいであるため、(擬似コード)
それを呼び出しますか? – Johan
解析結果はルート要素にeResourceを与えます –
'result.getRootASTElement()。eResource()'によって返されるオブジェクトはnull – Johan