xref: /OpenGrok/opengrok-indexer/src/main/jflex/analysis/sql/JointSQLProductions.lexh (revision d219b4cea555a12b602d2d5518daa22134ad4879)
1*d219b4ceSAdam Hornacek/*
2*d219b4ceSAdam Hornacek * CDDL HEADER START
3*d219b4ceSAdam Hornacek *
4*d219b4ceSAdam Hornacek * The contents of this file are subject to the terms of the
5*d219b4ceSAdam Hornacek * Common Development and Distribution License (the "License").
6*d219b4ceSAdam Hornacek * You may not use this file except in compliance with the License.
7*d219b4ceSAdam Hornacek *
8*d219b4ceSAdam Hornacek * See LICENSE.txt included in this distribution for the specific
9*d219b4ceSAdam Hornacek * language governing permissions and limitations under the License.
10*d219b4ceSAdam Hornacek *
11*d219b4ceSAdam Hornacek * When distributing Covered Code, include this CDDL HEADER in each
12*d219b4ceSAdam Hornacek * file and include the License file at LICENSE.txt.
13*d219b4ceSAdam Hornacek * If applicable, add the following below this CDDL HEADER, with the
14*d219b4ceSAdam Hornacek * fields enclosed by brackets "[]" replaced with your own identifying
15*d219b4ceSAdam Hornacek * information: Portions Copyright [yyyy] [name of copyright owner]
16*d219b4ceSAdam Hornacek *
17*d219b4ceSAdam Hornacek * CDDL HEADER END
18*d219b4ceSAdam Hornacek */
19*d219b4ceSAdam Hornacek
20*d219b4ceSAdam Hornacek/*
21*d219b4ceSAdam Hornacek * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
22*d219b4ceSAdam Hornacek * Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved.
23*d219b4ceSAdam Hornacek * Portions Copyright (c) 2017, 2019, Chris Fraire <cfraire@me.com>.
24*d219b4ceSAdam Hornacek */
25*d219b4ceSAdam Hornacek
26*d219b4ceSAdam Hornacek/*
27*d219b4ceSAdam Hornacek *     Number and Identifier must be defined in the specific SQL dialect's .lexh
28*d219b4ceSAdam Hornacek * file. Otherwise, JointSQL.lexh has the definitions shared among dialects.
29*d219b4ceSAdam Hornacek *     The subclass must override getDialectKeywords() to return the appropriate
30*d219b4ceSAdam Hornacek * Set for the dialect.
31*d219b4ceSAdam Hornacek */
32*d219b4ceSAdam Hornacek
33*d219b4ceSAdam Hornacek%state STRING QUOTED_IDENTIFIER SINGLE_LINE_COMMENT BRACKETED_COMMENT
34*d219b4ceSAdam Hornacek
35*d219b4ceSAdam Hornacek%%
36*d219b4ceSAdam Hornacek
37*d219b4ceSAdam Hornacek<YYINITIAL> {
38*d219b4ceSAdam Hornacek    {Identifier} {
39*d219b4ceSAdam Hornacek        chkLOC();
40*d219b4ceSAdam Hornacek        if (offerSymbol(yytext(), 0, false) && returnOnSymbol()) {
41*d219b4ceSAdam Hornacek            return yystate();
42*d219b4ceSAdam Hornacek        }
43*d219b4ceSAdam Hornacek    }
44*d219b4ceSAdam Hornacek
45*d219b4ceSAdam Hornacek    {Number} {
46*d219b4ceSAdam Hornacek        chkLOC();
47*d219b4ceSAdam Hornacek        onDisjointSpanChanged(HtmlConsts.NUMBER_CLASS, yychar);
48*d219b4ceSAdam Hornacek        offer(yytext());
49*d219b4ceSAdam Hornacek        onDisjointSpanChanged(null, yychar);
50*d219b4ceSAdam Hornacek    }
51*d219b4ceSAdam Hornacek
52*d219b4ceSAdam Hornacek    [nN]? "'"    {
53*d219b4ceSAdam Hornacek        chkLOC();
54*d219b4ceSAdam Hornacek        String capture = yytext();
55*d219b4ceSAdam Hornacek        String prefix = capture.substring(0, capture.length() - 1);
56*d219b4ceSAdam Hornacek        String rest = capture.substring(prefix.length());
57*d219b4ceSAdam Hornacek        offer(prefix);
58*d219b4ceSAdam Hornacek        yypush(STRING);
59*d219b4ceSAdam Hornacek        onDisjointSpanChanged(HtmlConsts.STRING_CLASS, yychar);
60*d219b4ceSAdam Hornacek        offer(rest);
61*d219b4ceSAdam Hornacek    }
62*d219b4ceSAdam Hornacek
63*d219b4ceSAdam Hornacek    \"    {
64*d219b4ceSAdam Hornacek        chkLOC();
65*d219b4ceSAdam Hornacek        yypush(QUOTED_IDENTIFIER);
66*d219b4ceSAdam Hornacek        onDisjointSpanChanged(HtmlConsts.STRING_CLASS, yychar);
67*d219b4ceSAdam Hornacek        offer(yytext());
68*d219b4ceSAdam Hornacek    }
69*d219b4ceSAdam Hornacek
70*d219b4ceSAdam Hornacek    "--"    {
71*d219b4ceSAdam Hornacek        yypush(SINGLE_LINE_COMMENT);
72*d219b4ceSAdam Hornacek        onDisjointSpanChanged(HtmlConsts.COMMENT_CLASS, yychar);
73*d219b4ceSAdam Hornacek        offer(yytext());
74*d219b4ceSAdam Hornacek    }
75*d219b4ceSAdam Hornacek}
76*d219b4ceSAdam Hornacek
77*d219b4ceSAdam Hornacek<STRING> {
78*d219b4ceSAdam Hornacek    "''"    {
79*d219b4ceSAdam Hornacek        chkLOC();
80*d219b4ceSAdam Hornacek        offer(yytext());
81*d219b4ceSAdam Hornacek    }
82*d219b4ceSAdam Hornacek    "'"    {
83*d219b4ceSAdam Hornacek        chkLOC();
84*d219b4ceSAdam Hornacek        offer(yytext());
85*d219b4ceSAdam Hornacek        yypop();
86*d219b4ceSAdam Hornacek    }
87*d219b4ceSAdam Hornacek}
88*d219b4ceSAdam Hornacek
89*d219b4ceSAdam Hornacek<QUOTED_IDENTIFIER> {
90*d219b4ceSAdam Hornacek    \"\"    {
91*d219b4ceSAdam Hornacek        chkLOC();
92*d219b4ceSAdam Hornacek        offer(yytext());
93*d219b4ceSAdam Hornacek    }
94*d219b4ceSAdam Hornacek    \"    {
95*d219b4ceSAdam Hornacek        chkLOC();
96*d219b4ceSAdam Hornacek        offer(yytext());
97*d219b4ceSAdam Hornacek        yypop();
98*d219b4ceSAdam Hornacek    }
99*d219b4ceSAdam Hornacek}
100*d219b4ceSAdam Hornacek
101*d219b4ceSAdam Hornacek<SINGLE_LINE_COMMENT> {
102*d219b4ceSAdam Hornacek    {WhspChar}*{EOL} {
103*d219b4ceSAdam Hornacek        yypop();
104*d219b4ceSAdam Hornacek        onEndOfLineMatched(yytext(), yychar);
105*d219b4ceSAdam Hornacek    }
106*d219b4ceSAdam Hornacek}
107*d219b4ceSAdam Hornacek
108*d219b4ceSAdam Hornacek<YYINITIAL, BRACKETED_COMMENT> {
109*d219b4ceSAdam Hornacek    "/*" {
110*d219b4ceSAdam Hornacek        if (commentLevel++ == 0) {
111*d219b4ceSAdam Hornacek            yypush(BRACKETED_COMMENT);
112*d219b4ceSAdam Hornacek            onDisjointSpanChanged(HtmlConsts.COMMENT_CLASS, yychar);
113*d219b4ceSAdam Hornacek        }
114*d219b4ceSAdam Hornacek        offer(yytext());
115*d219b4ceSAdam Hornacek    }
116*d219b4ceSAdam Hornacek}
117*d219b4ceSAdam Hornacek
118*d219b4ceSAdam Hornacek<BRACKETED_COMMENT> {
119*d219b4ceSAdam Hornacek    "*/" {
120*d219b4ceSAdam Hornacek        offer(yytext());
121*d219b4ceSAdam Hornacek        if (--commentLevel == 0) {
122*d219b4ceSAdam Hornacek            yypop();
123*d219b4ceSAdam Hornacek        }
124*d219b4ceSAdam Hornacek    }
125*d219b4ceSAdam Hornacek}
126*d219b4ceSAdam Hornacek
127*d219b4ceSAdam Hornacek<YYINITIAL, STRING, QUOTED_IDENTIFIER, SINGLE_LINE_COMMENT, BRACKETED_COMMENT> {
128*d219b4ceSAdam Hornacek    {WhspChar}*{EOL}    {
129*d219b4ceSAdam Hornacek        onEndOfLineMatched(yytext(), yychar);
130*d219b4ceSAdam Hornacek    }
131*d219b4ceSAdam Hornacek    [[\s]--[\n]]    {
132*d219b4ceSAdam Hornacek        offer(yytext());
133*d219b4ceSAdam Hornacek    }
134*d219b4ceSAdam Hornacek    [^\n]    {
135*d219b4ceSAdam Hornacek        chkLOC();
136*d219b4ceSAdam Hornacek        offer(yytext());
137*d219b4ceSAdam Hornacek    }
138*d219b4ceSAdam Hornacek}
139*d219b4ceSAdam Hornacek
140*d219b4ceSAdam Hornacek<STRING> {
141*d219b4ceSAdam Hornacek    {BrowseableURI}    {
142*d219b4ceSAdam Hornacek        chkLOC();
143*d219b4ceSAdam Hornacek        if (takeAllContent()) {
144*d219b4ceSAdam Hornacek            onUriMatched(yytext(), yychar, SQLUtils.STRINGLITERAL_APOS_DELIMITER);
145*d219b4ceSAdam Hornacek        }
146*d219b4ceSAdam Hornacek    }
147*d219b4ceSAdam Hornacek}
148*d219b4ceSAdam Hornacek
149*d219b4ceSAdam Hornacek<QUOTED_IDENTIFIER, SINGLE_LINE_COMMENT> {
150*d219b4ceSAdam Hornacek    {BrowseableURI}    {
151*d219b4ceSAdam Hornacek        chkLOC();
152*d219b4ceSAdam Hornacek        if (takeAllContent()) {
153*d219b4ceSAdam Hornacek            onUriMatched(yytext(), yychar);
154*d219b4ceSAdam Hornacek        }
155*d219b4ceSAdam Hornacek    }
156*d219b4ceSAdam Hornacek}
157*d219b4ceSAdam Hornacek
158*d219b4ceSAdam Hornacek<BRACKETED_COMMENT> {
159*d219b4ceSAdam Hornacek    {BrowseableURI}    {
160*d219b4ceSAdam Hornacek        if (takeAllContent()) {
161*d219b4ceSAdam Hornacek            onUriMatched(yytext(), yychar, StringUtils.END_C_COMMENT);
162*d219b4ceSAdam Hornacek        }
163*d219b4ceSAdam Hornacek    }
164*d219b4ceSAdam Hornacek}
165