Top Description Inners Fields Constructors Methods
org.apache.groovy.parser.antlr4

public Class AstBuilder

extends GroovyParserBaseVisitor<Object>
Class Inheritance
Imports
groovy.lang.Tuple2, .Tuple3, groovy.transform.Trait, org.antlr.v4.runtime.ANTLRErrorListener, .CharStream, .CharStreams, .CommonTokenStream, .ParserRuleContext, .RecognitionException, .Recognizer, .Token, .TokenStream, org.antlr.v4.runtime.atn.PredictionMode, org.antlr.v4.runtime.misc.Interval, .ParseCancellationException, org.antlr.v4.runtime.tree.ParseTree, .TerminalNode, org.apache.groovy.parser.antlr4.GroovyParser.*, org.apache.groovy.parser.antlr4.internal.DescriptiveErrorStrategy, org.apache.groovy.parser.antlr4.internal.atnmanager.AtnManager, org.apache.groovy.parser.antlr4.util.StringUtils, org.apache.groovy.util.Maps, .SystemUtil, org.codehaus.groovy.GroovyBugError, org.codehaus.groovy.antlr.EnumHelper, org.codehaus.groovy.ast.ASTNode, .AnnotationNode, .ClassHelper, .ClassNode, .ConstructorNode, .EnumConstantClassNode, .FieldNode, .GenericsType, .ImportNode, .InnerClassNode, .MethodNode, .ModifierNode, .ModuleNode, .NodeMetaDataHandler, .PackageNode, .Parameter, .PropertyNode, org.codehaus.groovy.ast.expr.AnnotationConstantExpression, .ArgumentListExpression, .ArrayExpression, .AttributeExpression, .BinaryExpression, .BitwiseNegationExpression, .BooleanExpression, .CastExpression, .ClassExpression, .ClosureExpression, .ClosureListExpression, .ConstantExpression, .ConstructorCallExpression, .DeclarationExpression, .ElvisOperatorExpression, .EmptyExpression, .Expression, .GStringExpression, .LambdaExpression, .ListExpression, .MapEntryExpression, .MapExpression, .MethodCallExpression, .MethodPointerExpression, .MethodReferenceExpression, .NamedArgumentListExpression, .NotExpression, .PostfixExpression, .PrefixExpression, .PropertyExpression, .RangeExpression, .SpreadExpression, .SpreadMapExpression, .TernaryExpression, .TupleExpression, .UnaryMinusExpression, .UnaryPlusExpression, .VariableExpression, org.codehaus.groovy.ast.stmt.AssertStatement, .BlockStatement, .BreakStatement, .CaseStatement, .CatchStatement, .ContinueStatement, .DoWhileStatement, .EmptyStatement, .ExpressionStatement, .ForStatement, .IfStatement, .ReturnStatement, .Statement, .SwitchStatement, .SynchronizedStatement, .ThrowStatement, .TryCatchStatement, .WhileStatement, org.codehaus.groovy.ast.tools.ClosureUtils, org.codehaus.groovy.control.CompilationFailedException, .CompilePhase, .SourceUnit, org.codehaus.groovy.control.messages.SyntaxErrorMessage, org.codehaus.groovy.runtime.DefaultGroovyMethods, .StringGroovyMethods, org.codehaus.groovy.syntax.Numbers, .SyntaxException, .Types, org.objectweb.asm.Opcodes, java.io.BufferedReader, .IOException, java.util.ArrayDeque, .ArrayList, .Arrays, .Collections, .Deque, .Iterator, .LinkedHashMap, .LinkedList, .List, .Map, .Objects, .Optional, java.util.stream.Collectors, .Stream

Builds the AST from the parse tree generated by Antlr4.

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class

Field Summary

Modifier and TypeField and Description
private static final String
private final Deque<List<InnerClassNode>>
private static final String
private static final String
private static final String
private static final String
private final List<ClassNode>
private final Deque<ClassNode>
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private final GroovydocManager
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private final GroovyLangLexer
private final ModuleNode
private Tuple2<GroovyParser.GroovyParserRuleContext, Exception>
private static final String
private static final String
private final GroovyLangParser
private static final String
private static final String
private static final String
private static final String
private static final Map<String, String>
private static final String
private static final String
private static final int
private final SourceUnit
private static final String
private static final String
private static final String
private static final String
private static final String
private final TryWithResourcesASTTransformation
private static final String
private static final String
private static final Map<ClassNode, Object>
private static final String
private static final String
private static final String
private int
private int
private int
private int
private int
private static final String

Constructor Summary

AccessConstructor and Description
public
AstBuilder(final SourceUnit sourceUnit, final boolean groovydocEnabled, final boolean runtimeGroovydocEnabled)

Method Summary

Modifier and TypeMethod and Description
private void
public BlockStatement
private BlockStatement
private static String
beginQuotation(final String text)

public ModuleNode
private GroovyParser.GroovyParserRuleContext
private GroovyParser.GroovyParserRuleContext
buildCST(final PredictionMode predictionMode)

private ConstructorCallExpression
private void
private void
private void
configureScriptClassNode()

Sets the script source position.

private boolean
private CompilationFailedException
private ANTLRErrorListener<Symbol>
private ClassNode
createArrayType(final ClassNode elementType, List<List<AnnotationNode>> dimAnnotationsList)

private ClassNode
createArrayType(final ClassNode elementType)

private BinaryExpression
private BinaryExpression
pack-priv BlockStatement
createBlockStatement(final Statement... statements)

private BlockStatement
createBlockStatement(final List<Statement> statementList)

private MethodCallExpression
createCallMethodCallExpression(final Expression baseExpr, final Expression argumentsExpr)

private MethodCallExpression
createCallMethodCallExpression(final Expression baseExpr, final Expression argumentsExpr, final boolean implicitThis)

private CharStream
createCharStream(final SourceUnit sourceUnit)

private ClassNode
private ConstantExpression
private ConstructorNode
createConstructorNodeForClass(final String methodName, final Parameter[] parameters, final ClassNode[] exceptions, final Statement code, final ClassNode classNode, final int modifiers)

private MethodNode
createConstructorOrMethodNodeForClass(final GroovyParser.MethodDeclarationContext ctx, final ModifierManager modifierManager, final String methodName, final ClassNode returnType, final Parameter[] parameters, final ClassNode[] exceptions, final Statement code, final ClassNode classNode)

private Expression
createDotExpression(final GroovyParser.PathElementContext ctx, final Expression baseExpr, final Expression namePartExpr, final GenericsType[] genericsTypes, final boolean safe)

private Expression
private List<Expression>
createExpressionList(final List<? extends GroovyParser.ExpressionListElementContext> expressionListElementContextList)

private AstBuilder.DeclarationListStatement
createFieldDeclarationListStatement(final GroovyParser.VariableDeclarationContext ctx, final ModifierManager modifierManager, final ClassNode variableType, final List<DeclarationExpression> declarationExpressionList, final ClassNode classNode)

private GenericsType
createGenericsType(final ClassNode classNode)

private Token
createGroovyToken(final Token token)

private Token
createGroovyToken(final Token token, final int cardinality)

private Token
createGroovyTokenByType(final Token token, final int type)

private LambdaExpression
createLambda(final GroovyParser.StandardLambdaParametersContext standardLambdaParametersContext, final GroovyParser.LambdaBodyContext lambdaBodyContext)

private Tuple2<BooleanExpression, Statement>
private List<MapEntryExpression>
createMapEntryList(final List<? extends GroovyParser.MapEntryContext> mapEntryContextList)

private MethodCallExpression
createMethodCallExpression(final PropertyExpression propertyExpression, final Expression arguments)

private MethodCallExpression
createMethodCallExpression(final Expression baseExpr, final Expression arguments)

private MethodNode
createMethodNodeForClass(final GroovyParser.MethodDeclarationContext ctx, final ModifierManager modifierManager, final String methodName, final ClassNode returnType, final Parameter[] parameters, final ClassNode[] exceptions, Statement code, final ClassNode classNode, int modifiers)

private ModifierManager
private AstBuilder.DeclarationListStatement
private CompilationFailedException
pack-priv CompilationFailedException
pack-priv CompilationFailedException
private CompilationFailedException
private CompilationFailedException
createParsingFailedException(final String msg, final Token token)

private CompilationFailedException
private Expression
createPathExpression(final Expression primaryExpr, final List<? extends GroovyParser.PathElementContext> pathElementContextList)

private MethodNode
createScriptMethodNode(final ModifierManager modifierManager, final String methodName, final ClassNode returnType, final Parameter[] parameters, final ClassNode[] exceptions, final Statement code)

private void
declareField(final GroovyParser.VariableDeclarationContext ctx, final ModifierManager modifierManager, final ClassNode variableType, final ClassNode classNode, final int i, final VariableExpression variableExpression, final String fieldName, final int modifiers, final Expression initialValue)

private void
declareProperty(final GroovyParser.VariableDeclarationContext ctx, final ModifierManager modifierManager, final ClassNode variableType, final ClassNode classNode, final int i, final VariableExpression variableExpression, final String fieldName, final int modifiers, final Expression initialValue)

private Object
private String
private int
getSlashyType(final String text)

private void
hackMixins(final ClassNode classNode)

private static boolean
private void
initUsingGenerics(final ClassNode classNode)

private boolean
private boolean
private boolean
isBuiltInType(final Expression expression)

private boolean
isFieldDeclaration(final ModifierManager modifierManager, final ClassNode classNode)

private boolean
isInsideParentheses(final NodeMetaDataHandler nodeMetaDataHandler)

private boolean
private boolean
private boolean
isSyntheticPublic(final boolean isAnnotationDeclaration, final boolean isAnonymousInnerEnumDeclaration, final boolean hasReturnType, final ModifierManager modifierManager)

private static boolean
isTrue(final NodeMetaDataHandler obj, final String key)

private static String
private String
parseGStringBegin(final GroovyParser.GstringContext ctx, final String beginQuotation)

private String
parseGStringEnd(final GroovyParser.GstringContext ctx, final String beginQuotation)

private String
parseGStringPart(final TerminalNode e, final String beginQuotation)

private String
private Parameter
processFormalParameter(final GroovyParser.GroovyParserRuleContext ctx, final GroovyParser.VariableModifiersOptContext variableModifiersOptContext, final GroovyParser.TypeContext typeContext, final TerminalNode ellipsis, final GroovyParser.VariableDeclaratorIdContext variableDeclaratorIdContext, final GroovyParser.ExpressionContext expressionContext)

private ClassNode
proxyClassNode(final ClassNode classNode)

private void
private Expression
private Statement
unpackStatement(final Statement statement)

private void
validateDuplicatedNamedParameter(final List<MapEntryExpression> mapEntryExpressionList, final MapEntryExpression mapEntryExpression)

private void
private void
validateInvalidMethodDefinition(final Expression baseExpr, final Expression arguments)

private void
validateMethodDeclaration(final GroovyParser.MethodDeclarationContext ctx, final MethodNode methodNode, final ModifierManager modifierManager, final ClassNode classNode)

private void
validateParameterList(final List<Parameter> parameterList)

private void
validateParametersOfMethodDeclaration(final Parameter[] parameters, final ClassNode classNode)

private void
validateVarArgParameter(final List<? extends GroovyParser.FormalParameterContext> formalParameterList)

public Object

Returns:

the visiting result
visit
(final ParseTree
an AST node
tree
)

Overrides org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit.

Implements org.antlr.v4.runtime.tree.ParseTreeVisitor.visit.

Visit tree safely, no NPE occurred when the tree is null.
public BinaryExpression
public BinaryExpression
public ClassNode
public AnnotationNode
public String
public List<AnnotationNode>
public InnerClassNode
public Expression
public List<Expression>
public AssertStatement
public BinaryExpression
public Statement
public Statement
public BlockStatement
public BlockStatement
public ConstantExpression
public BreakStatement
public VariableExpression
public CastExpression
public ClassNode
public List<CatchStatement>

Returns:

a list of CatchStatement instances
visitCatchClause
(final GroovyParser.CatchClauseContext
the parse tree
ctx
)

Overrides org.apache.groovy.parser.antlr4.GroovyParserBaseVisitor.visitCatchClause.

Implements org.apache.groovy.parser.antlr4.GroovyParserVisitor.visitCatchClause.

Multi-catch(1..*) clause will be unpacked to several normal catch clauses, so the return type is List
public List<ClassNode>
public Void
public Void
public ClassNode
public Tuple2<Parameter, Expression>
public String
public ModifierNode
public List<ModifierNode>
public List<ModifierNode>
public ClassNode
public ClosureExpression
public ClosureExpression
public Expression
public ExpressionStatement
public Expression
public ModuleNode
public Expression
public Statement
public ContinueStatement
public ClassNode
public Expression
public Tuple3<Expression, List<AnnotationNode>, TerminalNode>
public DoWhileStatement
public Expression
public Expression
public ListExpression
public Tuple2<String, Expression>
public Map<String, Expression>
public List<Tuple2<String, Expression>>
public List<List<AnnotationNode>>
public List<List<AnnotationNode>>
public Expression
public Expression
public Tuple2<Parameter, Expression>
public Expression
public FieldNode
public List<FieldNode>
public BinaryExpression
public BinaryExpression
public Expression
public List<Expression>
public Expression
public Void
public Statement
public ConstantExpression
public Tuple2<Parameter, Expression>
public Expression
public Parameter
public Parameter[]
public Parameter[]
public ForStatement
public Expression
public GStringExpression
public Expression
public Expression
public String
public Expression
public IfStatement
public ImportNode
public BinaryExpression
public Tuple2<Token, Expression>
public ConstantExpression
public ConstantExpression
public Statement
public Statement
public ListExpression
public AstBuilder.DeclarationListStatement
public BinaryExpression
public BinaryExpression
public Statement
public MapExpression
public MapEntryExpression
public Expression
public List<MapEntryExpression>
public Void
public Statement
public MethodNode
public String
public ModifierNode
public List<ModifierNode>
public List<ModifierNode>
public BinaryExpression
public BinaryExpression
public List<MapEntryExpression>
public Expression
public Expression
public GenericsType[]
public ConstantExpression
public PackageNode
public Expression
public Expression
public Expression
public Expression
public BinaryExpression
public ClassNode
public ClassNode
public ClassNode[]
public String
public ClassNode
public BinaryExpression
public Expression
public ExpressionStatement
public List<ExpressionStatement>
public List<ExpressionStatement>
public ReturnStatement
public ClassNode
public List<ASTNode>
public Expression
public LambdaExpression
public Parameter[]
public ConstantExpression
public VariableExpression
public List<Statement>
public Tuple2<Token, Expression>
public SwitchStatement
public SynchronizedStatement
public Parameter
public VariableExpression
public ThrowStatement
public Statement
public ClassNode
public GenericsType
public GenericsType[]
public GenericsType[]
public ClassNode[]
public ClassNode
public ClassNode[]
public VariableExpression
public List<Expression>
public GenericsType
public GenericsType[]
public Expression
public Expression
public AstBuilder.DeclarationListStatement
public DeclarationExpression
public VariableExpression
public List<DeclarationExpression>
public Expression
public List<Expression>
public ModifierNode
public List<ModifierNode>
public List<ModifierNode>
public TupleExpression
public WhileStatement
Inherited from org.apache.groovy.parser.antlr4.GroovyParserBaseVisitor:
visitAssertStmtAltvisitBlockStmtAltvisitBreakStmtAltvisitBuiltInTypePrmrAltvisitClosureOrLambdaExpressionPrmrAltvisitConditionalStmtAltvisitContinueStmtAltvisitElementValuePairNamevisitEmptyStmtAltvisitExpressionvisitExpressionStmtAltvisitGstringPrmrAltvisitListPrmrAltvisitLiteralvisitLiteralPrmrAltvisitLocalVariableDeclarationStmtAltvisitLoopStatementvisitMapPrmrAltvisitNlsvisitParenPrmrAltvisitPostfixExprAltvisitPrimaryvisitQualifiedNameElementvisitQualifiedNameElementsvisitRparenvisitScriptStatementvisitSepvisitStatementvisitStatementExpressionvisitStringLiteralAltvisitTryCatchStmtAlt