protected ExpressionContextDescription getExpressionContextDescription ( ) { for ( final CodeElementExtractor . ElementDescription containerDescription : getCodeElementExtractor ( ) . getTopElements ( getGrammar ( ) , getCodeBuilderConfig ( ) ) ) { final AbstractRule rule = getMemberRule ( containerDescription ) ; if ( rule != null ) { final Pattern fieldTypePattern = Pattern . compile ( getExpressionConfig ( ) . getExpressionFieldTypenamePattern ( ) ) ; final ExpressionContextDescription description = getCodeElementExtractor ( ) . visitMemberElements ( containerDescription , rule , null , ( it , grammarContainer , memberContainer , classifier ) -> { if ( fieldTypePattern . matcher ( classifier . getName ( ) ) . find ( ) ) { final Assignment expressionAssignment = findAssignmentFromTerminalPattern ( memberContainer , getExpressionConfig ( ) . getExpressionGrammarPattern ( ) ) ; final CodeElementExtractor . ElementDescription memberDescription = it . newElementDescription ( classifier . getName ( ) , memberContainer , classifier , XExpression . class ) ; return new ExpressionContextDescription ( containerDescription , memberDescription , ensureContainerKeyword ( containerDescription . getGrammarComponent ( ) ) , ensureFieldDeclarationKeyword ( memberDescription ) , expressionAssignment ) ; } return null ; } , null ) ; if ( description != null ) { return description ; } } } return null ; }
Replies the description of the expression context .