1 ///////////////////////////////////////////////////////////////////////////////
2 // The inference compiler
3 ///////////////////////////////////////////////////////////////////////////////
4 #ifndef inference_compiler_h
5 #define inference_compiler_h
10 ///////////////////////////////////////////////////////////////////////////////
12 // Class to represent an inference class.
14 ///////////////////////////////////////////////////////////////////////////////
15 class InferenceClass
: public ClassDefinition
16 { InferenceClass(const InferenceClass
&);
17 void operator = (const InferenceClass
&);
19 InferenceClass(Id
, Inherits
, TyQual
, Decls
);
21 virtual void gen_class_interface(CodeGen
&);
24 ///////////////////////////////////////////////////////////////////////////////
26 // Inference compiler.
28 ///////////////////////////////////////////////////////////////////////////////
29 class InferenceCompiler
: virtual public RewritingCompiler
{
31 InferenceCompiler(const InferenceCompiler
&); // no copy constructor
32 void operator = (const InferenceCompiler
&); // no assignment
35 ////////////////////////////////////////////////////////////////////////////
36 // Constructor and destructor
37 ////////////////////////////////////////////////////////////////////////////
42 ////////////////////////////////////////////////////////////////////////////
43 // Methods for compiling inference rules
44 ////////////////////////////////////////////////////////////////////////////
45 void gen_inference_rules (Id
, InferenceRules
);
46 void gen_alpha_tests (Id
, int, class HashTable
&);
47 void gen_beta_tests (Id
, int, InferenceRule
[], class HashTable
&);
48 void gen_inference_axioms (Id
, InferenceRules
);
49 void gen_inference_actions (Id
, InferenceRules
);
50 void gen_dispatch_table (Id
, class HashTable
&);
51 int gen_network_table (Id
, int, InferenceRule
[], class HashTable
&);
52 void gen_inference_constructor (Id
, int, class HashTable
&);
53 void gen_conclusions (Conclusions
);
54 void gen_conclusion (Conclusion
);