:- module parser.
:- use_module bool, builtin, char, float, int, io, lexer, list, map, ops, private_builtin, require, std_util, string, term, term_io, varset.
:- type (parser:state(Ops, T))
	--->	state(string, Ops, (varset:varset(T)), (lexer:token_list), (tree234:tree234(string, (term:var(T)))))
	.
:- type (parser:parse(T))
	--->	ok(T)
	;	error(string, (lexer:token_list))
	.
parser:read_term(Result_4, DCG_0_6, DCG_2_8) :-
		io:input_stream_name(FileName_5, DCG_0_6, DCG_1_7),
		V_9 = ops:init_mercury_op_table,
		parser:read_term_with_op_table(V_9, FileName_5, Result_4, DCG_1_7, DCG_2_8).
parser:read_term_with_op_table(Ops_5, Result_6, DCG_0_8, DCG_2_10) :-
		io:input_stream_name(FileName_7, DCG_0_8, DCG_1_9),
		parser:read_term_with_op_table(Ops_5, FileName_7, Result_6, DCG_1_9, DCG_2_10).
parser:read_term(FileName_5, Result_6, DCG_0_7, DCG_1_8) :-
		V_9 = ops:init_mercury_op_table,
		parser:read_term_with_op_table(V_9, FileName_5, Result_6, DCG_0_7, DCG_1_8).
parser:read_term_with_op_table(Ops_6, FileName_7, Result_8, DCG_0_10, DCG_1_11) :-
		lexer:get_token_list(Tokens_9, DCG_0_10, DCG_1_11),
		parser:parse_tokens_with_op_table(Ops_6, FileName_7, Tokens_9, Result_8).
parser:read_term_from_string(FileName_5, String_6, EndPos_7, Result_8) :-
		V_9 = ops:init_mercury_op_table,
		parser:read_term_from_string_with_op_table(V_9, FileName_5, String_6, EndPos_7, Result_8).
parser:read_term_from_string(FileName_7, String_8, Len_9, StartPos_10, EndPos_11, Result_12) :-
		V_13 = ops:init_mercury_op_table,
		parser:read_term_from_string_with_op_table(V_13, FileName_7, String_8, Len_9, StartPos_10, EndPos_11, Result_12).
parser:read_term_from_string_with_op_table(Ops_8, FileName_9, String_10, Len_11, StartPos_12, EndPos_13, Result_14) :-
		lexer:string_get_token_list(String_10, Len_11, Tokens_15, StartPos_12, EndPos_13),
		parser:parse_tokens_with_op_table(Ops_8, FileName_9, Tokens_15, Result_14).
parser:parse_tokens(FileName_4, Tokens_5, Result_6) :-
		V_7 = ops:init_mercury_op_table,
		parser:parse_tokens_with_op_table(V_7, FileName_4, Tokens_5, Result_6).
:- pragma termination_info(parser:read_term((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop).
:- pragma termination_info(parser:read_term_with_op_table((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop).
:- pragma termination_info(parser:read_term((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop).
:- pragma termination_info(parser:read_term_with_op_table((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop).
:- pragma termination_info(parser:read_term_from_string((builtin:in), (builtin:in), (builtin:out), (builtin:out)), infinite, can_loop).
:- pragma termination_info(parser:read_term_from_string_with_op_table((builtin:in), (builtin:in), (builtin:in), (builtin:out), (builtin:out)), infinite, can_loop).
:- pragma termination_info(parser:read_term_from_string((builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:out), (builtin:out)), infinite, can_loop).
:- pragma termination_info(parser:read_term_from_string_with_op_table((builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:out), (builtin:out)), infinite, can_loop).
:- pragma termination_info(parser:parse_tokens((builtin:in), (builtin:in), (builtin:out)), infinite, can_loop).
:- pragma termination_info(parser:parse_tokens_with_op_table((builtin:in), (builtin:in), (builtin:in), (builtin:out)), infinite, can_loop).
