📄 jvquibsqlparser.pas
字号:
yylex := yyretval;
end(*yylex*);
{ TSQLNode }
constructor TSQLNode.Create(NodeType: TSQLNodeType; Childs: array of TSQLNode);
var i, j: Integer;
begin
FIndex := -1;
FOwner := nil;
self.NodeType := NodeType;
FNodeArg := TList.Create;
for i := 0 to length(Childs) - 1 do
begin
if (NodeType = NodeList) and
(Childs[i].NodeType = NodeList) then
begin // flat list
for j := 0 to Childs[i].NodesCount - 1 do
begin
Childs[i].Nodes[j].FIndex := FNodeArg.Add(Childs[i].Nodes[j]);
Childs[i].Nodes[j].FOwner := Self;
end;
Childs[i].FNodeArg.Clear;
Childs[i].Free;
end else
begin
Childs[i].FIndex := FNodeArg.Add(Childs[i]);
Childs[i].FOwner := Self;
end;
end;
end;
destructor TSQLNode.Destroy;
var i: Integer;
begin
for i := 0 to FNodeArg.Count - 1 do
if FNodeArg[i] <> nil then
TObject(FNodeArg[i]).Free;
FNodeArg.Free;
inherited;
end;
function TSQLNode.GetNodCount: Word;
begin
Result := FNodeArg.Count;
end;
function TSQLNode.GetNodeArg(const Index: Word): TSQLNode;
begin
Assert((NodesCount > 0) and (Index < NodesCount));
Result := FNodeArg[Index];
end;
function TSQLNode.GetPosFrom: TPosition;
begin
case FIndex of
-1 : begin
Result.line := 0;
Result.column := 0;
Result.Pos := 0;
end;
0 : Result := FOwner.PosFrom;
else
Result := FOwner.Nodes[FIndex - 1].PosTo;
end;
end;
{ TUIBGrammar }
constructor TUIBGrammar.Create(Lexer: TLexer);
begin
inherited;
RootNode := nil;
FLastPos.line := 0;
FLastPos.column := 0;
end;
function TUIBGrammar.MakeNode(NodeType: TSQLNodeType;
Childs: array of TSQLNode; Value: string = ''): TSQLNode;
begin
Result := TSQLNode.Create(NodeType, Childs);
Result.Value := value;
Result.PosTo.line := Lexer.yylineno - 1;
Result.PosTo.column := Lexer.yycolno - 1;
Result.PosTo.Pos := Lexer.yyinput.Position;
end;
destructor TUIBGrammar.destroy;
begin
if RootNode <> nil then
RootNode.Free;
inherited;
end;
constructor TUIBLexer.Create(Stream: TStream);
begin
inherited;
FTerm := ';';
FInterm := False;
end;
function TUIBGrammar.yyparse: Integer;
var yylval : YYSType;
var yystate, yysp, yyn : Integer;
yys : array [1..yymaxdepth] of Integer;
yyv : array [1..yymaxdepth] of YYSType;
yyval : YYSType;
procedure yyaction ( yyruleno : Integer );
(* local definitions: *)
begin
(* actions: *)
case yyruleno of
1 : begin
RootNode := yyv[yysp-0];
end;
2 : begin
end;
3 : begin
yyval := MakeNode(NodeList, [yyv[yysp-0]]);
end;
4 : begin
yyval := MakeNode(NodeList, [yyv[yysp-1], yyv[yysp-0]]);
end;
5 : begin
yyval := yyv[yysp-1];
end;
6 : begin
yyval := yyv[yysp-0];
end;
7 : begin
yyval := yyv[yysp-1];
end;
8 : begin
yyval := yyv[yysp-1];
end;
9 : begin
yyval := yyv[yysp-0];
end;
10 : begin
yyval := yyv[yysp-1];
end;
11 : begin
yyval := yyv[yysp-1];
end;
12 : begin
yyval := yyv[yysp-0];
end;
13 : begin
yyval := yyv[yysp-1];
end;
14 : begin
yyval := yyv[yysp-1];
end;
15 : begin
yyval := yyv[yysp-1];
end;
16 : begin
yyval := yyv[yysp-1];
end;
17 : begin
yyval := yyv[yysp-1];
end;
18 : begin
yyval := yyv[yysp-1];
end;
19 : begin
yyval := yyv[yysp-1];
end;
20 : begin
yyval := yyv[yysp-1];
end;
21 : begin
yyval := yyv[yysp-1];
end;
22 : begin
yyval := yyv[yysp-1];
end;
23 : begin
yyval := yyv[yysp-1];
end;
24 : begin
yyval := MakeNode(NodeDebug, []);
end;
25 : begin
yyval := MakeNode(NodeConnect, [yyv[yysp-4], yyv[yysp-2], yyv[yysp-0]]);
end;
26 : begin
yyval := MakeNode(NodeName, [], Lexer.yytext);
end;
27 : begin
yyval := MakeNode(NodeUsername, [], Lexer.yytext);
end;
28 : begin
yyval := MakeNode(NodePassWord, [], Lexer.yytext);
end;
29 : begin
yyval := MakeNode(NodeGrant, []);
end;
30 : begin
yyval := MakeNode(NodeGrant, []);
end;
31 : begin
yyval := MakeNode(NodeGrant, []);
end;
32 : begin
yyval := MakeNode(NodeGrant, []);
end;
33 : begin
yyval := MakeNode(NodeGrant, []);
end;
34 : begin
yyval := yyv[yysp-0];
end;
35 : begin
yyval := yyv[yysp-1];
end;
36 : begin
yyval := yyv[yysp-0];
end;
37 : begin
yyval := yyv[yysp-1];
end;
38 : begin
yyval := yyv[yysp-0];
end;
39 : begin
yyval := yyv[yysp-0];
end;
40 : begin
yyval := yyv[yysp-2];
end;
41 : begin
yyval := yyv[yysp-0];
end;
42 : begin
yyval := yyv[yysp-0];
end;
43 : begin
yyval := yyv[yysp-0];
end;
44 : begin
yyval := yyv[yysp-0];
end;
45 : begin
yyval := yyv[yysp-1];
end;
46 : begin
yyval := yyv[yysp-1];
end;
47 : begin
yyval := yyv[yysp-2];
end;
48 : begin
end;
49 : begin
yyval := yyv[yysp-2];
end;
50 : begin
end;
51 : begin
yyval := yyv[yysp-0];
end;
52 : begin
yyval := MakeNode(NodeRevoke, []);
end;
53 : begin
yyval := MakeNode(NodeRevoke, []);
end;
54 : begin
yyval := MakeNode(NodeRevoke, []);
end;
55 : begin
yyval := MakeNode(NodeRevoke, []);
end;
56 : begin
yyval := MakeNode(NodeRevoke, []);
end;
57 : begin
yyval := MakeNode(NodeRevoke, []);
end;
58 : begin
yyval := MakeNode(NodeRevoke, []);
end;
59 : begin
yyval := yyv[yysp-2];
end;
60 : begin
yyval := yyv[yysp-0];
end;
61 : begin
yyval := yyv[yysp-2];
end;
62 : begin
yyval := yyv[yysp-2];
end;
63 : begin
yyval := yyv[yysp-2];
end;
64 : begin
yyval := yyv[yysp-1];
end;
65 : begin
yyval := yyv[yysp-1];
end;
66 : begin
yyval := yyv[yysp-1];
end;
67 : begin
yyval := yyv[yysp-1];
end;
68 : begin
yyval := yyv[yysp-0];
end;
69 : begin
yyval := yyv[yysp-2];
end;
70 : begin
yyval := yyv[yysp-0];
end;
71 : begin
yyval := yyv[yysp-1];
end;
72 : begin
yyval := yyv[yysp-1];
end;
73 : begin
yyval := yyv[yysp-0];
end;
74 : begin
yyval := yyv[yysp-2];
end;
75 : begin
yyval := yyv[yysp-0];
end;
76 : begin
yyval := yyv[yysp-0];
end;
77 : begin
yyval := yyv[yysp-2];
end;
78 : begin
yyval := yyv[yysp-0];
end;
79 : begin
yyval := yyv[yysp-1];
end;
80 : begin
yyval := yyv[yysp-0]
end;
81 : begin
yyval := MakeNode(NodeDeclareFilter, []);
end;
82 : begin
yyval := MakeNode(NodeDeclareFunction, []);
end;
83 : begin
yyval := yyv[yysp-7];
end;
84 : begin
yyval := yyv[yysp-0];
end;
85 : begin
yyval := yyv[yysp-0];
end;
86 : begin
yyval := yyv[yysp-4];
end;
87 : begin
end;
88 : begin
yyval := yyv[yysp-0];
end;
89 : begin
yyval := yyv[yysp-2];
end;
90 : begin
yyval := yyv[yysp-0];
end;
91 : begin
yyval := yyv[yysp-2];
end;
92 : begin
yyval := yyv[yysp-1];
end;
93 : begin
yyval := yyv[yysp-3];
end;
94 : begin
yyval := yyv[yysp-0];
end;
95 : begin
yyval := yyv[yysp-2];
end;
96 : begin
yyval := yyv[yysp-1];
end;
97 : begin
yyval := yyv[yysp-2];
end;
98 : begin
yyval := yyv[yysp-3];
end;
99 : begin
yyval := yyv[yysp-3];
end;
100 : begin
yyval := yyv[yysp-1];
end;
101 : begin
yyval := yyv[yysp-8];
end;
102 : begin
yyval := yyv[yysp-0];
end;
103 : begin
yyval := MakeNode(NodeCreateException, []);
end;
104 : begin
yyval := MakeNode(NodeCreateIndex, []);
end;
105 : begin
yyval := MakeNode(NodeCreateProcedure, []);
end;
106 : begin
yyval := MakeNode(NodeCreateTable, []);
end;
107 : begin
yyval := MakeNode(NodeCreateTrigger, []);
end;
108 : begin
yyval := MakeNode(NodeCreateView, []);
end;
109 : begin
yyval := MakeNode(NodeCreateGenerator, []);
end;
110 : begin
yyval := MakeNode(NodeCreateDataBase, [yyv[yysp-1]]);
end;
111 : begin
yyval := MakeNode(NodeCreateDomain, []);
end;
112 : begin
yyval := MakeNode(NodeCreateShadow, []);
end;
113 : begin
yyval := MakeNode(NodeCreateRole, []);
end;
114 : begin
yyval := yyv[yysp-0];
end;
115 : begin
yyval := MakeNode(NodeRecreateProcedure, []);
end;
116 : begin
yyval := MakeNode(NodeRecreateTable, []);
end;
117 : begin
yyval := MakeNode(NodeRecreateView, []);
end;
118 : begin
yyval := MakeNode(NodeReplace, []);
end;
119 : begin
yyval := yyv[yysp-1];
end;
120 : begin
yyval := yyv[yysp-1];
end;
121 : begin
yyval := yyv[yysp-0];
end;
122 : begin
end;
123 : begin
yyval := yyv[yysp-0];
end;
124 : begin
yyval := yyv[yysp-0];
end;
125 : begin
yyval := yyv[yysp-5];
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -