Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge branch 'master' into jaume

  • Loading branch information...
commit edee5270c73a411a8642daf7db15fb74506150d4 2 parents aa499a6 + 886d402
@ckroxigor ckroxigor authored
View
16 eval.ml
@@ -285,6 +285,7 @@ let str_list_to_str l =
(*Returns an string containing the select information deleting the repeated names*)
let prepare_variables_selection cols as_name =
let hash_names = Hashtbl.create 10 in
+ Hashtbl.add hash_names "_ANONVAR_" 1; (* ignoring anonymous variables *)
(String.concat ", " (List.filter(fun x -> (String.compare x "") != 0) (List.mapi(fun n x ->
match x with
| ParamI i -> ""
@@ -304,6 +305,7 @@ let prepare_variables_selection cols as_name =
(*Returns an string containing the select information deleting the repeated names for strings in cols*)
let s_prepare_variables_selection cols as_name =
let hash_names = Hashtbl.create 10 in
+ Hashtbl.add hash_names "_ANONVAR_" 1; (* ignoring anonymous variables *)
(String.concat ", " (List.filter(fun x -> (String.compare x "") != 0) (List.mapi(fun n x ->
match x with
| ParamI i -> ""
@@ -333,7 +335,8 @@ let generate_select_restrictions cols as_name =
(param_to_string (List.nth cols n))^" = "^c
with Not_found ->
(*Init the list in the hash*)
- Hashtbl.add hash_names x (param_to_string (List.nth cols n));
+ if ((String.compare s "_ANONVAR_") != 0) then (* ignoring anonymous variables *)
+ Hashtbl.add hash_names x (param_to_string (List.nth cols n));
""
end
) as_name))
@@ -352,7 +355,8 @@ let s_generate_select_restrictions cols as_name =
(List.nth cols n)^" = "^c
with Not_found ->
(*Init the list in the hash*)
- Hashtbl.add hash_names x (List.nth cols n);
+ if ((String.compare s "_ANONVAR_") != 0) then (* ignoring anonymous variables *)
+ Hashtbl.add hash_names x (List.nth cols n);
""
end
) as_name))
@@ -376,6 +380,10 @@ let with_keys = ref[];;
(* Subquery generator *)
let rec get_subquery e name col_names =
+ let num_anonym_columns = List.length (List.filter(fun x -> (String.compare (match x with
+ | ParamI i -> string_of_int i
+ | ParamS s -> s
+ ) "_ANONVAR_") == 0) (col_names)) in
let num_queried_columns = List.length col_names in
(*Printf.printf "Parameters(%i): '%s'\n" (List.length(Str.split (Str.regexp ",") col_names)) col_names;*)
(*Printf.printf "Call %s\n" name; flush stdout;*)
@@ -383,6 +391,8 @@ let rec get_subquery e name col_names =
if ((List.length predicates) = 0) then
(*It's an edb*)
let edb_cols = get_column name in
+ if num_queried_columns == num_anonym_columns then
+ raise (QueryError ("Relation '"^name^"' should have at least 1 non anymous variable!"));
if num_queried_columns > (List.length edb_cols) then
raise (QueryError ("Relation '"^name^"' has "^(string_of_int (List.length edb_cols))^" columns but you queried "^(string_of_int num_queried_columns)^"."))
else
@@ -429,6 +439,8 @@ let rec get_subquery e name col_names =
(*Printf.printf "Head columns(%i): %s\n" (List.length head_cols) (String.concat "," (List.map(fun x -> param_to_string x) head_cols));*)
let lrel = get_rel predicate in
(*Printf.printf "Number of relations: %i\n" (List.length lrel);*)
+ if num_queried_columns == num_anonym_columns then
+ raise (QueryError ("Relation '"^name^"' should have at least 1 non anymous variable!"));
if num_queried_columns > (List.length head_cols) then
raise (QueryError ("Relation '"^name^"' has "^(string_of_int (List.length head_cols))^" columns but you queried "^(string_of_int num_queried_columns)^"."))
else
View
9 examples.lang
@@ -305,6 +305,10 @@ Q(x,1,z):-Marks(x,y,z).
?-Q(x,y,z).
/
+Q(x,1,z):-Marks(x,_,z).
+?-Q(x,y,z).
+/
+
Q(0,1,2):-Marks(x,y,z).
?-Q(x,y,z).
/
@@ -318,6 +322,10 @@ Q(x,y,z):-Marks(x,y,z).
?-Q(1,y,z).
/
+Q(x,y):-Marks(x,y,y).
+?-Q(1,y).
+/
+
Q(x,y,z):-Marks(x,y,z).
R(x,y):-Q(x,y,75).
?-R(x,y).
@@ -425,3 +433,4 @@ R(x,y,z,2):-Q(x,y,z).
#changeout stdout/
#reconnect localhost 5432 postgres postgres test_db/
#quit/
+
View
568 lexer.ml
@@ -7,154 +7,154 @@
# 8 "lexer.ml"
let __ocaml_lex_tables = {
Lexing.lex_base =
- "\000\000\233\255\003\000\030\000\239\255\240\255\241\255\242\255\
- \014\000\048\000\245\255\078\000\156\000\182\000\004\001\082\001\
- \160\001\238\001\254\255\255\255\060\002\138\002\216\002\038\003\
- \253\255\116\003\142\003\244\255\243\255\234\255\236\255\235\255\
- ";
+ "\000\000\230\255\231\255\232\255\003\000\030\000\238\255\239\255\
+ \240\255\241\255\014\000\048\000\244\255\078\000\160\000\186\000\
+ \008\001\086\001\164\001\242\001\254\255\255\255\064\002\142\002\
+ \220\002\042\003\253\255\120\003\146\003\243\255\242\255\233\255\
+ \235\255\234\255";
Lexing.lex_backtrk =
- "\255\255\255\255\018\000\017\000\255\255\255\255\255\255\255\255\
- \255\255\255\255\255\255\009\000\007\000\255\255\009\000\004\000\
- \003\000\007\000\255\255\255\255\008\000\007\000\007\000\007\000\
- \255\255\005\000\006\000\255\255\255\255\255\255\255\255\255\255\
- ";
+ "\255\255\255\255\255\255\255\255\019\000\018\000\255\255\255\255\
+ \255\255\255\255\025\000\025\000\255\255\010\000\008\000\025\000\
+ \005\000\004\000\003\000\008\000\255\255\255\255\009\000\008\000\
+ \008\000\008\000\255\255\006\000\007\000\255\255\255\255\255\255\
+ \255\255\255\255";
Lexing.lex_default =
- "\255\255\000\000\255\255\255\255\000\000\000\000\000\000\000\000\
- \255\255\255\255\000\000\255\255\255\255\255\255\255\255\255\255\
- \255\255\255\255\000\000\000\000\255\255\255\255\255\255\255\255\
- \000\000\255\255\255\255\000\000\000\000\000\000\000\000\000\000\
- ";
+ "\001\000\000\000\000\000\000\000\255\255\255\255\000\000\000\000\
+ \000\000\000\000\255\255\255\255\000\000\255\255\255\255\255\255\
+ \255\255\255\255\255\255\255\255\000\000\000\000\255\255\255\255\
+ \255\255\255\255\000\000\255\255\255\255\000\000\000\000\000\000\
+ \000\000\000\000";
Lexing.lex_trans =
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
- \000\000\019\000\018\000\000\000\000\000\000\000\000\000\000\000\
+ \000\000\021\000\020\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
- \019\000\000\000\000\000\013\000\000\000\000\000\000\000\000\000\
- \006\000\005\000\000\000\000\000\007\000\011\000\010\000\001\000\
+ \021\000\000\000\000\000\015\000\000\000\000\000\000\000\000\000\
+ \008\000\007\000\000\000\000\000\009\000\013\000\012\000\003\000\
+ \017\000\017\000\017\000\017\000\017\000\017\000\017\000\017\000\
+ \017\000\017\000\011\000\030\000\005\000\006\000\004\000\010\000\
+ \033\000\016\000\016\000\016\000\016\000\016\000\016\000\016\000\
\016\000\016\000\016\000\016\000\016\000\016\000\016\000\016\000\
- \016\000\016\000\009\000\028\000\003\000\004\000\002\000\008\000\
- \031\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\
- \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\
- \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\
- \015\000\015\000\015\000\030\000\029\000\027\000\000\000\014\000\
- \000\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\017\000\012\000\011\000\000\000\000\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\000\000\000\000\000\000\000\000\011\000\000\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\020\000\000\000\000\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\000\000\000\000\
- \000\000\000\000\000\000\000\000\000\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\000\000\
- \000\000\000\000\000\000\020\000\000\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\026\000\
- \026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\
- \026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\
- \026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\
- \026\000\011\000\000\000\000\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\000\000\000\000\
- \000\000\000\000\000\000\000\000\000\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\025\000\000\000\
- \000\000\000\000\000\000\011\000\000\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\025\000\020\000\
- \000\000\000\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\000\000\000\000\000\000\000\000\
- \000\000\000\000\000\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\000\000\000\000\000\000\
- \000\000\020\000\000\000\015\000\015\000\015\000\015\000\015\000\
- \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\
- \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\
- \015\000\015\000\015\000\015\000\015\000\011\000\000\000\000\000\
\016\000\016\000\016\000\016\000\016\000\016\000\016\000\016\000\
- \016\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\
- \000\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\000\000\000\000\000\000\000\000\011\000\
- \000\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\020\000\000\000\000\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\000\000\000\000\000\000\000\000\020\000\000\000\021\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\020\000\000\000\000\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\000\000\000\000\
- \000\000\000\000\000\000\000\000\000\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\000\000\
- \000\000\000\000\000\000\020\000\000\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \000\000\000\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\000\000\000\000\000\000\000\000\
- \000\000\000\000\000\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\000\000\000\000\000\000\
- \000\000\020\000\000\000\012\000\012\000\012\000\022\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\020\000\000\000\000\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\
- \000\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\000\000\000\000\000\000\000\000\020\000\
- \000\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\023\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\020\000\000\000\000\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \000\000\000\000\000\000\000\000\024\000\000\000\000\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\000\000\000\000\000\000\000\000\020\000\000\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\011\000\000\000\000\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\000\000\000\000\
- \000\000\000\000\000\000\000\000\000\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\025\000\000\000\
- \000\000\000\000\000\000\011\000\000\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\025\000\026\000\
- \026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\
- \026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\
- \026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\
- \026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+ \016\000\016\000\016\000\032\000\031\000\029\000\000\000\018\000\
+ \000\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\019\000\014\000\013\000\000\000\000\000\013\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\000\000\000\000\000\000\000\000\013\000\000\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\000\000\000\000\000\000\000\000\022\000\000\000\000\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\000\000\000\000\000\000\000\000\000\000\000\000\
+ \000\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\000\000\000\000\000\000\000\000\022\000\
+ \002\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\028\000\028\000\028\000\028\000\028\000\
+ \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
+ \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
+ \028\000\028\000\028\000\028\000\028\000\022\000\000\000\000\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\000\000\000\000\000\000\000\000\000\000\000\000\
+ \000\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\000\000\000\000\000\000\000\000\022\000\
+ \000\000\016\000\016\000\016\000\016\000\016\000\016\000\016\000\
+ \016\000\016\000\016\000\016\000\016\000\016\000\016\000\016\000\
+ \016\000\016\000\016\000\016\000\016\000\016\000\016\000\016\000\
+ \016\000\016\000\016\000\013\000\000\000\000\000\017\000\017\000\
+ \017\000\017\000\017\000\017\000\017\000\017\000\017\000\017\000\
+ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\000\000\000\000\000\000\000\000\013\000\000\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\013\000\000\000\000\000\013\000\013\000\013\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\000\000\000\000\
+ \000\000\000\000\000\000\000\000\000\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\000\000\
+ \000\000\000\000\000\000\013\000\000\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\022\000\
+ \000\000\000\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\000\000\000\000\000\000\000\000\
+ \000\000\000\000\000\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\000\000\000\000\000\000\
+ \000\000\022\000\000\000\023\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\022\000\000\000\000\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\000\000\000\000\000\000\000\000\000\000\000\000\
+ \000\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\000\000\000\000\000\000\000\000\022\000\
+ \000\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\000\000\000\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\000\000\000\000\000\000\000\000\022\000\000\000\014\000\
+ \014\000\014\000\024\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\022\000\000\000\000\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\000\000\000\000\
+ \000\000\000\000\000\000\000\000\000\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\000\000\
+ \000\000\000\000\000\000\022\000\000\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\025\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\022\000\
+ \000\000\000\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\000\000\000\000\000\000\000\000\
+ \026\000\000\000\000\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
+ \022\000\022\000\022\000\022\000\022\000\000\000\000\000\000\000\
+ \000\000\022\000\000\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\014\000\014\000\013\000\000\000\000\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\013\000\000\000\000\000\000\000\000\000\000\000\000\000\
+ \000\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\000\000\000\000\000\000\000\000\013\000\
+ \000\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\028\000\028\000\028\000\028\000\028\000\
+ \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
+ \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
+ \028\000\028\000\028\000\028\000\028\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
@@ -170,7 +170,8 @@ let __ocaml_lex_tables = {
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
- \000\000\000\000\000\000\000\000\000\000\000\000\000\000";
+ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+ \000\000\000\000\000\000";
Lexing.lex_check =
"\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
\255\255\000\000\000\000\255\255\255\255\255\255\255\255\255\255\
@@ -179,54 +180,35 @@ let __ocaml_lex_tables = {
\000\000\255\255\255\255\000\000\255\255\255\255\255\255\255\255\
\000\000\000\000\255\255\255\255\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
- \000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\
- \002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+ \000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\
+ \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
- \000\000\000\000\000\000\003\000\003\000\009\000\255\255\000\000\
+ \000\000\000\000\000\000\005\000\005\000\011\000\255\255\000\000\
\255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
- \000\000\000\000\000\000\011\000\255\255\255\255\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \255\255\255\255\255\255\255\255\255\255\255\255\255\255\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\255\255\255\255\255\255\255\255\011\000\255\255\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
- \011\000\012\000\255\255\255\255\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\255\255\255\255\
- \255\255\255\255\255\255\255\255\255\255\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\255\255\
- \255\255\255\255\255\255\012\000\255\255\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
- \012\000\012\000\012\000\012\000\012\000\012\000\012\000\013\000\
+ \000\000\000\000\000\000\013\000\255\255\255\255\013\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\013\000\
\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
\013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
- \013\000\014\000\255\255\255\255\014\000\014\000\014\000\014\000\
- \014\000\014\000\014\000\014\000\014\000\014\000\255\255\255\255\
- \255\255\255\255\255\255\255\255\255\255\014\000\014\000\014\000\
+ \013\000\255\255\255\255\255\255\255\255\013\000\255\255\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
+ \013\000\255\255\255\255\255\255\255\255\014\000\255\255\255\255\
\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\255\255\255\255\255\255\255\255\255\255\255\255\
+ \255\255\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
- \014\000\014\000\014\000\014\000\014\000\014\000\014\000\255\255\
- \255\255\255\255\255\255\014\000\255\255\014\000\014\000\014\000\
\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\255\255\255\255\255\255\255\255\014\000\
+ \000\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
\014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
- \014\000\014\000\014\000\014\000\014\000\014\000\014\000\015\000\
- \255\255\255\255\015\000\015\000\015\000\015\000\015\000\015\000\
- \015\000\015\000\015\000\015\000\255\255\255\255\255\255\255\255\
- \255\255\255\255\255\255\015\000\015\000\015\000\015\000\015\000\
- \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\
- \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\
- \015\000\015\000\015\000\015\000\015\000\255\255\255\255\255\255\
- \255\255\015\000\255\255\015\000\015\000\015\000\015\000\015\000\
+ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\
+ \014\000\014\000\014\000\015\000\015\000\015\000\015\000\015\000\
\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\
\015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\
\015\000\015\000\015\000\015\000\015\000\016\000\255\255\255\255\
@@ -249,26 +231,26 @@ let __ocaml_lex_tables = {
\017\000\017\000\017\000\017\000\017\000\017\000\017\000\017\000\
\017\000\017\000\017\000\017\000\017\000\017\000\017\000\017\000\
\017\000\017\000\017\000\017\000\017\000\017\000\017\000\017\000\
- \017\000\020\000\255\255\255\255\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\255\255\255\255\
- \255\255\255\255\255\255\255\255\255\255\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\255\255\
- \255\255\255\255\255\255\020\000\255\255\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
- \020\000\020\000\020\000\020\000\020\000\020\000\020\000\021\000\
- \255\255\255\255\021\000\021\000\021\000\021\000\021\000\021\000\
- \021\000\021\000\021\000\021\000\255\255\255\255\255\255\255\255\
- \255\255\255\255\255\255\021\000\021\000\021\000\021\000\021\000\
- \021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\
- \021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\
- \021\000\021\000\021\000\021\000\021\000\255\255\255\255\255\255\
- \255\255\021\000\255\255\021\000\021\000\021\000\021\000\021\000\
- \021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\
- \021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\
- \021\000\021\000\021\000\021\000\021\000\022\000\255\255\255\255\
+ \017\000\018\000\255\255\255\255\018\000\018\000\018\000\018\000\
+ \018\000\018\000\018\000\018\000\018\000\018\000\255\255\255\255\
+ \255\255\255\255\255\255\255\255\255\255\018\000\018\000\018\000\
+ \018\000\018\000\018\000\018\000\018\000\018\000\018\000\018\000\
+ \018\000\018\000\018\000\018\000\018\000\018\000\018\000\018\000\
+ \018\000\018\000\018\000\018\000\018\000\018\000\018\000\255\255\
+ \255\255\255\255\255\255\018\000\255\255\018\000\018\000\018\000\
+ \018\000\018\000\018\000\018\000\018\000\018\000\018\000\018\000\
+ \018\000\018\000\018\000\018\000\018\000\018\000\018\000\018\000\
+ \018\000\018\000\018\000\018\000\018\000\018\000\018\000\019\000\
+ \255\255\255\255\019\000\019\000\019\000\019\000\019\000\019\000\
+ \019\000\019\000\019\000\019\000\255\255\255\255\255\255\255\255\
+ \255\255\255\255\255\255\019\000\019\000\019\000\019\000\019\000\
+ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\
+ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\
+ \019\000\019\000\019\000\019\000\019\000\255\255\255\255\255\255\
+ \255\255\019\000\255\255\019\000\019\000\019\000\019\000\019\000\
+ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\
+ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\
+ \019\000\019\000\019\000\019\000\019\000\022\000\255\255\255\255\
\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
\022\000\022\000\255\255\255\255\255\255\255\255\255\255\255\255\
\255\255\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
@@ -280,7 +262,7 @@ let __ocaml_lex_tables = {
\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
\022\000\022\000\022\000\023\000\255\255\255\255\023\000\023\000\
\023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\
- \255\255\255\255\255\255\255\255\023\000\255\255\255\255\023\000\
+ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\023\000\
\023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\
\023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\
\023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\
@@ -288,20 +270,40 @@ let __ocaml_lex_tables = {
\023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\
\023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\
\023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\
- \023\000\025\000\255\255\255\255\025\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\255\255\255\255\
- \255\255\255\255\255\255\255\255\255\255\025\000\025\000\025\000\
+ \023\000\024\000\255\255\255\255\024\000\024\000\024\000\024\000\
+ \024\000\024\000\024\000\024\000\024\000\024\000\255\255\255\255\
+ \255\255\255\255\255\255\255\255\255\255\024\000\024\000\024\000\
+ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\
+ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\
+ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\255\255\
+ \255\255\255\255\255\255\024\000\255\255\024\000\024\000\024\000\
+ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\
+ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\
+ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\025\000\
+ \255\255\255\255\025\000\025\000\025\000\025\000\025\000\025\000\
+ \025\000\025\000\025\000\025\000\255\255\255\255\255\255\255\255\
+ \025\000\255\255\255\255\025\000\025\000\025\000\025\000\025\000\
\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\025\000\255\255\
- \255\255\255\255\255\255\025\000\255\255\025\000\025\000\025\000\
+ \025\000\025\000\025\000\025\000\025\000\255\255\255\255\255\255\
+ \255\255\025\000\255\255\025\000\025\000\025\000\025\000\025\000\
\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
- \025\000\025\000\025\000\025\000\025\000\025\000\025\000\026\000\
- \026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\
- \026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\
- \026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\
- \026\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+ \025\000\025\000\025\000\025\000\025\000\027\000\255\255\255\255\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\255\255\255\255\255\255\255\255\255\255\255\255\
+ \255\255\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\255\255\255\255\255\255\255\255\027\000\
+ \255\255\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
+ \027\000\027\000\027\000\028\000\028\000\028\000\028\000\028\000\
+ \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
+ \028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
+ \028\000\028\000\028\000\028\000\028\000\255\255\255\255\255\255\
+ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
@@ -317,7 +319,7 @@ let __ocaml_lex_tables = {
\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
- \255\255\255\255\255\255\255\255\255\255\255\255\255\255";
+ \255\255\255\255\255\255";
Lexing.lex_base_code =
"";
Lexing.lex_backtrk_code =
@@ -339,55 +341,60 @@ and __ocaml_lex_token_rec lexbuf __ocaml_lex_state =
| 0 ->
# 8 "lexer.mll"
( token lexbuf )
-# 343 "lexer.ml"
+# 345 "lexer.ml"
| 1 ->
# 9 "lexer.mll"
( token lexbuf )
-# 348 "lexer.ml"
+# 350 "lexer.ml"
| 2 ->
# 10 "lexer.mll"
( token lexbuf )
-# 353 "lexer.ml"
+# 355 "lexer.ml"
| 3 ->
-let
# 11 "lexer.mll"
- lxm
-# 359 "lexer.ml"
-= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
-# 11 "lexer.mll"
- ( VAL(int_of_string lxm) )
-# 363 "lexer.ml"
+ ( ANON_VAR )
+# 360 "lexer.ml"
| 4 ->
let
# 12 "lexer.mll"
- lxm
-# 369 "lexer.ml"
+ lxm
+# 366 "lexer.ml"
= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 12 "lexer.mll"
- ( RELNAME(lxm) )
-# 373 "lexer.ml"
+ ( VAL(int_of_string lxm) )
+# 370 "lexer.ml"
| 5 ->
let
# 13 "lexer.mll"
- lxm
-# 379 "lexer.ml"
+ lxm
+# 376 "lexer.ml"
= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 13 "lexer.mll"
- ( BOOLPRED(lxm) )
-# 383 "lexer.ml"
+ ( RELNAME(lxm) )
+# 380 "lexer.ml"
| 6 ->
let
# 14 "lexer.mll"
- cmd
-# 389 "lexer.ml"
+ lxm
+# 386 "lexer.ml"
= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
# 14 "lexer.mll"
+ ( BOOLPRED(lxm) )
+# 390 "lexer.ml"
+
+ | 7 ->
+let
+# 15 "lexer.mll"
+ cmd
+# 396 "lexer.ml"
+= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
+# 15 "lexer.mll"
(match cmd with
| "#testcommand" -> TESTCOMM
| "#reconnect" -> RECONNECT
@@ -400,15 +407,15 @@ let
| "#getdb" -> GETDBCOMM
| _ -> UNKNOWNCOMM
)
-# 404 "lexer.ml"
+# 411 "lexer.ml"
- | 7 ->
+ | 8 ->
let
-# 26 "lexer.mll"
+# 27 "lexer.mll"
lxm
-# 410 "lexer.ml"
+# 417 "lexer.ml"
= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
-# 26 "lexer.mll"
+# 27 "lexer.mll"
( match lxm with
| "and" -> AND
| "not" -> NOT
@@ -419,92 +426,107 @@ let
| "where" -> WHERE
| _ -> VARNAME(lxm)
)
-# 423 "lexer.ml"
+# 430 "lexer.ml"
- | 8 ->
+ | 9 ->
let
-# 36 "lexer.mll"
+# 37 "lexer.mll"
lxm
-# 429 "lexer.ml"
+# 436 "lexer.ml"
= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
-# 36 "lexer.mll"
+# 37 "lexer.mll"
( ANYNAME(lxm) )
-# 433 "lexer.ml"
+# 440 "lexer.ml"
- | 9 ->
+ | 10 ->
let
-# 37 "lexer.mll"
+# 38 "lexer.mll"
lxm
-# 439 "lexer.ml"
+# 446 "lexer.ml"
= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
-# 37 "lexer.mll"
- ( PASSNAME(lxm) )
-# 443 "lexer.ml"
-
- | 10 ->
# 38 "lexer.mll"
- ( DOT )
-# 448 "lexer.ml"
+ ( PASSNAME(lxm) )
+# 450 "lexer.ml"
| 11 ->
# 39 "lexer.mll"
- ( IMPLIEDBY )
-# 453 "lexer.ml"
+ ( DOT )
+# 455 "lexer.ml"
| 12 ->
# 40 "lexer.mll"
- ( QMARK )
-# 458 "lexer.ml"
+ ( IMPLIEDBY )
+# 460 "lexer.ml"
| 13 ->
# 41 "lexer.mll"
- ( SEP )
-# 463 "lexer.ml"
+ ( QMARK )
+# 465 "lexer.ml"
| 14 ->
# 42 "lexer.mll"
- ( LPAREN )
-# 468 "lexer.ml"
+ ( SEP )
+# 470 "lexer.ml"
| 15 ->
# 43 "lexer.mll"
- ( RPAREN )
-# 473 "lexer.ml"
+ ( LPAREN )
+# 475 "lexer.ml"
| 16 ->
# 44 "lexer.mll"
- ( EQ )
-# 478 "lexer.ml"
+ ( RPAREN )
+# 480 "lexer.ml"
| 17 ->
# 45 "lexer.mll"
- ( LE )
-# 483 "lexer.ml"
+ ( EQ )
+# 485 "lexer.ml"
| 18 ->
# 46 "lexer.mll"
- ( GR )
-# 488 "lexer.ml"
+ ( LE )
+# 490 "lexer.ml"
| 19 ->
# 47 "lexer.mll"
- ( LQ )
-# 493 "lexer.ml"
+ ( GR )
+# 495 "lexer.ml"
| 20 ->
# 48 "lexer.mll"
- ( GQ )
-# 498 "lexer.ml"
+ ( LQ )
+# 500 "lexer.ml"
| 21 ->
# 49 "lexer.mll"
- ( NE )
-# 503 "lexer.ml"
+ ( GQ )
+# 505 "lexer.ml"
| 22 ->
# 50 "lexer.mll"
+ ( NE )
+# 510 "lexer.ml"
+
+ | 23 ->
+# 51 "lexer.mll"
( EOP )
-# 508 "lexer.ml"
+# 515 "lexer.ml"
+
+ | 24 ->
+# 52 "lexer.mll"
+ ( raise End_of_file )
+# 520 "lexer.ml"
+
+ | 25 ->
+let
+# 53 "lexer.mll"
+ c
+# 526 "lexer.ml"
+= Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
+# 53 "lexer.mll"
+ ( Printf.printf "Warning: unknown symbol is ignored: %c\n" c; token lexbuf )
+# 530 "lexer.ml"
| __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_token_rec lexbuf __ocaml_lex_state
View
4 lexer.mll
@@ -8,6 +8,7 @@
| [' ' '\t'] { token lexbuf } (* skip blanks *)
| ['\n' ] { token lexbuf } (* skip newline *)
| "yadi>" { token lexbuf } (* skip prompt info *)
+ | '_' { ANON_VAR }
| ['0'-'9']+ as lxm { VAL(int_of_string lxm) }
| ['A'-'Z']['a'-'z']* as lxm { RELNAME(lxm) }
| ['_']['A'-'Z' 'a'-'z']+ as lxm { BOOLPRED(lxm) }
@@ -48,5 +49,6 @@
| ">=" { GQ }
| "<>" { NE }
| '/' { EOP }
+ | eof { raise End_of_file }
+ | _ as c { Printf.printf "Warning: unknown symbol is ignored: %c\n" c; token lexbuf }
-
View
49 main.ml
@@ -2,6 +2,7 @@ open Lexer ;;
exception Eof ;;
exception GO_QUERY ;;
exception GO_RECONN ;;
+exception ERROR_DONE ;;
exception GO_CHANGEOUT ;;
exception GO_READSCRIPT ;;
exception GO_TABINFO ;;
@@ -144,12 +145,13 @@ let main () =
curr_lexbuf := Lexing.from_channel !infile_ref;
while true do
try
+ Lexing.flush_input !curr_lexbuf;
if !infile_ref == stdin then fprintf stdout "yadi$ "; flush !outfile_ref; flush stdout;
(*print_endline (Expr.to_string ast); flush stdout;*)
let ast = Parser.main Lexer.token !curr_lexbuf in
try
let aux_arg = ref "" in
- if Eval.is_command ast then temp_str := Eval.eval_command (Eval.get_command ast) aux_arg else raise(GO_QUERY);
+ if Eval.is_command ast then temp_str := Eval.eval_command (Eval.get_command ast) aux_arg else raise(GO_QUERY);
try
(*if !temp_str = "" then printf "\n" else raise(GO_RECONN);*)
match !aux_arg with
@@ -175,7 +177,7 @@ let main () =
infile_ref := open_in !temp_str;
curr_lexbuf := Lexing.from_channel !infile_ref;
with _ ->
- fprintf stderr "Error: can't open the required file!\n"; flush !errfile_ref;
+ fprintf !errfile_ref "Error: can't open the required file!\n"; flush !errfile_ref;
;
| GO_CHANGEOUT ->
try
@@ -183,7 +185,7 @@ let main () =
| "stdout" -> close_out !outfile_ref; outfile_ref := stdout;
| _ -> outfile_ref := open_out !temp_str;
with _ ->
- fprintf stderr "Error: can't open the required file!\n"; flush !errfile_ref;
+ fprintf !errfile_ref "Error: can't open the required file!\n"; flush !errfile_ref;
;
| GO_TABINFO ->
!c#send_query !temp_str;
@@ -199,13 +201,39 @@ let main () =
with
Eval.QueryError explanation -> fprintf !outfile_ref "%s\n" explanation; flush !outfile_ref
;
- with Failure arg ->
- match arg with
- | "lexing: empty token" -> if !infile_ref == stdin then failwith(arg);
- close_in !infile_ref;
- infile_ref := stdin;
- curr_lexbuf := Lexing.from_channel !infile_ref;
- | _ -> failwith(arg);
+ with
+ | End_of_file ->
+ if !infile_ref != stdin then close_in !infile_ref;
+ infile_ref := stdin;
+ curr_lexbuf := Lexing.from_channel !infile_ref;
+ | Failure arg ->
+ fprintf !errfile_ref "Error: %s\n" arg; flush !errfile_ref;
+ | Invalid_argument(arg) ->
+ fprintf !errfile_ref "Fatal error: %s\n" arg; flush !errfile_ref;
+ fprintf !errfile_ref "It's recommended to close the program and report the bug to the authors of YADI in order to avoid unexpected behaviour! However, you can continue on your own risk!\n"; flush !errfile_ref;
+ | Parsing.Parse_error ->
+ let curr_pos = !curr_lexbuf.Lexing.lex_curr_p in
+ (*let curr_line = curr_pos.Lexing.pos_lnum in line number *)
+ let start_cnum = (Lexing.lexeme_start !curr_lexbuf) - curr_pos.Lexing.pos_bol in (* start offset in line *)
+ let curr_cnum = curr_pos.Lexing.pos_cnum - curr_pos.Lexing.pos_bol in (* end offset in line *)
+ let curr_tok = Lexing.lexeme !curr_lexbuf in (* current matched string *)
+ fprintf !errfile_ref "\nSyntax error! Wrong character sequence:\nPosition in line: (%d - %d)\nCharacter sequence: %s\nIgnoring everything up to the closest / symbol... If program stops, type \"/\" + enter\n\n" start_cnum curr_cnum curr_tok; flush !errfile_ref;
+ flush !outfile_ref;
+ try
+ while true do
+ let tmp_line = input_line !infile_ref in
+ match tmp_line
+ with
+ | _ -> if (String.contains tmp_line '/') then raise ERROR_DONE;
+ done;
+ with
+ | ERROR_DONE ->
+ fprintf !errfile_ref "\n"; flush !errfile_ref;
+ | End_of_file ->
+ if !infile_ref != stdin then close_in !infile_ref;
+ infile_ref := stdin;
+ curr_lexbuf := Lexing.from_channel !infile_ref;
+
done
with Eof ->
!c#finish; exit 0
@@ -217,3 +245,4 @@ let _ =
| Error e -> prerr_endline (string_of_error e)
| e -> prerr_endline (Printexc.to_string e)
;;
+
View
424 parser.ml
@@ -8,6 +8,7 @@ type token =
| IMPLIEDBY
| AND
| NOT
+ | ANON_VAR
| SELECT
| JOIN
| WHERE
@@ -44,38 +45,39 @@ open Parsing;;
(* end preamble *)
-# 48 "parser.ml"
+# 49 "parser.ml"
let yytransl_const = [|
261 (* QMARK *);
262 (* DOT *);
263 (* IMPLIEDBY *);
264 (* AND *);
265 (* NOT *);
- 266 (* SELECT *);
- 267 (* JOIN *);
- 268 (* WHERE *);
- 269 (* WHERENOT *);
- 270 (* EQ *);
- 271 (* LE *);
- 272 (* GR *);
- 273 (* LQ *);
- 274 (* GQ *);
- 275 (* NE *);
- 276 (* LPAREN *);
- 277 (* RPAREN *);
- 278 (* SEP *);
- 279 (* EOP *);
- 280 (* ANON *);
- 281 (* TESTCOMM *);
- 282 (* RECONNECT *);
- 283 (* QUITCOMM *);
- 284 (* CHANGEOUT *);
- 285 (* READSCR *);
- 286 (* HELPCOMM *);
- 287 (* UNKNOWNCOMM *);
- 288 (* TABINFOCOMM *);
- 289 (* GETTABLECOMM *);
- 290 (* GETDBCOMM *);
+ 266 (* ANON_VAR *);
+ 267 (* SELECT *);
+ 268 (* JOIN *);
+ 269 (* WHERE *);
+ 270 (* WHERENOT *);
+ 271 (* EQ *);
+ 272 (* LE *);
+ 273 (* GR *);
+ 274 (* LQ *);
+ 275 (* GQ *);
+ 276 (* NE *);
+ 277 (* LPAREN *);
+ 278 (* RPAREN *);
+ 279 (* SEP *);
+ 280 (* EOP *);
+ 281 (* ANON *);
+ 282 (* TESTCOMM *);
+ 283 (* RECONNECT *);
+ 284 (* QUITCOMM *);
+ 285 (* CHANGEOUT *);
+ 286 (* READSCR *);
+ 287 (* HELPCOMM *);
+ 288 (* UNKNOWNCOMM *);
+ 289 (* TABINFOCOMM *);
+ 290 (* GETTABLECOMM *);
+ 291 (* GETDBCOMM *);
0|]
let yytransl_block = [|
@@ -83,8 +85,8 @@ let yytransl_block = [|
258 (* RELNAME *);
259 (* VARNAME *);
260 (* BOOLPRED *);
- 291 (* ANYNAME *);
- 292 (* PASSNAME *);
+ 292 (* ANYNAME *);
+ 293 (* PASSNAME *);
0|]
let yylhs = "\255\255\
@@ -92,101 +94,108 @@ let yylhs = "\255\255\
\006\000\006\000\005\000\005\000\005\000\005\000\005\000\005\000\
\005\000\005\000\005\000\005\000\013\000\013\000\013\000\013\000\
\013\000\012\000\012\000\010\000\010\000\010\000\011\000\011\000\
-\011\000\011\000\009\000\007\000\014\000\015\000\008\000\017\000\
-\017\000\017\000\018\000\018\000\018\000\018\000\018\000\018\000\
-\016\000\020\000\019\000\023\000\023\000\023\000\023\000\023\000\
-\023\000\021\000\021\000\021\000\022\000\022\000\000\000"
+\011\000\011\000\011\000\009\000\007\000\014\000\015\000\008\000\
+\017\000\017\000\017\000\018\000\018\000\018\000\018\000\018\000\
+\018\000\016\000\019\000\021\000\020\000\025\000\025\000\025\000\
+\025\000\025\000\025\000\022\000\022\000\022\000\023\000\023\000\
+\023\000\024\000\024\000\026\000\026\000\026\000\000\000"
let yylen = "\002\000\
\001\000\002\000\002\000\001\000\001\000\001\000\002\000\001\000\
\001\000\001\000\002\000\006\000\002\000\002\000\001\000\001\000\
\001\000\001\000\002\000\002\000\001\000\001\000\001\000\001\000\
\001\000\003\000\001\000\001\000\001\000\001\000\001\000\001\000\
-\001\000\001\000\001\000\004\000\001\000\001\000\003\000\000\000\
-\001\000\003\000\001\000\002\000\001\000\002\000\001\000\002\000\
-\004\000\004\000\003\000\001\000\001\000\001\000\001\000\001\000\
-\001\000\000\000\001\000\003\000\001\000\001\000\002\000"
+\001\000\001\000\001\000\001\000\004\000\001\000\001\000\003\000\
+\000\000\001\000\003\000\001\000\002\000\001\000\002\000\001\000\
+\002\000\004\000\004\000\004\000\003\000\001\000\001\000\001\000\
+\001\000\001\000\001\000\000\000\001\000\003\000\000\000\001\000\
+\003\000\001\000\001\000\001\000\001\000\001\000\002\000"
let yydefred = "\000\000\
-\000\000\000\000\000\000\000\000\001\000\035\000\000\000\000\000\
+\000\000\000\000\000\000\000\000\001\000\036\000\000\000\000\000\
\015\000\000\000\000\000\000\000\016\000\000\000\017\000\018\000\
-\063\000\000\000\000\000\000\000\005\000\006\000\008\000\009\000\
-\010\000\000\000\037\000\000\000\000\000\011\000\029\000\030\000\
+\071\000\000\000\000\000\000\000\005\000\006\000\008\000\009\000\
+\010\000\000\000\038\000\000\000\000\000\011\000\029\000\030\000\
\028\000\000\000\000\000\013\000\014\000\025\000\021\000\022\000\
\023\000\024\000\019\000\020\000\002\000\003\000\007\000\000\000\
-\062\000\061\000\000\000\000\000\039\000\000\000\000\000\000\000\
-\000\000\000\000\043\000\000\000\041\000\045\000\047\000\000\000\
-\049\000\000\000\000\000\026\000\000\000\044\000\046\000\048\000\
-\036\000\000\000\057\000\052\000\053\000\054\000\055\000\056\000\
-\000\000\060\000\032\000\033\000\031\000\034\000\000\000\000\000\
-\042\000\051\000\012\000\050\000"
+\067\000\066\000\000\000\000\000\040\000\000\000\000\000\000\000\
+\000\000\000\000\000\000\000\000\042\000\044\000\046\000\048\000\
+\000\000\050\000\000\000\000\000\026\000\000\000\000\000\045\000\
+\047\000\049\000\037\000\000\000\059\000\054\000\055\000\056\000\
+\057\000\058\000\000\000\062\000\032\000\033\000\035\000\031\000\
+\034\000\000\000\069\000\068\000\070\000\000\000\000\000\000\000\
+\043\000\053\000\012\000\051\000\000\000\052\000\065\000"
let yydgoto = "\002\000\
\017\000\018\000\019\000\020\000\021\000\022\000\023\000\024\000\
-\025\000\035\000\087\000\036\000\043\000\026\000\058\000\027\000\
-\060\000\061\000\062\000\063\000\051\000\052\000\081\000"
+\025\000\035\000\090\000\036\000\043\000\026\000\059\000\027\000\
+\060\000\061\000\062\000\063\000\064\000\051\000\094\000\052\000\
+\083\000\095\000"
-let yysindex = "\014\000\
-\057\255\000\000\013\255\029\255\000\000\000\000\046\255\003\255\
-\000\000\003\255\003\255\006\255\000\000\047\255\000\000\000\000\
-\000\000\028\255\030\255\005\255\000\000\000\000\000\000\000\000\
-\000\000\042\255\000\000\011\255\049\255\000\000\000\000\000\000\
-\000\000\051\255\050\255\000\000\000\000\000\000\000\000\000\000\
-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\255\
-\000\000\000\000\036\255\038\255\000\000\003\255\003\255\041\255\
-\023\255\052\255\000\000\055\255\000\000\000\000\000\000\025\255\
-\000\000\011\255\000\255\000\000\011\255\000\000\000\000\000\000\
-\000\000\019\255\000\000\000\000\000\000\000\000\000\000\000\000\
-\011\255\000\000\000\000\000\000\000\000\000\000\003\255\043\255\
-\000\000\000\000\000\000\000\000"
+let yysindex = "\009\000\
+\024\255\000\000\246\254\022\255\000\000\000\000\028\255\004\255\
+\000\000\004\255\004\255\006\255\000\000\030\255\000\000\000\000\
+\000\000\007\255\010\255\003\255\000\000\000\000\000\000\000\000\
+\000\000\031\255\000\000\020\255\039\255\000\000\000\000\000\000\
+\000\000\036\255\058\255\000\000\000\000\000\000\000\000\000\000\
+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\059\255\
+\000\000\000\000\043\255\044\255\000\000\004\255\004\255\045\255\
+\055\255\040\255\069\255\070\255\000\000\000\000\000\000\000\000\
+\054\255\000\000\020\255\255\254\000\000\012\255\020\255\000\000\
+\000\000\000\000\000\000\059\255\000\000\000\000\000\000\000\000\
+\000\000\000\000\020\255\000\000\000\000\000\000\000\000\000\000\
+\000\000\004\255\000\000\000\000\000\000\057\255\060\255\062\255\
+\000\000\000\000\000\000\000\000\012\255\000\000\000\000"
let yyrindex = "\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-\000\000\000\000\000\000\044\255\000\000\000\000\000\000\000\000\
-\000\000\000\000\000\000\045\255\000\000\000\000\000\000\000\000\
-\000\000\000\000\053\255\000\000\000\000\000\000\000\000\000\000\
-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\026\255\
-\000\000\000\000\000\000\048\255\000\000\000\000\000\000\000\000\
-\000\000\000\000\000\000\059\255\000\000\000\000\000\000\000\000\
-\000\000\045\255\000\000\000\000\045\255\000\000\000\000\000\000\
+\000\000\000\000\000\000\053\255\000\000\000\000\000\000\000\000\
+\000\000\000\000\000\000\063\255\000\000\000\000\000\000\000\000\
+\000\000\000\000\056\255\000\000\000\000\000\000\000\000\000\000\
+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\255\
+\000\000\000\000\000\000\064\255\000\000\000\000\000\000\000\000\
+\000\000\000\000\000\000\075\255\000\000\000\000\000\000\000\000\
+\000\000\000\000\063\255\000\000\000\000\065\255\063\255\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-\000\000\000\000\000\000\000\000"
+\000\000\000\000\000\000\000\000\000\000\000\000\066\255\000\000\
+\000\000\000\000\000\000\000\000\065\255\000\000\000\000"
let yygindex = "\000\000\
-\000\000\000\000\000\000\000\000\000\000\048\000\000\000\000\000\
-\000\000\248\255\000\000\059\000\000\000\000\000\000\000\253\255\
-\000\000\254\255\016\000\017\000\198\255\212\255\000\000"
+\000\000\000\000\000\000\000\000\000\000\069\000\000\000\000\000\
+\000\000\248\255\000\000\079\000\000\000\000\000\000\000\087\000\
+\000\000\016\000\035\000\036\000\037\000\201\255\251\255\212\255\
+\000\000\000\000"
-let yytablesize = 91
+let yytablesize = 96
let yytable = "\034\000\
-\029\000\083\000\084\000\064\000\031\000\032\000\003\000\082\000\
-\038\000\004\000\088\000\049\000\064\000\050\000\001\000\039\000\
-\040\000\041\000\042\000\049\000\003\000\050\000\056\000\049\000\
-\003\000\050\000\056\000\057\000\006\000\064\000\003\000\040\000\
-\028\000\040\000\085\000\086\000\090\000\033\000\075\000\076\000\
-\077\000\078\000\079\000\080\000\059\000\067\000\068\000\030\000\
-\048\000\044\000\045\000\054\000\046\000\070\000\053\000\055\000\
-\065\000\073\000\003\000\066\000\069\000\004\000\074\000\092\000\
-\038\000\058\000\004\000\047\000\059\000\037\000\059\000\089\000\
-\071\000\072\000\000\000\027\000\000\000\000\000\091\000\005\000\
+\085\000\086\000\087\000\065\000\003\000\031\000\032\000\004\000\
+\038\000\001\000\028\000\084\000\091\000\065\000\092\000\096\000\
+\039\000\040\000\041\000\042\000\049\000\093\000\050\000\003\000\
+\041\000\003\000\041\000\006\000\004\000\030\000\045\000\065\000\
+\044\000\046\000\088\000\089\000\054\000\048\000\098\000\033\000\
+\049\000\056\000\050\000\057\000\053\000\068\000\069\000\005\000\
\006\000\007\000\008\000\009\000\010\000\011\000\012\000\013\000\
-\014\000\015\000\016\000"
+\014\000\015\000\016\000\049\000\056\000\050\000\057\000\055\000\
+\066\000\070\000\067\000\058\000\077\000\078\000\079\000\080\000\
+\081\000\082\000\075\000\071\000\004\000\076\000\100\000\027\000\
+\039\000\099\000\101\000\102\000\060\000\061\000\063\000\064\000\
+\047\000\037\000\029\000\097\000\072\000\073\000\074\000\103\000"
let yycheck = "\008\000\
-\004\000\002\001\003\001\048\000\002\001\003\001\002\001\066\000\
-\003\001\005\001\069\000\001\001\057\000\003\001\001\000\010\001\
-\011\001\012\001\013\001\001\001\002\001\003\001\004\001\001\001\
-\002\001\003\001\004\001\009\001\024\001\074\000\002\001\006\001\
-\020\001\008\001\035\001\036\001\081\000\035\001\014\001\015\001\
-\016\001\017\001\018\001\019\001\048\000\054\000\055\000\002\001\
-\007\001\003\001\023\001\001\001\023\001\057\000\006\001\006\001\
-\021\001\006\001\002\001\022\001\020\001\005\001\008\001\021\001\
-\006\001\021\001\023\001\020\000\021\001\011\000\074\000\074\000\
-\057\000\057\000\255\255\023\001\255\255\255\255\087\000\023\001\
-\024\001\025\001\026\001\027\001\028\001\029\001\030\001\031\001\
-\032\001\033\001\034\001"
+\002\001\003\001\004\001\048\000\002\001\002\001\003\001\005\001\
+\003\001\001\000\021\001\067\000\001\001\058\000\003\001\071\000\
+\011\001\012\001\013\001\014\001\001\001\010\001\003\001\002\001\
+\006\001\002\001\008\001\025\001\005\001\002\001\024\001\076\000\
+\003\001\024\001\036\001\037\001\001\001\007\001\083\000\036\001\
+\001\001\002\001\003\001\004\001\006\001\054\000\055\000\024\001\
+\025\001\026\001\027\001\028\001\029\001\030\001\031\001\032\001\
+\033\001\034\001\035\001\001\001\002\001\003\001\004\001\006\001\
+\022\001\021\001\023\001\009\001\015\001\016\001\017\001\018\001\
+\019\001\020\001\006\001\021\001\024\001\008\001\022\001\024\001\
+\006\001\090\000\023\001\022\001\022\001\022\001\022\001\022\001\
+\020\000\011\000\004\000\076\000\058\000\058\000\058\000\101\000"
let yynames_const = "\
QMARK\000\
@@ -194,6 +203,7 @@ let yynames_const = "\
IMPLIEDBY\000\
AND\000\
NOT\000\
+ ANON_VAR\000\
SELECT\000\
JOIN\000\
WHERE\000\
@@ -235,43 +245,43 @@ let yyact = [|
; (fun __caml_parser_env ->
Obj.repr(
# 42 "parser.mly"
- ( failwith "main: where's my program?!")
-# 240 "parser.ml"
+ ( failwith "Empty command or query!")
+# 250 "parser.ml"
: Expr.expr))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 1 : 'program) in
Obj.repr(
# 43 "parser.mly"
( Prog _1 )
-# 247 "parser.ml"
+# 257 "parser.ml"
: Expr.expr))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 1 : 'commlist) in
Obj.repr(
# 44 "parser.mly"
( Comm _1 )
-# 254 "parser.ml"
+# 264 "parser.ml"
: Expr.expr))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'exprlist) in
Obj.repr(
# 48 "parser.mly"
( _1 )
-# 261 "parser.ml"
+# 271 "parser.ml"
: 'program))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'command) in
Obj.repr(
# 52 "parser.mly"
( _1 (*:: [] *) )
-# 268 "parser.ml"
+# 278 "parser.ml"
: 'commlist))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
Obj.repr(
# 57 "parser.mly"
( _1 :: [] )
-# 275 "parser.ml"
+# 285 "parser.ml"
: 'exprlist))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 1 : 'exprlist) in
@@ -279,35 +289,35 @@ let yyact = [|
Obj.repr(
# 58 "parser.mly"
( _2 :: _1 )
-# 283 "parser.ml"
+# 293 "parser.ml"
: 'exprlist))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'rule) in
Obj.repr(
# 62 "parser.mly"
( _1 )
-# 290 "parser.ml"
+# 300 "parser.ml"
: 'expr))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'query) in
Obj.repr(
# 63 "parser.mly"
( _1 )
-# 297 "parser.ml"
+# 307 "parser.ml"
: 'expr))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'fact) in
Obj.repr(
# 64 "parser.mly"
( failwith "fact: to be implemented" )
-# 304 "parser.ml"
+# 314 "parser.ml"
: 'expr))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
# 68 "parser.mly"
( TestComm _2 )
-# 311 "parser.ml"
+# 321 "parser.ml"
: 'command))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 4 : 'reconn_param) in
@@ -318,160 +328,167 @@ let yyact = [|
Obj.repr(
# 69 "parser.mly"
( ReconnComm (_2,_3,_4,_5,_6) )
-# 322 "parser.ml"
+# 332 "parser.ml"
: 'command))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 0 : 'file_name) in
Obj.repr(
# 70 "parser.mly"
( ChangeOutComm _2 )
-# 329 "parser.ml"
+# 339 "parser.ml"
: 'command))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 0 : 'file_name) in
Obj.repr(
# 71 "parser.mly"
( ReadScriptComm _2 )
-# 336 "parser.ml"
+# 346 "parser.ml"
: 'command))
; (fun __caml_parser_env ->
Obj.repr(
# 72 "parser.mly"
( QuitCommand )
-# 342 "parser.ml"
+# 352 "parser.ml"
: 'command))
; (fun __caml_parser_env ->
Obj.repr(
# 73 "parser.mly"
( UnknownCommand )
-# 348 "parser.ml"
+# 358 "parser.ml"
: 'command))
; (fun __caml_parser_env ->
Obj.repr(
# 74 "parser.mly"
( GettablesCommand )
-# 354 "parser.ml"
+# 364 "parser.ml"
: 'command))
; (fun __caml_parser_env ->
Obj.repr(
# 75 "parser.mly"
( GetdbCommand )
-# 360 "parser.ml"
+# 370 "parser.ml"
: 'command))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 0 : 'help_param) in
Obj.repr(
# 76 "parser.mly"
( HelpCommand _2 )
-# 367 "parser.ml"
+# 377 "parser.ml"
: 'command))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
# 77 "parser.mly"
( TabinfoCommand _2)
-# 374 "parser.ml"
+# 384 "parser.ml"
: 'command))
; (fun __caml_parser_env ->
Obj.repr(
# 81 "parser.mly"
( Select )
-# 380 "parser.ml"
+# 390 "parser.ml"
: 'help_param))
; (fun __caml_parser_env ->
Obj.repr(
# 82 "parser.mly"
( Join )
-# 386 "parser.ml"
+# 396 "parser.ml"
: 'help_param))
; (fun __caml_parser_env ->
Obj.repr(
# 83 "parser.mly"
( Where )
-# 392 "parser.ml"
+# 402 "parser.ml"
: 'help_param))
; (fun __caml_parser_env ->
Obj.repr(
# 84 "parser.mly"
( WhereNot )
-# 398 "parser.ml"
+# 408 "parser.ml"
: 'help_param))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
# 85 "parser.mly"
( Other )
-# 405 "parser.ml"
+# 415 "parser.ml"
: 'help_param))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 2 : 'reconn_param) in
let _3 = (Parsing.peek_val __caml_parser_env 0 : 'reconn_param) in
Obj.repr(
-# 90 "parser.mly"
+# 89 "parser.mly"
( _1 ^ "." ^ _3 )
-# 413 "parser.ml"
+# 423 "parser.ml"
: 'file_name))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'reconn_param) in
Obj.repr(
-# 91 "parser.mly"
+# 90 "parser.mly"
( _1 )
-# 420 "parser.ml"
+# 430 "parser.ml"
: 'file_name))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
+# 93 "parser.mly"
+ ( _1 )
+# 437 "parser.ml"
+ : 'reconn_param))
+; (fun __caml_parser_env ->
+ let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
+ Obj.repr(
# 94 "parser.mly"
( _1 )
-# 427 "parser.ml"
+# 444 "parser.ml"
: 'reconn_param))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
# 95 "parser.mly"
( _1 )
-# 434 "parser.ml"
+# 451 "parser.ml"
: 'reconn_param))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
-# 96 "parser.mly"
+# 99 "parser.mly"
( _1 )
-# 441 "parser.ml"
- : 'reconn_param))
+# 458 "parser.ml"
+ : 'pass_param))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
# 100 "parser.mly"
( _1 )
-# 448 "parser.ml"
+# 465 "parser.ml"
: 'pass_param))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
# 101 "parser.mly"
( _1 )
-# 455 "parser.ml"
+# 472 "parser.ml"
: 'pass_param))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
# 102 "parser.mly"
( _1 )
-# 462 "parser.ml"
+# 479 "parser.ml"
: 'pass_param))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
# 103 "parser.mly"
( _1 )
-# 469 "parser.ml"
+# 486 "parser.ml"
: 'pass_param))
; (fun __caml_parser_env ->
Obj.repr(
# 107 "parser.mly"
( )
-# 475 "parser.ml"
+# 492 "parser.ml"
: 'fact))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 3 : 'head) in
@@ -479,41 +496,41 @@ let yyact = [|
Obj.repr(
# 111 "parser.mly"
( Rule (_1,_3) )
-# 483 "parser.ml"
+# 500 "parser.ml"
: 'rule))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'predicate) in
Obj.repr(
# 115 "parser.mly"
( _1 )
-# 490 "parser.ml"
+# 507 "parser.ml"
: 'head))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'litlist) in
Obj.repr(
# 119 "parser.mly"
( _1 )
-# 497 "parser.ml"
+# 514 "parser.ml"
: 'body))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 1 : 'predicate) in
Obj.repr(
# 123 "parser.mly"
( Query _2 )
-# 504 "parser.ml"
+# 521 "parser.ml"
: 'query))
; (fun __caml_parser_env ->
Obj.repr(
# 126 "parser.mly"
( [] )
-# 510 "parser.ml"
+# 527 "parser.ml"
: 'litlist))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'literal) in
Obj.repr(
# 127 "parser.mly"
( _1 :: [] )
-# 517 "parser.ml"
+# 534 "parser.ml"
: 'litlist))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 2 : 'litlist) in
@@ -521,49 +538,49 @@ let yyact = [|
Obj.repr(
# 128 "parser.mly"
( _3 :: _1 )
-# 525 "parser.ml"
+# 542 "parser.ml"
: 'litlist))
; (fun __caml_parser_env ->
- let _1 = (Parsing.peek_val __caml_parser_env 0 : 'predicate) in
+ let _1 = (Parsing.peek_val __caml_parser_env 0 : 'bodypredicate) in
Obj.repr(
# 132 "parser.mly"
- ( Rel _1 )
-# 532 "parser.ml"
+ ( Rel _1 )
+# 549 "parser.ml"
: 'literal))
; (fun __caml_parser_env ->
- let _2 = (Parsing.peek_val __caml_parser_env 0 : 'predicate) in
+ let _2 = (Parsing.peek_val __caml_parser_env 0 : 'bodypredicate) in
Obj.repr(
# 133 "parser.mly"
- ( Not (Rel _2) )
-# 539 "parser.ml"
+ ( Not (Rel _2) )
+# 556 "parser.ml"
: 'literal))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'comparison) in
Obj.repr(
# 134 "parser.mly"
( _1 )
-# 546 "parser.ml"
+# 563 "parser.ml"
: 'literal))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 0 : 'comparison) in
Obj.repr(
# 135 "parser.mly"
( Not _2 )
-# 553 "parser.ml"
+# 570 "parser.ml"
: 'literal))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'booleanpredicate) in
Obj.repr(
# 136 "parser.mly"
( _1 )
-# 560 "parser.ml"
+# 577 "parser.ml"
: 'literal))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 0 : 'booleanpredicate) in
Obj.repr(
# 137 "parser.mly"
( Not _2 )
-# 567 "parser.ml"
+# 584 "parser.ml"
: 'literal))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 3 : string) in
@@ -571,96 +588,145 @@ let yyact = [|
Obj.repr(
# 141 "parser.mly"
( Pred (_1, _3) )
-# 575 "parser.ml"
+# 592 "parser.ml"
: 'predicate))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 3 : string) in
- let _3 = (Parsing.peek_val __caml_parser_env 1 : 'termlist) in
+ let _3 = (Parsing.peek_val __caml_parser_env 1 : 'bodytermlist) in
Obj.repr(
# 145 "parser.mly"
+ ( Pred (_1, _3) )
+# 600 "parser.ml"
+ : 'bodypredicate))
+; (fun __caml_parser_env ->
+ let _1 = (Parsing.peek_val __caml_parser_env 3 : string) in
+ let _3 = (Parsing.peek_val __caml_parser_env 1 : 'termlist) in
+ Obj.repr(
+# 149 "parser.mly"
( BPred (_1, _3) )
-# 583 "parser.ml"
+# 608 "parser.ml"
: 'booleanpredicate))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 2 : 'term) in
let _2 = (Parsing.peek_val __caml_parser_env 1 : 'compsym) in
let _3 = (Parsing.peek_val __caml_parser_env 0 : 'term) in
Obj.repr(
-# 149 "parser.mly"
+# 153 "parser.mly"
( Comp (_1, _2, _3) )
-# 592 "parser.ml"
+# 617 "parser.ml"
: 'comparison))
; (fun __caml_parser_env ->
Obj.repr(
-# 153 "parser.mly"
+# 157 "parser.mly"
( "<" )
-# 598 "parser.ml"
+# 623 "parser.ml"
: 'compsym))
; (fun __caml_parser_env ->
Obj.repr(
-# 154 "parser.mly"
+# 158 "parser.mly"
( ">" )
-# 604 "parser.ml"
+# 629 "parser.ml"
: 'compsym))
; (fun __caml_parser_env ->
Obj.repr(
-# 155 "parser.mly"
+# 159 "parser.mly"
( "<=" )
-# 610 "parser.ml"
+# 635 "parser.ml"
: 'compsym))
; (fun __caml_parser_env ->
Obj.repr(
-# 156 "parser.mly"
+# 160 "parser.mly"
( ">=" )
-# 616 "parser.ml"
+# 641 "parser.ml"
: 'compsym))
; (fun __caml_parser_env ->
Obj.repr(
-# 157 "parser.mly"
+# 161 "parser.mly"
( "<>" )
-# 622 "parser.ml"
+# 647 "parser.ml"
: 'compsym))
; (fun __caml_parser_env ->
Obj.repr(
-# 158 "parser.mly"
+# 162 "parser.mly"
( "=" )
-# 628 "parser.ml"
+# 653 "parser.ml"
: 'compsym))
; (fun __caml_parser_env ->
Obj.repr(
-# 161 "parser.mly"
+# 165 "parser.mly"
( [] )
-# 634 "parser.ml"
+# 659 "parser.ml"
: 'termlist))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'term) in
Obj.repr(
-# 162 "parser.mly"
+# 166 "parser.mly"
( _1 :: [] )
-# 641 "parser.ml"
+# 666 "parser.ml"
: 'termlist))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 2 : 'term) in
let _3 = (Parsing.peek_val __caml_parser_env 0 : 'termlist) in
Obj.repr(
-# 163 "parser.mly"
+# 167 "parser.mly"
( _1 :: _3 )
-# 649 "parser.ml"
+# 674 "parser.ml"
: 'termlist))
; (fun __caml_parser_env ->
+ Obj.repr(
+# 169 "parser.mly"
+ ( [] )
+# 680 "parser.ml"
+ : 'bodytermlist))
+; (fun __caml_parser_env ->
+ let _1 = (Parsing.peek_val __caml_parser_env 0 : 'bodyterm) in
+ Obj.repr(
+# 170 "parser.mly"
+ ( _1 :: [] )
+# 687 "parser.ml"
+ : 'bodytermlist))
+; (fun __caml_parser_env ->
+ let _1 = (Parsing.peek_val __caml_parser_env 2 : 'bodyterm) in
+ let _3 = (Parsing.peek_val __caml_parser_env 0 : 'bodytermlist) in
+ Obj.repr(
+# 171 "parser.mly"
+ ( _1 :: _3 )
+# 695 "parser.ml"
+ : 'bodytermlist))
+; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
-# 166 "parser.mly"
+# 174 "parser.mly"
( ParamS _1 )
-# 656 "parser.ml"
+# 702 "parser.ml"
: 'term))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : int) in
Obj.repr(
-# 167 "parser.mly"
+# 175 "parser.mly"
( ParamI _1 )
-# 663 "parser.ml"
+# 709 "parser.ml"
: 'term))
+; (fun __caml_parser_env ->
+ let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
+ Obj.repr(
+# 178 "parser.mly"
+ ( ParamS _1 )
+# 716 "parser.ml"
+ : 'bodyterm))
+; (fun __caml_parser_env ->
+ let _1 = (Parsing.peek_val __caml_parser_env 0 : int) in
+ Obj.repr(
+# 179 "parser.mly"
+ ( ParamI _1 )
+# 723 "parser.ml"
+ : 'bodyterm))
+; (fun __caml_parser_env ->
+ Obj.repr(
+# 180 "parser.mly"
+ ( ParamS "_ANONVAR_" )
+# 729 "parser.ml"
+ : 'bodyterm))
(* Entry main *)
; (fun __caml_parser_env -> raise (Parsing.YYexit (Parsing.peek_val __caml_parser_env 0)))
|]
View
1  parser.mli
@@ -8,6 +8,7 @@ type token =
| IMPLIEDBY
| AND
| NOT
+ | ANON_VAR
| SELECT
| JOIN
| WHERE
View
24 parser.mly
@@ -18,7 +18,7 @@
%token <string> BOOLPRED /* token with string value */
%token QMARK DOT IMPLIEDBY
-%token AND NOT
+%token AND NOT ANON_VAR
%token SELECT JOIN WHERE WHERENOT /*token for help parameters*/
%token EQ LE GR LQ GQ NE
%token LPAREN RPAREN SEP
@@ -39,7 +39,7 @@
%%
/* Grammar */
- main: EOP { failwith "main: where's my program?!"}
+ main: EOP { failwith "Empty command or query!"}
| program EOP { Prog $1 }
| commlist EOP { Comm $1 }
;
@@ -83,7 +83,6 @@
| WHERE { Where }
| WHERENOT { WhereNot }
| VARNAME { Other }
-
;
file_name:
@@ -101,6 +100,7 @@
| RELNAME { $1 }
| VARNAME { $1 }
| PASSNAME { $1 }
+ | BOOLPRED { $1 }
;
@@ -129,8 +129,8 @@
;
literal:
- | predicate { Rel $1 }
- | NOT predicate { Not (Rel $2) }
+ | bodypredicate { Rel $1 }
+ | NOT bodypredicate { Not (Rel $2) }
| comparison { $1 }
| NOT comparison { Not $2 }
| booleanpredicate { $1 }
@@ -141,6 +141,10 @@
RELNAME LPAREN termlist RPAREN { Pred ($1, $3) }
;
+ bodypredicate:
+ RELNAME LPAREN bodytermlist RPAREN { Pred ($1, $3) }
+ ;
+
booleanpredicate:
BOOLPRED LPAREN termlist RPAREN { BPred ($1, $3) }
;
@@ -162,6 +166,16 @@
| term { $1 :: [] }
| term SEP termlist { $1 :: $3 } /* \!/ rec. on the right */
+ bodytermlist: /* empty */ { [] }
+ | bodyterm { $1 :: [] }
+ | bodyterm SEP bodytermlist { $1 :: $3 } /* \!/ rec. on the right */
+
term:
| VARNAME { ParamS $1 }
| VAL { ParamI $1 }
+
+ bodyterm:
+ | VARNAME { ParamS $1 }
+ | VAL { ParamI $1 }
+ | ANON_VAR { ParamS "_ANONVAR_" }
+
Please sign in to comment.
Something went wrong with that request. Please try again.