Source

hello / sql / sql_parser.mly

Kota UENISHI 4d91c01 



Kota UENISHI db1d1f6 
Kota UENISHI 4d91c01 






















Kota UENISHI db1d1f6 
Kota UENISHI 4d91c01 



Kota UENISHI db1d1f6 
Kota UENISHI 4d91c01 








Kota UENISHI db1d1f6 



Kota UENISHI 4d91c01 



Kota UENISHI db1d1f6 

%{

  open Printf
  let _ = Parsing.set_trace true;;
  let debugprint = ref true;;
  
  let print str = if !debugprint then print_endline str;;
  
  let parse_error s = print ("parse_error->"^s);;

%}

%token SELECT
%token INSERT
%token DELETE
%token UPDATE
%token INTO
%token VALUES
%token SET
%token FROM
%token WHERE
%token LIMIT
%token DOT
%token LBRACE RBRACE
%token COMMA
%token ASTERISK
%token GT LT EQ NEQ NOT
%token EQUAL

%token <int> INT

%token <string> LITERAL
%token <string> QUOTE

%start input
%type <Sql.query> input

%%

input: | exp { $1 };

exp:
  | SELECT ASTERISK FROM LITERAL { Sql.Select(Sql.All_col, $4, []) }
  | SELECT columns  FROM LITERAL { Sql.Select(Sql.Columns($2), $4, []) }
  | SELECT ASTERISK FROM LITERAL where_clause { Sql.Select(Sql.All_col, $4, $5) }
  | SELECT columns  FROM LITERAL where_clause { Sql.Select(Sql.Columns($2), $4, $5) }

columns:
  | LITERAL  { [$1] }
  | LITERAL COMMA columns { $1::$3 }

where_clause:
  | WHERE LITERAL EQUAL QUOTE { [ Sql.Equal_s($2, $4)] }
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.