瀏覽代碼

HUE-3324 [editor] Create initial jison parser

Johan Ahlen 9 年之前
父節點
當前提交
771be071c2
共有 1 個文件被更改,包括 70 次插入0 次删除
  1. 70 0
      desktop/core/src/desktop/static/desktop/js/autocomplete/sql.jison

+ 70 - 0
desktop/core/src/desktop/static/desktop/js/autocomplete/sql.jison

@@ -0,0 +1,70 @@
+// Licensed to Cloudera, Inc. under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  Cloudera, Inc. licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+%lex
+%%
+
+\s+                   { /* skip whitespace */ }
+"SELECT"              { return 'SELECT'; }
+"FROM"                { return 'FROM'; }
+[a-zA-Z0-9_]*\b       { return 'STRING_IDENTIFIER'; }
+","                   { return ','; }
+"*"                   { return '*'; }
+";"                   { return ';'; }
+<<EOF>>               { return 'EOF'; }
+
+/lex
+
+%start SqlStatement
+%%
+
+SqlStatement
+ : "SELECT" SelectExpression "FROM" TableReference ";" EOF
+ ;
+
+SelectExpression
+ : "*"
+ | SelectExpressionList
+ ;
+
+SelectExpressionList
+ : DerivedColumn
+ | SelectExpressionList "," DerivedColumn
+ ;
+
+DerivedColumn
+ : STRING_IDENTIFIER
+ ;
+
+TableReference
+ : STRING_IDENTIFIER
+ ;
+
+%%
+
+/*
+ Hive Select syntax from https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select
+
+ [WITH CommonTableExpression (, CommonTableExpression)*]    (Note: Only available starting with Hive 0.13.0)
+ SELECT [ALL | DISTINCT] select_expr, select_expr, ...
+ FROM table_reference
+ [WHERE where_condition]
+ [GROUP BY col_list]
+ [CLUSTER BY col_list
+   | [DISTRIBUTE BY col_list] [SORT BY col_list]
+ ]
+ [LIMIT number]
+*/