public static List<PsiElement> createExpressionFromText(Project project, @NonNls String text) throws IncorrectOperationException { // XXX why we need this? // ParserDefinition def = ParserFileType.PARSER_FILE_TYPE.getLanguage().getParserDefinition(); // assert def != null; StringBuilder builder = new StringBuilder("@main[]\n"); builder.append(text).append("\n"); final PsiFile dummyFile = PsiFileFactory.getInstance(project) .createFileFromText( DUMMY + ParserFileType.PARSER_FILE_TYPE.getDefaultExtension(), builder.toString()); ParserMethod method = PsiTreeUtil.getChildOfType(dummyFile, ParserMethod.class); PsiElement[] children = method.getChildren(); List<PsiElement> toReturn = new ArrayList<PsiElement>(); for (PsiElement element : children) { if (element instanceof ParserParameterList || element.getText().equals("\n")) continue; toReturn.add(element); } return toReturn; }
public static ASTNode createNameIdentifier(Project project, String name) throws IncorrectOperationException { final PsiFile dummyFile = PsiFileFactory.getInstance(project) .createFileFromText( DUMMY + ParserFileType.PARSER_FILE_TYPE.getDefaultExtension(), name); final PsiElement expressionStatement = dummyFile.getFirstChild(); assert expressionStatement != null; return expressionStatement.getNode(); }