!_TAG_FILE_FORMAT	2	/extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED	1	/0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR	Darren Hiebert	/dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME	Exuberant Ctags	//
!_TAG_PROGRAM_URL	http://ctags.sourceforge.net	/official site/
!_TAG_PROGRAM_VERSION	5.8	//
Access	ast.ml	/^  | Access of string * string$/;"	C	type:expr
Access_Assign	ast.ml	/^  | Access_Assign of expr * expr$/;"	C	type:var_decl
Add	ast.ml	/^  | Add$/;"	C	type:op
And	ast.ml	/^  | And$/;"	C	type:op
Ast	ast.ml	/^type op =$/;"	M
Ast	n2n.ml	/^type action = Ast | Sast | Java | Compile | Help$/;"	C	type:action
Binop	ast.ml	/^  | Binop of expr * op * expr$/;"	C	type:expr
Block	ast.ml	/^  | Block of statement list$/;"	C	type:statement
Bool	ast.ml	/^  | Bool$/;"	C	type:n2n_type
Bool_Literal	ast.ml	/^  | Bool_Literal of bool$/;"	C	type:literal
Call	ast.ml	/^  | Call of string * expr list$/;"	C	type:expr
Code_gen	code_gen.ml	/^open Ast$/;"	M
Compile	n2n.ml	/^type action = Ast | Sast | Java | Compile | Help$/;"	C	type:action
Complex	ast.ml	/^  | Complex of complex_literal$/;"	C	type:expr
Concat	ast.ml	/^  | Concat$/;"	C	type:op
Constructor	ast.ml	/^  | Constructor of n2n_type * string * formal list$/;"	C	type:var_decl
Data_Insert	ast.ml	/^  | Data_Insert$/;"	C	type:geop
Data_Remove	ast.ml	/^  | Data_Remove$/;"	C	type:geop
Div	ast.ml	/^  | Div$/;"	C	type:op
Double	ast.ml	/^  | Double$/;"	C	type:n2n_type
Double_Literal	ast.ml	/^  | Double_Literal of float$/;"	C	type:literal
Equal	ast.ml	/^  | Equal$/;"	C	type:op
Error	semantic_check.ml	/^exception Error of string;;$/;"	e
Expr	ast.ml	/^  | Expr of expr$/;"	C	type:statement
Find_Many	ast.ml	/^  | Find_Many of string * find_many$/;"	C	type:built_in_function_call
Find_Many_Gen	ast.ml	/^  | Find_Many_Gen of graph_type * graph_type$/;"	C	type:find_many
Find_Many_Node	ast.ml	/^  | Find_Many_Node of complex_literal$/;"	C	type:find_many
Formal	ast.ml	/^  | Formal of n2n_type * string$/;"	C	type:formal
Func	ast.ml	/^  | Func of built_in_function_call$/;"	C	type:expr
Geop	ast.ml	/^  | Geop of expr * geop * formal$/;"	C	type:expr
Geq	ast.ml	/^  | Geq$/;"	C	type:op
Graph	ast.ml	/^  | Graph$/;"	C	type:n2n_type
Graph_Element	ast.ml	/^  | Graph_Element of string * literal list$/;"	C	type:complex_literal
Graph_Id	ast.ml	/^  | Graph_Id of string$/;"	C	type:graph_type
Graph_Insert	ast.ml	/^  | Graph_Insert$/;"	C	type:grop
Graph_Literal	ast.ml	/^  | Graph_Literal of graph_component list$/;"	C	type:complex_literal
Graph_Remove	ast.ml	/^  | Graph_Remove$/;"	C	type:grop
Graph_Type	ast.ml	/^  | Graph_Type of complex_literal$/;"	C	type:graph_type
Greater	ast.ml	/^  | Greater$/;"	C	type:op
Grop	ast.ml	/^  | Grop of expr * grop * graph_component$/;"	C	type:expr
Help	n2n.ml	/^type action = Ast | Sast | Java | Compile | Help$/;"	C	type:action
Id	ast.ml	/^  | Id of string$/;"	C	type:expr
If	ast.ml	/^  | If of expr * statement * statement$/;"	C	type:statement
Int	ast.ml	/^  | Int$/;"	C	type:n2n_type
Int_Literal	ast.ml	/^  | Int_Literal of int$/;"	C	type:literal
Java	n2n.ml	/^type action = Ast | Sast | Java | Compile | Help$/;"	C	type:action
Leq	ast.ml	/^  | Leq$/;"	C	type:op
Less	ast.ml	/^  | Less$/;"	C	type:op
List	ast.ml	/^  | List of n2n_type$/;"	C	type:n2n_type
Literal	ast.ml	/^  | Literal of literal$/;"	C	type:expr
Map	ast.ml	/^  | Map of string * map_function$/;"	C	type:built_in_function_call
Map_Func	ast.ml	/^  | Map_Func of string * statement list$/;"	C	type:map_function
Mod	ast.ml	/^  | Mod$/;"	C	type:op
Mult	ast.ml	/^  | Mult$/;"	C	type:op
N2n	n2n.ml	/^open Unix$/;"	M
Neg	ast.ml	/^  | Neg$/;"	C	type:uop
Neighbors_Func	ast.ml	/^  | Neighbors_Func of string * string$/;"	C	type:built_in_function_call
Neq	ast.ml	/^  | Neq$/;"	C	type:op
Node	ast.ml	/^  | Node$/;"	C	type:n2n_type
Node_Rel_Node_Tup	ast.ml	/^  | Node_Rel_Node_Tup of graph_type * graph_type * graph_type$/;"	C	type:graph_component
Not	ast.ml	/^  | Not$/;"	C	type:uop
OBJS	Makefile	/^OBJS = ast.cmo parser.cmo scanner.cmo semantic_check.cmo code_gen.cmo n2n.cmo$/;"	m
Or	ast.ml	/^  | Or$/;"	C	type:op
Rel	ast.ml	/^  | Rel$/;"	C	type:n2n_type
Return	ast.ml	/^  | Return of expr$/;"	C	type:statement
SAccess	sast.mli	/^  | SAccess of string * string * Ast.n2n_type$/;"	C	type:sexpr
SAccess_Assign	sast.mli	/^  | SAccess_Assign of sexpr * sexpr$/;"	C	type:svar_decl
SBinop	sast.mli	/^  | SBinop of sexpr * Ast.op * sexpr * Ast.n2n_type$/;"	C	type:sexpr
SBlock	sast.mli	/^  SBlock of sstatement list$/;"	C	type:sstatement
SBool_Literal	sast.mli	/^  | SBool_Literal of bool$/;"	C	type:sliteral
SCall	sast.mli	/^  | SCall of string * sexpr list * Ast.n2n_type$/;"	C	type:sexpr
SComplex	sast.mli	/^  | SComplex of scomplex_literal * Ast.n2n_type$/;"	C	type:sexpr
SConstructor	sast.mli	/^  | SConstructor of Ast.n2n_type * string * sformal list$/;"	C	type:svar_decl
SDouble_Literal	sast.mli	/^  | SDouble_Literal of float$/;"	C	type:sliteral
SExpr	sast.mli	/^  | SExpr of sexpr$/;"	C	type:sstatement
SFindMany	sast.mli	/^  SFindMany of string * sfind_many$/;"	C	type:sbuilt_in_function_call
SFind_Many_Gen	sast.mli	/^  | SFind_Many_Gen of sgraph_type * sgraph_type$/;"	C	type:sfind_many
SFind_Many_Node	sast.mli	/^  | SFind_Many_Node of scomplex_literal$/;"	C	type:sfind_many
SFormal	sast.mli	/^  SFormal of Ast.n2n_type * string$/;"	C	type:sformal
SFunc	sast.mli	/^  | SFunc of sbuilt_in_function_call * Ast.n2n_type$/;"	C	type:sexpr
SGeop	sast.mli	/^  | SGeop of sexpr * Ast.geop * sformal * Ast.n2n_type$/;"	C	type:sexpr
SGraph_Element	sast.mli	/^  | SGraph_Element of string * sliteral list$/;"	C	type:scomplex_literal
SGraph_Id	sast.mli	/^  | SGraph_Id of string$/;"	C	type:sgraph_type
SGraph_Literal	sast.mli	/^  | SGraph_Literal of sgraph_component list$/;"	C	type:scomplex_literal
SGraph_type	sast.mli	/^  | SGraph_type of scomplex_literal$/;"	C	type:sgraph_type
SGrop	sast.mli	/^  | SGrop of sexpr * Ast.grop * sgraph_component * Ast.n2n_type$/;"	C	type:sexpr
SId	sast.mli	/^  | SId of string * Ast.n2n_type$/;"	C	type:sexpr
SIf	sast.mli	/^  | SIf of sexpr * sstatement * sstatement$/;"	C	type:sstatement
SInt_Literal	sast.mli	/^  SInt_Literal of int$/;"	C	type:sliteral
SLiteral	sast.mli	/^    SLiteral of sliteral * Ast.n2n_type$/;"	C	type:sexpr
SMap	sast.mli	/^  | SMap of string * smap_function$/;"	C	type:sbuilt_in_function_call
SMap_Func	sast.mli	/^  |  SMap_Func of string * sstatement list$/;"	C	type:smap_function
SNeighbors_Func	sast.mli	/^  | SNeighbors_Func of string * string$/;"	C	type:sbuilt_in_function_call
SNode_Rel_Node_tup	sast.mli	/^  SNode_Rel_Node_tup of sgraph_type * sgraph_type * sgraph_type$/;"	C	type:sgraph_component
SProg	sast.mli	/^  SProg of svar_decl list * sfunc_decl list$/;"	C	type:sprogram
SReturn	sast.mli	/^  | SReturn of sexpr$/;"	C	type:sstatement
SString_Literal	sast.mli	/^  | SString_Literal of string$/;"	C	type:sliteral
SUnop	sast.mli	/^  | SUnop of Ast.uop * sexpr * Ast.n2n_type$/;"	C	type:sexpr
SVar	sast.mli	/^    SVar of Ast.n2n_type * string$/;"	C	type:svar_decl
SVar_Decl	sast.mli	/^  | SVar_Decl of svar_decl$/;"	C	type:sstatement
SVar_Decl_Assign	sast.mli	/^  | SVar_Decl_Assign of string * Ast.n2n_type * sexpr$/;"	C	type:svar_decl
Sast	n2n.ml	/^type action = Ast | Sast | Java | Compile | Help$/;"	C	type:action
Sast	sast.mli	/^open Ast$/;"	M
Semantic_check	semantic_check.ml	/^open Ast$/;"	M
String	ast.ml	/^  | String$/;"	C	type:n2n_type
String_Literal	ast.ml	/^  | String_Literal of string$/;"	C	type:literal
Sub	ast.ml	/^  | Sub$/;"	C	type:op
Unop	ast.ml	/^  | Unop of uop * expr$/;"	C	type:expr
Var	ast.ml	/^  | Var of n2n_type * string$/;"	C	type:var_decl
Var_Decl	ast.ml	/^  | Var_Decl of var_decl$/;"	C	type:statement
Var_Decl_Assign	ast.ml	/^  | Var_Decl_Assign of string * n2n_type * expr$/;"	C	type:var_decl
Void	ast.ml	/^  | Void$/;"	C	type:n2n_type
action	n2n.ml	/^    let action = if args > 1 then$/;"	v
action	n2n.ml	/^type action = Ast | Sast | Java | Compile | Help$/;"	t
args	n2n.ml	/^  let args = Array.length Sys.argv in$/;"	v
backend_path	n2n.ml	/^let backend_path = "..\/backend\/src\/"$/;"	v
beginning_environment	semantic_check.ml	/^let beginning_environment = { functions = []; globals = beginning_scope; locals = beginning_scope; scope = "global"; node_types = []; rel_types = []; has_return = false; return_val = Id("None"); return_type = Void}$/;"	v
beginning_scope	semantic_check.ml	/^let beginning_scope = { prims = []; nodes = []; rels = []; graphs = []; lists = [] }$/;"	v
body	ast.ml	/^  body : statement list;$/;"	r	type:func_decl
built_in_function_call	ast.ml	/^and built_in_function_call =$/;"	t
check_arithmetic_binary_op	semantic_check.ml	/^let check_arithmetic_binary_op t1 t2 =$/;"	v
check_equality	semantic_check.ml	/^let check_equality t1 t2 =$/;"	v
check_for_var_existence	semantic_check.ml	/^let check_for_var_existence var_table id =$/;"	v
check_function	semantic_check.ml	/^let check_function env func =$/;"	v
check_functions	semantic_check.ml	/^let rec check_functions env funcs checked_funcs =$/;"	v
check_global	semantic_check.ml	/^let check_global env var =$/;"	v
check_globals_and_update_env	semantic_check.ml	/^let rec check_globals_and_update_env env vars checked_vars =$/;"	v
check_logic	semantic_check.ml	/^let check_logic t1 t2 =$/;"	v
check_stmt	semantic_check.ml	/^let rec check_stmt env stmt =$/;"	v
clean_command	n2n.ml	/^                        let clean_command = "rm -f " ^ target_path ^ "Main.class" in$/;"	v
command	n2n.ml	/^                        let command = (javac ^ " " ^ target_path ^ "*.java && java -cp ..\/backend\/src com.n2n.Main") in$/;"	v
complex_literal	ast.ml	/^and complex_literal =$/;"	t
env	n2n.ml	/^            | Sast -> let env = Semantic_check.run_program program in$/;"	v
environment	semantic_check.ml	/^type environment = {$/;"	t
expr	ast.ml	/^and expr =$/;"	t
find_many	ast.ml	/^and find_many =$/;"	t
fname	ast.ml	/^  fname : string;$/;"	r	type:func_decl
formal	ast.ml	/^type formal =$/;"	t
formals	ast.ml	/^  formals : formal list;$/;"	r	type:func_decl
full_path	n2n.ml	/^                        let full_path = target_path ^ "Main.java" in$/;"	v
full_path	n2n.ml	/^                        let full_path = target_path ^ Sys.argv.(2) ^ ".java" in$/;"	v
func_decl	ast.ml	/^type func_decl = {$/;"	t
functions	semantic_check.ml	/^	functions: func_decl list;$/;"	r	type:environment
gen_binop	code_gen.ml	/^let gen_binop = function$/;"	v
gen_expr	code_gen.ml	/^let rec gen_expr expr = match expr with$/;"	v
gen_literal	code_gen.ml	/^let gen_literal lit = match lit with$/;"	v
gen_literal_list	code_gen.ml	/^let rec gen_literal_list ll = match ll with$/;"	v
gen_tuple_list	semantic_check.ml	/^let rec gen_tuple_list fl l tl =$/;"	v
gen_unop	code_gen.ml	/^ let gen_unop = function$/;"	v
gen_var_type	code_gen.ml	/^ let rec gen_var_type = function$/;"	v
geop	ast.ml	/^type geop =$/;"	t
get_checked_statements	semantic_check.ml	/^let rec get_checked_statements env stmts checked_statments =$/;"	v
get_literal_type	semantic_check.ml	/^let get_literal_type l = match l with$/;"	v
get_new_env	semantic_check.ml	/^let get_new_env env func =$/;"	v
get_sexpr	semantic_check.ml	/^let rec get_sexpr env ex = match ex with$/;"	v
get_type_from_id	semantic_check.ml	/^let get_type_from_id var_table id =$/;"	v
globals	semantic_check.ml	/^	globals: var_scope;$/;"	r	type:environment
graph_component	ast.ml	/^and graph_component =$/;"	t
graph_type	ast.ml	/^and graph_type =$/;"	t
graphs	semantic_check.ml	/^	graphs: (string * graph_component list) list;$/;"	r	type:var_scope
grop	ast.ml	/^type grop =$/;"	t
has_return	semantic_check.ml	/^	has_return: bool;$/;"	r	type:environment
imports	code_gen.ml	/^let imports =$/;"	v
input	n2n.ml	/^      let input = open_in Sys.argv.(2) in$/;"	v
java_source	n2n.ml	/^                      let java_source = Code_gen.prog_gen sast in$/;"	v
javac	n2n.ml	/^let javac = "javac"$/;"	v
lexbuf	n2n.ml	/^      let lexbuf = Lexing.from_channel input in$/;"	v
listing	n2n.ml	/^              Ast -> let listing = Ast.string_of_program program in$/;"	v
lists	semantic_check.ml	/^	lists: (string * n2n_type * expr list) list (*Form (list_id, type, list contents) *)$/;"	r	type:var_scope
literal	ast.ml	/^and literal =$/;"	t
locals	semantic_check.ml	/^	locals: var_scope;$/;"	r	type:environment
map_function	ast.ml	/^and map_function =$/;"	t
n2n_type	ast.ml	/^type n2n_type =$/;"	t
new_graphs	semantic_check.ml	/^		let new_graphs = (id, va)::var_table.graphs in$/;"	v
node_types	semantic_check.ml	/^	node_types: (string * formal list) list;$/;"	r	type:environment
nodes	semantic_check.ml	/^	nodes: (string * string * (string * n2n_type * expr) list) list; (* Form (id, node_type, field storage list) *)$/;"	r	type:var_scope
op	ast.ml	/^type op =$/;"	t
output	n2n.ml	/^                        let output = read_process command in$/;"	v
output_file	n2n.ml	/^                        let output_file = open_out "Main.java" in$/;"	v
output_file	n2n.ml	/^                        let output_file = open_out (Sys.argv.(2) ^ ".java") in$/;"	v
output_file	n2n.ml	/^                        let output_file = open_out full_path in$/;"	v
prims	semantic_check.ml	/^	prims: (string * n2n_type * expr) list;$/;"	r	type:var_scope
prog_gen	code_gen.ml	/^let prog_gen = function$/;"	v
program	ast.ml	/^type program = var_decl list * func_decl list$/;"	t
program	n2n.ml	/^      let program = Parser.program Scanner.token lexbuf in$/;"	v
read_process	n2n.ml	/^let read_process command =$/;"	v
readme	n2n.ml	/^let readme, writeme = Unix.pipe ()$/;"	v
rel_types	semantic_check.ml	/^	rel_types: (string * formal list) list;$/;"	r	type:environment
rels	semantic_check.ml	/^	rels: (string * string * (string * n2n_type * expr) list) list; (* Form (id, node_type, field storage list) *)$/;"	r	type:var_scope
resolve_envs	semantic_check.ml	/^let resolve_envs old_env new_env =$/;"	v
return_type	ast.ml	/^  return_type : n2n_type;$/;"	r	type:func_decl
return_type	semantic_check.ml	/^	return_type: n2n_type;$/;"	r	type:environment
return_val	semantic_check.ml	/^	return_val: expr;$/;"	r	type:environment
run_program	semantic_check.ml	/^let run_program program =$/;"	v
sast	n2n.ml	/^            | Compile -> let sast = Semantic_check.run_program program in$/;"	v
sast	n2n.ml	/^            | Java -> let sast = Semantic_check.run_program program in$/;"	v
sbody	sast.mli	/^  sbody : sstatement list;$/;"	r	type:sfunc_decl
sbuilt_in_function_call	sast.mli	/^and sbuilt_in_function_call =$/;"	t
scomplex_literal	sast.mli	/^and scomplex_literal =$/;"	t
scope	semantic_check.ml	/^	scope: string;$/;"	r	type:environment
set_default_val	semantic_check.ml	/^let set_default_val ty =$/;"	v
sexpr	sast.mli	/^and sexpr =$/;"	t
sfind_many	sast.mli	/^and sfind_many =$/;"	t
sfname	sast.mli	/^  sfname : string;$/;"	r	type:sfunc_decl
sformal	sast.mli	/^type sformal =$/;"	t
sformals	sast.mli	/^  sformals : sformal list;$/;"	r	type:sfunc_decl
sfunc_decl	sast.mli	/^type sfunc_decl = {$/;"	t
sgraph_component	sast.mli	/^and sgraph_component =$/;"	t
sgraph_type	sast.mli	/^and sgraph_type =$/;"	t
sliteral	sast.mli	/^and sliteral =$/;"	t
smap_function	sast.mli	/^and smap_function =$/;"	t
sprogram	sast.mli	/^type sprogram =$/;"	t
sreturn_type	sast.mli	/^  sreturn_type : Ast.n2n_type;$/;"	r	type:sfunc_decl
sstatement	sast.mli	/^and sstatement =$/;"	t
statement	ast.ml	/^and statement =$/;"	t
string_of_binop	ast.ml	/^let string_of_binop = function$/;"	v
string_of_expr	ast.ml	/^let rec string_of_expr = function$/;"	v
string_of_formal	ast.ml	/^let string_of_formal = function$/;"	v
string_of_func_decl	ast.ml	/^let string_of_func_decl fdecl=$/;"	v
string_of_geop	ast.ml	/^let string_of_geop = function$/;"	v
string_of_grop	ast.ml	/^let string_of_grop = function$/;"	v
string_of_literal	ast.ml	/^let string_of_literal = function$/;"	v
string_of_n2n_type	ast.ml	/^let rec string_of_n2n_type = function$/;"	v
string_of_program	ast.ml	/^let string_of_program (vars, funcs) =$/;"	v
string_of_unop	ast.ml	/^let string_of_unop = function$/;"	v
svar_decl	sast.mli	/^type svar_decl =$/;"	t
t	semantic_check.ml	/^	| Geop(e1, geop, f) -> let t = check_expr env e1 and tf = (match f with$/;"	v
t1	semantic_check.ml	/^		let t1 = check_expr env e1 and t2 = check_expr env e2 in$/;"	v
t1	semantic_check.ml	/^	| Grop(e1, grop, gc) -> let t1 = check_expr env e1 in$/;"	v
target_path	n2n.ml	/^let target_path = backend_path ^ "com\/n2n\/"$/;"	v
tl	semantic_check.ml	/^		| Access_Assign(e1, e2) -> let tl = check_expr env e1 and tr = check_expr env e2 in$/;"	v
uop	ast.ml	/^type uop =$/;"	t
update_list_table	semantic_check.ml	/^let update_list_table var_table id ty v =$/;"	v
update_node_or_rel_table	semantic_check.ml	/^let update_node_or_rel_table env var_table id idt ty ex =$/;"	v
update_prim_table	semantic_check.ml	/^let update_prim_table var_table id ty v =$/;"	v
usage	n2n.ml	/^let usage (name:string) =$/;"	v
va	semantic_check.ml	/^		let va = (match v with$/;"	v
var_decl	ast.ml	/^type var_decl =$/;"	t
var_scope	semantic_check.ml	/^and var_scope = {$/;"	t
