import{_ as t,o as i,c as o,a as r,d as e,e as n}from"./app-c075fd0e.js";const a={},s=e("h2",{id:"词法与文法详细定义",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#词法与文法详细定义","aria-hidden":"true"},"#"),n(" 词法与文法详细定义")],-1),c=e("p",null,"请阅读代码仓库中的词法和语法描述文件：",-1),l=e("p",null,[n("词法文件："),e("code",null,"antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlLexer.g4")],-1),d=e("p",null,[n("语法文件："),e("code",null,"antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4")],-1);function h(p,u){return i(),o("div",null,[r(`

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF 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.

`),s,c,l,d])}const _=t(a,[["render",h],["__file","Detailed-Grammar.html.vue"]]);export{_ as default};
