- studio-master-devブランチ重要
compilerCommon/BindingExpression.g4
- ANTLR4らしい (build.gradleに依存関係の記述あり)
- syntax visualizerが.g4をサポートしていない(つらみ)
android.databinding.tool.ExpressionParserが利用
BindingExpressionParser.BindingSyntaxContext root = parser.bindingSyntax();
return root.accept(visitor); // returns android.databinding.tool.expr.Expr
ExpressionParserはandroid.databinding.tool.LayoutBinderとandroid.databinding.tool.util.XmlEditorが利用
XmlEditorは、属性値中のbinding expression(@={...}あるいは@{...})が登場したら、その内容をBindingExpressionParserで解析する(defaultReplacement(XMLParser.AttributeContext attr)内部)
LayoutBinderはResourceBundle.fromXML(InputStream)でロードされたLayoutFileBundleから(これをコンストラクター引数として)生成される。
ひとつのプロジェクト中のバインディング処理の対象は、ひとつのResourceBundleにまとめられる。
ResourceBundleは、android.databinding.tool.LayoutXmlProcessorの中で生成・保持される。また、android.databinding.annotationprocessor.ProcessExpressions(APT実装の一部)の中でも生成・保持される。