0

我正在使用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 解决这个问题?如果可能的话,我想保持我的课程没有注释。

谢谢

4

1 回答 1

1

如果我理解正确,您的问题是AbstractSyntaxTree在您的课程中被注入,但您必须使用 aParserGeneratingAST来生成AbstractSyntaxTree. 虽然我不是 PicoContainer 方面的专家,但我认为在这种情况下,您可以使用创建AbstractSyntaxTree对象的 Factory(通过使用 a ParserGeneratingAST),然后您可以使用Factory Injection

于 2011-03-17T09:01:39.903 回答