2022-04-03 12:27:35 +02:00
|
|
|
lexer grammar PgsqlLexer;
|
|
|
|
|
|
|
|
|
|
@lexer::preinclude {
|
2022-04-03 20:09:58 +02:00
|
|
|
#include <QString>
|
2022-04-03 12:27:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SemiColon: ';';
|
|
|
|
|
Comma: ',';
|
|
|
|
|
Dot: '.';
|
|
|
|
|
OpenParen: '(';
|
|
|
|
|
CloseParen: ')';
|
|
|
|
|
|
2022-04-07 19:35:29 +02:00
|
|
|
fragment A : [aA];
|
|
|
|
|
fragment B : [bB];
|
|
|
|
|
fragment C : [cC];
|
|
|
|
|
fragment D : [dD];
|
|
|
|
|
fragment E : [eE];
|
|
|
|
|
fragment F : [fF];
|
|
|
|
|
fragment G : [gG];
|
|
|
|
|
fragment H : [hH];
|
|
|
|
|
fragment I : [iI];
|
|
|
|
|
fragment J : [jJ];
|
|
|
|
|
fragment K : [kK];
|
|
|
|
|
fragment L : [lL];
|
|
|
|
|
fragment M : [mM];
|
|
|
|
|
fragment N : [nN];
|
|
|
|
|
fragment O : [oO];
|
|
|
|
|
fragment P : [pP];
|
|
|
|
|
fragment Q : [qQ];
|
|
|
|
|
fragment R : [rR];
|
|
|
|
|
fragment S : [sS];
|
|
|
|
|
fragment T : [tT];
|
|
|
|
|
fragment U : [uU];
|
|
|
|
|
fragment V : [vV];
|
|
|
|
|
fragment W : [wW];
|
|
|
|
|
fragment X : [xX];
|
|
|
|
|
fragment Y : [yY];
|
|
|
|
|
fragment Z : [zZ];
|
2022-04-03 20:09:58 +02:00
|
|
|
|
|
|
|
|
As: A S;
|
|
|
|
|
By: B Y;
|
2022-04-07 19:35:29 +02:00
|
|
|
Cross: C R O S S;
|
2022-04-03 20:09:58 +02:00
|
|
|
From: F R O M;
|
|
|
|
|
Full: F U L L;
|
|
|
|
|
Group: G R O U P;
|
|
|
|
|
Having: H A V I N G;
|
2022-04-07 19:35:29 +02:00
|
|
|
Inner: I N N E R;
|
2022-04-03 20:09:58 +02:00
|
|
|
Join: J O I N;
|
|
|
|
|
Left : L E F T;
|
2022-04-07 19:35:29 +02:00
|
|
|
Natural : N A T U R A L;
|
|
|
|
|
On : O N;
|
2022-04-03 20:09:58 +02:00
|
|
|
Order : O R D E R;
|
2022-04-07 19:35:29 +02:00
|
|
|
Outer : O U T E R;
|
2022-04-03 20:09:58 +02:00
|
|
|
Right : R I G H T;
|
2022-04-07 19:35:29 +02:00
|
|
|
Select : S E L E C T;
|
|
|
|
|
Using : U S I N G;
|
|
|
|
|
Where : W H E R E;
|
2022-04-03 20:09:58 +02:00
|
|
|
|
|
|
|
|
Ident: [\p{Alpha}]~[\p{White_Space}]*
|
|
|
|
|
{
|
|
|
|
|
setText(QString::fromStdString(getText()).toLower().toStdString());
|
|
|
|
|
}
|
|
|
|
|
| '"' ~["]+ '"'
|
|
|
|
|
{
|
|
|
|
|
{
|
|
|
|
|
std::string s = getText();
|
|
|
|
|
s = s.substr(1, s.length() - 2);
|
|
|
|
|
setText(s);
|
|
|
|
|
}
|
|
|
|
|
};
|
2022-04-03 12:27:35 +02:00
|
|
|
IntegerLiteral: [1-9][0-9]*;
|
2022-04-03 20:09:58 +02:00
|
|
|
StringLiteral: '\'' ('\'\'' | ~['])+ '\'' { setText(getText().substr(1, getText().length()-2)); };
|
|
|
|
|
|
|
|
|
|
Whitespace: [\p{White_Space}] -> skip ; // skip spaces, tabs, newlines
|
2022-04-03 12:27:35 +02:00
|
|
|
|
2022-04-03 20:09:58 +02:00
|
|
|
UnexpectedSymbol: .;
|