HIVE源碼(4):HQL 轉換為 MR 源碼詳細解讀(3)HQL 生成 AST(抽象語法樹)
1 compileInternal 方法

2 compile 方法

3 parse 方法


說明:Antlr 框架。Hive 使用 Antlr 實現 SQL 的詞法和語法解析。Antlr 是一種語言識別的工具,可以用來構造領域語言。 這里不詳細介紹 Antlr,只需要了解使用 Antlr 構造特定
的語言只需要編寫一個語法文件,定義詞法和語法替換規則即可,Antlr 完成了詞法分析、語法分析、語義分析、中間代碼生成的過程。
Hive 中語法規則的定義文件在 0.10 版本以前是 Hive.g 一個文件,隨著語法規則越來越復雜,由語法規則生成的 Java 解析類可能超過 Java 類文件的最大上限,0.11 版本將 Hive.g拆成了 5 個文件,詞法規則 HiveLexer.g 和語法規則的 4 個文件 SelectClauseParser.g,FromClauseParser.g,IdentifiersParser.g,HiveParser.g。


說明:例如 HQL 語句為:

生成對應的 AST(抽象語法樹)為:

本文來自博客園,作者:秋華,轉載請注明原文鏈接:http://www.rzrgm.cn/qiu-hua/p/15173225.html

浙公網安備 33010602011771號