⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jvquibsqlparser.pas

📁 East make Tray Icon in delphi
💻 PAS
📖 第 1 页 / 共 5 页
字号:

  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 + -