00001
00002
00008
00009
00010
00015
00021 typedef enum {
00022 twol_left,
00023 twol_right,
00024 twol_both
00025 } Twol_Type;
00026
00027
00033 typedef enum {
00034 repl_left,
00035 repl_right,
00036 repl_up,
00037 repl_down
00038 } Repl_Type;
00039
00040
00041 struct contexts_t {
00042 TransducerHandle left, right;
00043 struct contexts_t *next;
00044 };
00045
00046 typedef contexts_t * ContextsHandle;
00047
00051 typedef ContextsHandle ContextsHandle;
00052
00054
00055
00056
00061
00062
00070 ContextsHandle make_context (TransducerHandle t1, TransducerHandle t2);
00071
00072
00078 ContextsHandle append_context (ContextsHandle c1, ContextsHandle c2);
00079
00080
00114 TransducerHandle make_rule (TransducerHandle t1, KeyPairSet *mappings, Twol_Type type, TransducerHandle t2, KeyPairSet *Pi);
00115
00116
00117
00138 TransducerHandle make_replace (TransducerHandle t, Repl_Type type, bool optional, KeyPairSet *Pi);
00139
00140
00192 TransducerHandle make_replace_in_context (TransducerHandle t, Repl_Type type, ContextsHandle c, bool optional, KeyPairSet *Pi);
00193
00194
00217 TransducerHandle make_restriction (TransducerHandle t, Twol_Type type, ContextsHandle c, int direction, KeyPairSet *Pi);
00218
00219
00223 void delete_contexts_handle( ContextsHandle c );
00224
00226
00227