Mon Dec 27 10:29:45 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* Version 0.5 released.
	  Registered as ICOT Free Software No. 80.

	* attr.c (make_attribute_goals): Change prototypes.

	* subsump.c (eval_subsumption): Bug fix. 
	  o[l=1] >= o[l=1,m=2].

Tue Dec 21 17:21:38 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* cs.c, internal.h(MQ_CnstrsAsmpts):
	Add new member: dot_cnstrs_h, sub_cnstrs_h, ext_cnstrs_h.

	* attr.c (generate_attribute_goals_upward,
		  generate_attribute_goals_downward):
	Bug fix.  Don't inherit intrinsic attribute.

Mon Dec 20 18:27:43 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* lookup.c (lookup_active_goals): Add lookup for attribute
	computation.  With out this, some computation couldn't stop
	and seek an attribute forever.

Tue Dec 14 11:08:43 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* internal.h (MQ_CnstrsAsmpts), extern.h,
	cs.c (constrain_front, constrain_back,
	constrain_with_head_and_body_back, constraint_solve_asmpts,
	delete_nonsence_asmpts, make_cnstrs_asmpts, init_constraints):
	add sub_asmpts, ext_asmpts.

	* cs.c, internal.h (MQ_Goal,MQ_Rule,MQ_Lookup),
	internal.c (make_goal), rule.c (make_rule),
	lookup.c (make_lookup,lookup_active_goals,compare_lookup),
	attr.c
	(generate_attribute_goals_upward,generate_attribute_goals_downward),
	emit.c (emit_rule, emit_body, emit_constraints),
	exec.c (solve),
	print.c (print_rule, print_goal):

	Don't distinguish *_cnstrs_front and *_cnstrs_back.
	It breaks assumptions.

	* dot.c (eval_dot): don't say fatal, return just NULL.
	  fatal ("Variable.l in eval_dot\n");

	* attr.c, extern.h(make_attribute_goals): change the prototype.
	Now, it returns NULL when it doesn't make any goals.

	* exec.c (solve): call make_attribute_goals when the goal is deduced.

	* exec.c (do_query): since query doesn't have a head, it is
	meaningless to call constraint_back.

	* attr.c (make_attribute_goals): make attribute goals only for
	dot terms in assumptions.

Wed Dec  8 21:31:48 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* commands.c (print_constrain_value,cmd_set):
	* cs.c (constrain_front, constrain_back,
	        constrain_with_head_and_body_front):
	* cs.c (constrain_with_head_and_body_back):
	change calc.

Tue Dec  7 17:07:56 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* commands.c (cmd_set): show valid values.

	* exec.c (solve): tangle back constraints before constrain_front.

Mon Dec  6 13:37:56 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* cs.c (constrain_with_head_and_body_back): bug fix. call
	constraint_solve_cnstrs ().

	* Don't use mm_lookup.  Lookup structures are in mm_exec now.

	* Merge Macintosh patch from Morita Yukihiro
		  <morita@okilab.oki.co.jp>

Tue Nov 30 09:24:15 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* Version 0.4 released.  Lookup Bug surely remains. :<

	* exec.c (solve): Don't set prev_goal on lookup failure.

	* print.c (print_rule): Bug fix.  Don't follow the chain rule->next.

Mon Nov 29 18:07:18 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* delete struct obstack *mm_current in rule.c

	* subsump.c (init_lattice)
	rule.c (init_rule)

	* commands.c (init_command): (unsigned char *)

	* print.c (print_answer): flush.

Sun Nov 28 13:43:54 1993  NIIBE Yutaka  (gniibe@vagabond.mri.co.jp)

	* exec.c (solve): Change the meaning of g->lookup.  It is now
	lookup construct for *THIS* goal.  It is no longer the milestone
	of lookup.
	* lookup.c (lookup_active_goals): ditto.

	* lookup.c (unwind_lookup): Removed.
	* lookup.c, extern.h: Delete variable `lookup'.

	* exec.c (generate_subgoals): Set parents, regardless if it's last
	goals.

	* exec.c (solve): Delete statements using `done'.

	* lookup.c (make_lookup), internel.h (MQ_Lookup_Rec): Remove
	member `next' and `done'.
	* internal.c (make_goal),internal.h (MQ_Goal_Rec): Remove member
	`done'.

Sat Nov 27 01:20:07 1993  NIIBE Yutaka  (gniibe@vagabond.mri.co.jp)

	* exec.c (solve): Bug fix.  Clear g->done of parents on
	backtrack.

Fri Nov 26 16:07:39 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* internal.c, internal.h (MQ_Goal, MQ_Lookup): New member `done'.

	* lookup.c (lookup_active_goals): Check if the goal has solved or
	not.  For solved goals (g->done == TRUE), don't cause lookup
	failure because it isn't lookup loop.
	(make_lookup): initialize new member `done'.

	* cs.c (constraint_solve_cnstrs): Bug fix. don't return when
	binding changed.

Wed Nov 24 19:12:09 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* subsump.c (generate_lattice): Bug fix.
	Remember, mqA_Bottom->lno is 0.
	(a_meet, a_join): Bug fix, when one is mqA_Bottom, or mqA_Top,
	return another one.

	* subsump.c (join): Delete following lines for &top[...]:
	  if (a == mqA_Top)
	      return mqO_Top;

	* lex.c (next_file): Bug fix.  Fix interactive setting.

	* subsump.c (modify_l_bitmap): Completely rewritten.  Old one is
	very buggy.

Wed Nov 24 00:22:58 1993  NIIBE Yutaka  (gniibe@vagabond.mri.co.jp)

	* atom.c (free_atom): Bug fix. don't free &top and &bottom.

	* rule.c (free_rule): Bug fix.
	Set mQ_void_rule_list->next = NULL;

Tue Nov 23 00:36:29 1993  NIIBE Yutaka  (gniibe@vagabond.mri.co.jp)

	* Version 0.3 released.

	  Happy birth day, Mr. Fujise!! (Today is Labor Day of Japan,
	  and it's his birth day.)  Work Hard, Hackers!

	* lex.c (output_prompt): flush.

	* exec.c (printing): New Variable.  It's TRUE when printing.
	(catch_exit): deleted.
	(catch_exec, catch_print): New Variables for exception handling.
	(do_query): set the variable `printing' when printing answer.
	(interrupt_handler): When printing, throw catch_print, otherwise
	throw catch_exec.

Mon Nov 22 17:27:58 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* lex.c (yylex): when reading object, newline means end of file.
	* lex.c, extern.h (gobble_newline): let it return void.
	(fetch_char): New Function.
	* ext.c (read_object): bug fix.  call fetch_char.

	* mq.c (interactive_orig, force_interactive);  New Variables.
	* lex.c (next_file): handle force_interactive.
	"-i" option says that Micro Quixote is interactive, regardless
	about it is attached to a terminal.

	* lex.c (pushfilename): Bug fix. Add cast.

	* exec.c (tangle_constraints): let it be extern, and use it
	from attr.c.
	* attr.c (generate_attribute_goals_downward,
	generate_attribute_goals_upward): use it.

Mon Nov 22 01:38:44 1993  NIIBE Yutaka  (gniibe@vagabond.mri.co.jp)

	* quixote.el: New File.  Emacs support.

Sun Nov 21 00:26:13 1993  NIIBE Yutaka  (gniibe@vagabond.mri.co.jp)

	* print.c (print_rule_sub): New Function.  Bug fix.

	* commands.c (cmd_load): Now it's supported.

	* lookup.c (lookup_tangle_var): bug fix.  Return var->value, if
	any.

	* cs.c (mark_variables_in_vterm): avoid infinite loop, when there
	is infinite object.
	* lookup.c (lookup_tangle_obj, hash_vterm): ditto.

	* cs.c (mark_variables_in_term): Removed.
	(mark_variables_in_cnstrs): call mark_variables_in_vterm instead
	of mark_variables_in_term.

	* exec.c (do_query): unwind when aborting.

	* Makefile.UNX: Removed.
	* Makefile.GNU: Rename to Makefile-dist.  Change the filename of
	bison generated files, so that mq could compile on MS-DOS easily.
	lex.c: include "parse_t.h" instead of "parse.tab.h".

	* mq.c (main): don't handle files here.  lex.c does.
	* lex.c: Yes, I do.

	* cs-ext.c (add_cnstr_to_ext, constraint_solve_ext): NULL return
	from eval_ext_expr means we have to try again later.
	* emit.c, emit.h (emit_obj): let it be extern.
	* ext.c (read_object): call yyparse.  Now it can read true object.
	(read_bool): just a newline means YES.
	* lex.c, extern.h (yylex): change prototype to be pure.
	(gobble_newline): New Function. 
	* parse.y (pure_parser): Use BISON's feature of `pure_parser'.
	(reading_object): New Variable.  It's zero usually, not zero when
	calling by read_object in ext.c.

	* subsump.c (subsume_subrel): New Function.  Compute subsump_p
	using subrel_list.
	(generate_lattice): Bug fix.

Sat Nov 20 18:58:00 1993  NIIBE Yutaka  (gniibe@vagabond.mri.co.jp)

	* exec.c (do_query): Initialize `up' and `cnstrs_asmpts' each time.
	* unify.c (init_unify):	do_nothing.

	* exec.c (generate_variables): bug fix. return new.

	* cs.c,extern.h (constrain): divide constrain into constrain_front
	and constrain_back.
	(constrain_with_head_and_body) ditto.
	(sub_asmpts,ext_asmpts): Delete them.
	* internal.h (MQ_CnstrsAsmpts_Rec): Remove sub_asmpts and ext_asmpts.
	cs.c (make_cnstrs_asmpts, init_constraints): ditto.
	* cs-sub.c, cs-ext.c, extern.h: delete routines for assumptions.
	* cs.c (constraint_solve_asmpts): delete statements for sub and
	ext.
	(add_cnstr_to_asmpts, delete_nonsence_asmpts): these routines are
	for dot constraints now.
	* exec.c (solve, do_query): call constrain_front and _back.

	* internal.h (MQ_Rule_Rec, MQ_Lookup_Rec, MQ_Goal_Rec): divide
	head_cnstrs into _front and _back.  So do body_cnstrs.
	* exec.c (solve, generate_subgoals): handle _front and _back.
	* internal.c (make_goal): ditto.
	* rule.c (make_rule): ditto.
	* lookup.c (make_lookup, compare_lookup, hash): ditto.
	* attr.c (generate_attribute_goals_upward,
	generate_attribute_goals_downward): ditto.
	* emit.c (emit_rule): ditto.
	(emit_constraints): ditto.
	* print.c (print_rule, print_goal, print_answer): ditto.

	* cs-dot.c, s-ext.c, cs-sub.c, cs.c, emit.c, exec.c, extern.h
	internal.h, lookup.c, parse.y, print.c, tree.c, tree.h:
	Change the type name SubRel to Rel, and member sub_rel to rel.

	* lex.c (yylex): support C style comment. (/* ... */)
	Don't allow nested comments.

Wed Nov 17 22:03:49 1993  NIIBE Yutaka  (gniibe@agochikuwa.mri.co.jp)

	* exec.c (interrupt_handler): EXCEPT_ABORT for argument of longjmp.
	* mq.h (EXCEPT_ABORT): exception handling.

Wed Nov 17 13:08:04 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* subsump.c (a_subsume_p): add evaluation of bottom, top.
	* lex.c (keyword_list, yylex): add bottom, top.

Tue Nov 16 19:32:26 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* extern.h: define void_func and use this for volatile function
	which doesn't return (See the GCC Manual for volatile function).

	* tree.c (makeT_attr_list): same label in attribute is error.

	* mq.c (main): set number_of_errors 0.

	* error.c, extern.h (number_of_errors): New Variable.
	(exec_error): New Function.  for aborting calculation.

	* lex.c (yylex): don't call error when return ERROR_TOKEN.

	* exec.c (do_query): Support aborting calculation.
	(interrupt_handler): New Function.
	(catch_exit); New Variable.

	* mq.c, extern.h, exec.c (init_interactive): let it be extern and
	 move it to exec.c.

	* emit.c (emit_subrel): call check_subrel.
	(check_subrel): New Function to check subrel.

	* subrel.c, extern.h (make_subrel): change signature. 

	* mq.h (INHERIT_NO, INHERIT_DOWNWARD, INHERIT_UPWARD, INHERIT_BOTH):
	New MACRO for inheritance.

	* option.c (init_options): the value of mq_opt_inheritance
	(default) is 3 (inherit both direction up and down).

	* commands.c (print_inheritance_value): support up, down and all.
	(cmd_set): ditto. 
	(init_command): ditto.
	(atom_up, atom_down, atom_no, atom_all): New Variables.

	* attr.c (generate_attribute_goals): New Function.
	call upward and downward.

	(generate_attribute_goals_upward): New Function.
	Counterpart of downward.
	(generate_attribute_goals_downward): rename from
	generate_attribute_goals.

	* subsump.c, extern.h (begin_get_atom_which_supersumes,
	get_next_atom_supersump): New Function.  Counterpart of sub...

Mon Nov 15 15:19:31 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* cs-sub.c (constraint_solve_subsumption_1): bug fix. change bind
	to unify since they are both variables.

	* cs.c (constrain_with_head_and_body): bug fix.  Use copy_cnstrs.
	* cs.c (copy_cnstrs): New Function.

Wed Nov 10 18:18:59 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* subsump.c (eval_subsumption): bug fix. break while-loop when
	eval_subsumption returns TRUE.

Tue Nov  9 13:41:37 1993  Micro GniiBE  (m-gniibe@zeus)

	* Version 0.2 released.

	* subsump.c (generate_lattice): bug fix.
	delete append_al, and create New Function copy_al.

	* tree.c (init_tree): initialize mqTO_True.
	* mq.c (main): change initialize order.  init_rule should precede
	init_tree.
	* emit.c (emit_obj): emit mqO_True when mqTO_True.
	* parse.y (object): add LEX_TRUE.
	* lex.c (keyword_list): add LEX_TRUE.

Mon Nov  8 14:11:52 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* print.c (print_constraint): add case of ExternalCnstr and
	ExternalExpr.

	* attr.c (generate_attribute_goals): check obj is really subsumes o.

	* Makefile.UNX, Makefile.GNU: add entry for cs_ext.c and ext.c.

	* lex.c, extern.h (read_line_to_yytext): New Function.
	Just a quick hack. Should be disappear soon. :-)

	* extern.h: add declaration of cs-ext.c and ext.c.
	* ext.c: New File. Supports external invocation.
	* cs-ext.c: New File. External constraint solver.

	* print.c, extern.h: let print_obj be extern.
	* cs-sub.c, extern.h: let delete_bound_var_in_var_list be extern.
	* subsump.c, extern.h: let variables_in_obj be extern.

	* cs.c (ext_cnstrs, ext_asmpts): New Variables for external
	constraints and assumptions.

	(constrain): protect cnstrs_asmpts->ext_cnstrs and ext_asmpts.
	tangle ext_cnstrs and ext_asmpts.

	(constrain_with_head_and_body): add ext_cnstrs_orig and
	ext_asmpts_orig. 

	(constraint_solve_cnstrs): add constraint_solve_ext_cnstrs;
	(constraint_solve_asmpts): ditto.

	(add_cnstr_to_cnstrs): add case of ExternalExpr and ExternalCnstr.
	(add_cnstr_to_asmpts): ditto.
	(delete_nonsence_asmpts): protect ext_asmpts against GC.

	(make_cnstrs_asmpts): initialize ext_cnstrs and ext_asmpts.
	(init_cnstraints): ditto.

	* tree.c, tree.h (makeT_constraints): add new argument op for
	ExternalCnstr.

	* emit.c (emit_constraints): add ExternalExpr and ExternalCnstr.

	* internal.h (enum SubRel): add ExternalExpr and ExternalCnstr.
        (struct MQ_CnstrsAsmpts_Rec): add ext_cnstrs and ext_asmpts.

	* lex.c (SUBREL): add #...# as external constraint.
	(DOT): Change the definition of DOT and '.'
	When '.' preceding white space or EOF, it is '.', otherwise
	it is DOT.

	* emit.c (emit_subrel): check valid operator.
	subrel.c (make_subrel): fatal when invalid operator.

Thu Nov  4 22:49:05 1993  NIIBE Yutaka  (gniibe@oz7)

	* version.c: New File which says version of Micro Quixote.
	Makefile.GNU, Makefile.UNX

	* mq.c: delete mq_version.

	* subsump.c (begin_get_atom_which_subsumes, get_next_atom_subsump)
	extern.h: change the return type of begin_get_atom_which_subsumes
	to void.  get_atom_which_subsumes is called at least once.

	* exec.c (do_query): call delete_nonsence_asmpts before
	make_attribute_goals ().  (avoid same answers in some case)

	* cs.c (delete_nonsence_asmpts): bug fix.
	protect variables against GC.

Tue Nov  2 15:09:33 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* attr.c (generate_attribute_goals): bug fix.
	substitute last_subgoal.

Mon Nov  1 17:03:57 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* Makefile.UNX, Makefile.GNU: add entry for print.o

Sun Oct 31 17:30:27 1993  NIIBE Yutaka  (m-gniibe@zeus)

	* Version 0.1 released.

	* lex.c (help): New Function.  Supports context-sensitive on-line
	help.

	* cs-dot.c,cs-sub.c,cs.c: delete nonsense assumptions.

	* mq.c (init_interactive): New Function.  Handle signal.

