我正在使用PicoContainer来连接我的应用程序的类。正如你在下面看到的,一切都很完美,但在一个地方:
CharArrayReader reader = new CharArrayReader(acCode.toCharArray());
CharStream charStream = new CharStream(reader);
Scanner scanner = new Scanner(charStream);
TokenStream tokenStream = new TokenStream(scanner);
ParserGeneratingAST parserGeneratingAST = new ParserGeneratingAST(tokenStream);
--> AbstractSyntaxTree ast = parserGeneratingAST.generateAST(); <-- here is the problem
SymbolsTable symbolsTable = new SymbolsTable();
ErrorsTable errorsTable = new ErrorsTable();
SymbolsTableFillerVisitor symbolsTableFillerVisitor = new SymbolsTableFillerVisitor(symbolsTable, errorsTable);
TypeCheckingVisitor typeCheckingVisitor = new TypeCheckingVisitor(symbolsTable, errorsTable);
InstructionsList instructionsList = new InstructionsList();
CodeGenerationVisitor codeGenerationVisitor = new CodeGenerationVisitor(instructionsList);
symbolsTableFillerVisitor.visit(ast);
typeCheckingVisitor.visit(ast);
codeGenerationVisitor.visit(ast);
问题在于
AbstractSyntaxTree ast = parserGeneratingAST.generateAST();
有没有办法使用PicoContainer解决这个问题?如果可能的话,我想保留没有注释的课程。
由于
答案 0 :(得分:1)
如果我理解正确,您的问题是在您的课程中注入AbstractSyntaxTree
,但您必须使用ParserGeneratingAST
生成AbstractSyntaxTree
的实例。虽然我不是PicoContainer的专家,但我认为在这种情况下,您可以使用创建AbstractSyntaxTree
对象的工厂(使用ParserGeneratingAST
),然后您可以使用Factory Injection