Commit cd9f32dd authored by Alexis Nasr's avatar Alexis Nasr
Browse files

getting rid of depset in configuration and switching to arc eager - unstable version git status

parent b7bd482b
......@@ -127,5 +127,6 @@ void mcd_free(mcd *m);
int mcd_get_code(mcd *m, char *str, int col);
dico_vec *mcd_build_dico_vec(mcd *mcd_struct);
int mcd_wf_code(char *wf);
void mcd_remove_wf_column(mcd *m, int wf_code);
mcd *mcd_copy(mcd *m);
#endif
......@@ -3,43 +3,45 @@
#include "mcd.h"
#define word_get_index(w) (w)->wf_array[MCD_WF_INDEX]
#define word_get_form(w) (w)->wf_array[MCD_WF_FORM]
#define word_get_lemma(w) (w)->wf_array[MCD_WF_LEMMA]
#define word_get_cpos(w) (w)->wf_array[MCD_WF_CPOS]
#define word_get_pos(w) (w)->wf_array[MCD_WF_POS]
#define word_get_feats(w) (w)->wf_array[MCD_WF_FEATS]
#define word_get_gov(w) (w)->wf_array[MCD_WF_GOV]
#define word_get_label(w) (w)->wf_array[MCD_WF_LABEL]
#define word_get_stag(w) (w)->wf_array[MCD_WF_STAG]
#define word_get_sent_seg(w) (w)->wf_array[MCD_WF_SENT_SEG]
#define word_get_A(w) (w)->wf_array[MCD_WF_A]
#define word_get_B(w) (w)->wf_array[MCD_WF_B]
#define word_get_C(w) (w)->wf_array[MCD_WF_C]
#define word_get_D(w) (w)->wf_array[MCD_WF_D]
#define word_get_E(w) (w)->wf_array[MCD_WF_E]
#define word_get_F(w) (w)->wf_array[MCD_WF_F]
#define word_get_G(w) (w)->wf_array[MCD_WF_G]
#define word_get_H(w) (w)->wf_array[MCD_WF_H]
#define word_get_I(w) (w)->wf_array[MCD_WF_I]
#define word_get_J(w) (w)->wf_array[MCD_WF_J]
#define word_get_K(w) (w)->wf_array[MCD_WF_K]
#define word_get_L(w) (w)->wf_array[MCD_WF_L]
#define word_get_M(w) (w)->wf_array[MCD_WF_M]
#define word_get_N(w) (w)->wf_array[MCD_WF_N]
#define word_get_O(w) (w)->wf_array[MCD_WF_O]
#define word_get_P(w) (w)->wf_array[MCD_WF_P]
#define word_get_Q(w) (w)->wf_array[MCD_WF_Q]
#define word_get_R(w) (w)->wf_array[MCD_WF_R]
#define word_get_S(w) (w)->wf_array[MCD_WF_S]
#define word_get_T(w) (w)->wf_array[MCD_WF_T]
#define word_get_U(w) (w)->wf_array[MCD_WF_U]
#define word_get_V(w) (w)->wf_array[MCD_WF_V]
#define word_get_W(w) (w)->wf_array[MCD_WF_W]
#define word_get_X(w) (w)->wf_array[MCD_WF_X]
#define word_get_Y(w) (w)->wf_array[MCD_WF_Y]
#define word_get_Z(w) (w)->wf_array[MCD_WF_Z]
#define word_get_signature(w) (w)->signature
#define word_get_index(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_INDEX]
#define word_get_form(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_FORM]
#define word_get_lemma(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_LEMMA]
#define word_get_cpos(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_CPOS]
#define word_get_pos(w) ((w) == NULL) ? -1 : ((w)->wf_array[MCD_WF_POS])
#define word_get_feats(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_FEATS]
#define word_get_gov(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_GOV]
#define word_get_label(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_LABEL]
#define word_get_stag(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_STAG]
#define word_get_sent_seg(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_SENT_SEG]
#define word_get_A(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_A]
#define word_get_B(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_B]
#define word_get_C(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_C]
#define word_get_D(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_D]
#define word_get_E(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_E]
#define word_get_F(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_F]
#define word_get_G(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_G]
#define word_get_H(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_H]
#define word_get_I(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_I]
#define word_get_J(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_J]
#define word_get_K(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_K]
#define word_get_L(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_L]
#define word_get_M(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_M]
#define word_get_N(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_N]
#define word_get_O(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_O]
#define word_get_P(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_P]
#define word_get_Q(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_Q]
#define word_get_R(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_R]
#define word_get_S(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_S]
#define word_get_T(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_T]
#define word_get_U(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_U]
#define word_get_V(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_V]
#define word_get_W(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_W]
#define word_get_X(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_X]
#define word_get_Y(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_Y]
#define word_get_Z(w) ((w) == NULL) ? -1 : (w)->wf_array[MCD_WF_Z]
#define word_get_signature(w) ((w) == NULL) ? -1 : (w)->signature
#define word_get_U1(w) ((w) == NULL) ? -1 : (w)->U1
#define word_get_relative_index(w) ((w) == NULL) ? -1 : (w)->relative_index
#define word_set_index(w, val) (w)->wf_array[MCD_WF_INDEX] = (val)
#define word_set_form(w, val) (w)->wf_array[MCD_WF_FORM] = (val)
......@@ -75,16 +77,11 @@
#define word_set_V(w, val) (w)->wf_array[MCD_WF_V] = (val)
#define word_set_W(w, val) (w)->wf_array[MCD_WF_W] = (val)
#define word_set_X(w, val) (w)->wf_array[MCD_WF_X] = (val)
#define word_set_Y(w, val) (w)->wf_array[MCD_WF_Y] = (val)
#define word_set_Z(w, val) (w)->wf_array[MCD_WF_Z] = (val)
#define word_set_signature(w, val) (w)->signature = (val)
#define word_set_relative_index(w, val) (w)->relative_index = (val)
#define word_get_relative_index(w) (w)->relative_index
typedef struct _word {
int wf_array[MCD_WF_NB]; /* array containing the codes corresponding to the different word features */
char *input; /* the string corresponding to the actual line in the corpus file */
......
......@@ -11,7 +11,7 @@
#define word_buffer_get_lookahead(wb) (wb)->lookahead
#define word_buffer_get_current_index(wb) (wb)->current_index
#define word_buffer_get_input_file(wb) (wb)->input_file
#define word_buffer_get_mcd(wb) (wb)->input_mcd_struct
#define word_buffer_get_mcd(wb) (wb)->mcd_struct
#define word_buffer_b0(wb) ((wb)->nbelem == 0)? NULL : (wb)->array[(wb)->current_index]
#define word_buffer_b1(wb) ((wb)->current_index + 1 >= (wb)->nbelem)? NULL : (wb)->array[(wb)->current_index + 1]
......@@ -20,6 +20,9 @@
#define word_buffer_bm1(wb) ((wb)->current_index - 1 < 0)? NULL : (wb)->array[(wb)->current_index - 1]
#define word_buffer_bm2(wb) ((wb)->current_index - 2 < 0)? NULL : (wb)->array[(wb)->current_index - 2]
#define word_buffer_bm3(wb) ((wb)->current_index - 3 < 0)? NULL : (wb)->array[(wb)->current_index - 3]
#define word_buffer_nb_elts_right(wb) (wb)->nbelem - (wb)->current_index - 1
#define word_buffer_nb_elts_left(wb) (wb)->current_index
typedef struct {
int size; /* size of the array used to store words */
......@@ -36,19 +39,15 @@ word_buffer *word_buffer_new(FILE *input_file, mcd *mcd_struct, int lookahead);
void word_buffer_free(word_buffer *wb);
int word_buffer_add(word_buffer *wb, word *w);
word *word_buffer_get_word_relative(word_buffer *wb, int dist);
word* word_buffer_get_word_n(word_buffer *wb, int n);
int word_buffer_read_next_word(word_buffer *wb);
int word_buffer_move_right(word_buffer *wb);
int word_buffer_move_left(word_buffer *wb);
void word_buffer_print(FILE *f, word_buffer *wb);
/*
word *word_buffer_b0(word_buffer *wb);
word *word_buffer_b1(word_buffer *wb);
word *word_buffer_b2(word_buffer *wb);
word *word_buffer_b3(word_buffer *wb);
word *word_buffer_bm1(word_buffer *wb);
word *word_buffer_bm2(word_buffer *wb);
word *word_buffer_bm3(word_buffer *wb);
*/
int word_buffer_is_empty(word_buffer *wb);
int word_buffer_is_last(word_buffer *wb);
int word_buffer_end(word_buffer *wb);
int word_buffer_read_sentence(word_buffer *bw);
word_buffer *word_buffer_load_mcf(char *mcf_filename, mcd *mcd_struct);
#endif
......@@ -8,6 +8,21 @@
#include "dico.h"
#include "word_emb.h"
void mcd_remove_wf_column(mcd *m, int wf_code)
{
int col = m->wf2col[wf_code];
m->wf2col[wf_code] = -1;
m->representation[col] = MCD_REPRESENTATION_NULL;
m->wf[col] = -1;
m->wf_str[col] = NULL;
m->filename[col] = NULL;
m->dico_array[col] = NULL;
m->word_emb_array[col] = NULL;
}
mcd *mcd_new(int nb_col)
{
mcd *m = (mcd *)memalloc(sizeof(mcd));
......@@ -30,11 +45,30 @@ mcd *mcd_new(int nb_col)
m->wf_str[i] = NULL;
m->filename[i] = NULL;
m->dico_array[i] = NULL;
m->word_emb_array[i] = NULL;;
m->word_emb_array[i] = NULL;
}
return m;
}
mcd *mcd_copy(mcd *m)
{
int i;
mcd *copy = mcd_new(m->nb_col);
for(i=0; i < MCD_WF_NB; i++)
copy->wf2col[i] = m->wf2col[i] = -1;
for(i=0; i < m->nb_col; i++){
copy->representation[i] = m->representation[i];
copy->wf[i] = m->wf[i];
copy->wf_str[i] = (m->wf_str[i]) ? strdup(m->wf_str[i]) : NULL;
copy->filename[i] = (m->filename[i]) ? strdup(m->filename[i]) : NULL;
copy->dico_array[i] = (m->dico_array[i]) ? m->dico_array[i] : NULL;
copy->word_emb_array[i] = (m->word_emb_array[i])? m->word_emb_array[i] : NULL;
}
return copy;
}
void mcd_free(mcd *m)
{
int i;
......
......@@ -17,7 +17,7 @@ sentence *sentence_new(mcd *m, FILE *f)
sentence *sentence_init(mcd *m, FILE *f)
{
sentence *s = sentence_new(m, f);
sentence_add_word(s, word_create_dummy(m));
/* sentence_add_word(s, word_create_dummy(m)); */
return s;
}
......@@ -35,7 +35,7 @@ void sentence_print(FILE *f, sentence *s, dico *dico_labels)
int i;
for(i=1; i < s->length; i++){
for(i=0; i < s->length; i++){
fprintf(f, "%d\t", i);
word_print(f, s->words[i]);
fprintf(f, "\n");
......@@ -78,7 +78,7 @@ sentence *sentence_read(FILE *f, mcd *mcd_struct)
if(w) sentence_add_word(s, w);
if(word_is_eos(w, mcd_struct)) break;
}
if(s->length == 1){
sentence_free(s);
......
......@@ -16,9 +16,12 @@ word *word_new(char *input)
w->input = strdup(input);
for(i=0; i < MCD_WF_NB; i++) w->wf_array[i] = -1;
w->wf_array[MCD_WF_GOV] = 0;
w->form = NULL;
w->relative_index = -1;
w->signature = -1;
return w;
}
......@@ -124,7 +127,9 @@ void word_print2(FILE *f, word *w)
void word_print(FILE *f, word *w)
{
if(w == NULL) return;
if(w->input == NULL)
fprintf(f, "NULL");
else
fprintf(f, "%s", w->input);
}
......@@ -137,6 +142,14 @@ int word_is_eos(word *w, mcd *mcd_struct)
}
int word_get_gov_relative_index(word *w)
{
if(word_get_gov(w) == 0) return 0;
return word_get_relative_index(w) + word_get_gov(w);
int index;
if(word_get_gov(w) == 0) return -1;
printf("in word_get_gov_rel_index(%d)\n", word_get_relative_index(w));
printf("gov = %d\n", word_get_gov(w));
index = (word_get_relative_index(w)) + (word_get_gov(w));
/* printf("index = %d\n", index); */
return index;
/* return word_get_relative_index(w) + word_get_gov(w); */
}
......@@ -12,9 +12,17 @@ word_buffer *word_buffer_new(FILE *input_file, mcd *mcd_struct, int lookahead)
wb->nbelem = 0;
wb->array = (word **)memalloc(wb->size * sizeof(word *));
wb->current_index = 0;
word_buffer_add(wb, word_new(NULL)); /* add dummy token */
/* load lookahead next words */
wb->lookahead = lookahead;
for(i=0; i <= lookahead; i++)
word_buffer_read_next_word(wb);
word_buffer_move_right(wb); /* pass dummy token */
return wb;
}
......@@ -55,6 +63,8 @@ int word_buffer_add(word_buffer *wb, word *w)
wb->array = (word **)realloc(wb->array, wb->size * sizeof(word *));
}
wb->array[wb->nbelem] = w;
word_set_relative_index(w, wb->nbelem);
wb->nbelem++;
return wb->nbelem - 1;
}
......@@ -64,19 +74,31 @@ word *word_buffer_get_word(word_buffer *wb, int offset)
return ((wb->current_index + offset >=0) && (wb->current_index + offset <= wb->nbelem))? wb->array[wb->current_index + offset] : NULL;
}
word *word_buffer_get_word_n(word_buffer *wb, int n)
{
return ((n >=0) && (n < wb->nbelem))? wb->array[n] : NULL;
}
word_buffer *word_buffer_load_mcf(char *mcf_filename, mcd *mcd_struct)
{
FILE *f = myfopen(mcf_filename, "r");
word_buffer *wb = word_buffer_new(f, mcd_struct, 0);
while(word_buffer_read_next_word(wb) != -1){
/* printf("load word %d\n", wb->nbelem - 1); */
}
fclose(f);
return wb;
}
int word_buffer_read_next_word(word_buffer *wb)
{
word *w = NULL;
int index;
w = word_read(wb->input_file, wb->mcd_struct);
if(w == NULL) return -1;
index = word_buffer_add(wb, w);
word_set_relative_index(w, index);
return index;
word_buffer_add(wb, w);
return wb->nbelem - 1;
}
int word_buffer_move_right(word_buffer *wb)
......@@ -97,41 +119,38 @@ int word_buffer_move_left(word_buffer *wb)
return 0;
}
/*
word *word_buffer_b0(word_buffer *wb)
{
return(wb->nbelem == 0)? NULL : wb->array[wb->current_index];
}
word *word_buffer_b1(word_buffer *wb)
{
return(wb->current_index + 1 >= wb->nbelem)? NULL : wb->array[wb->current_index + 1];
}
word *word_buffer_b2(word_buffer *wb)
int word_buffer_end(word_buffer *wb)
{
return(wb->current_index + 2 >= wb->nbelem)? NULL : wb->array[wb->current_index + 2];
return (wb->current_index == wb->nbelem)? 1 : 0;
}
word *word_buffer_b3(word_buffer *wb)
int word_buffer_is_last(word_buffer *wb)
{
return(wb->current_index + 3 >= wb->nbelem)? NULL : wb->array[wb->current_index + 3];
return (wb->current_index == wb->nbelem - 1)? 1 : 0;
}
word *word_buffer_bm1(word_buffer *wb)
int word_buffer_is_empty(word_buffer *wb)
{
return(wb->current_index - 1 < 0)? NULL : wb->array[wb->current_index - 1];
return (wb->nbelem == 0)? 1 : 0;
}
word *word_buffer_bm2(word_buffer *wb)
int word_buffer_read_sentence(word_buffer *wb)
{
return(wb->current_index - 2 < 0)? NULL : wb->array[wb->current_index - 2];
}
word *word_buffer_bm3(word_buffer *wb)
{
return(wb->current_index - 3 < 0)? NULL : wb->array[wb->current_index - 3];
char buffer[10000];
word *w = NULL;
int index = 1;
while(fgets(buffer, 10000, word_buffer_get_input_file(wb))){
if(feof(word_buffer_get_input_file(wb))) break;
/* fprintf(stderr, "%s", buffer); */
if((buffer[0] == '\n') || (buffer[0] == ' ') || (buffer[0] == '\t')) break; /* end of the sentence */
w = word_parse_buffer(buffer, word_buffer_get_mcd(wb));
word_set_relative_index(w, index);
index++;
word_buffer_add(wb, w);
if(word_is_eos(w, word_buffer_get_mcd(wb))) break;
}
/* return bw->nbelem - 1; */ /* because of the dummy word */
return wb->nbelem ;
}
*/
set(SOURCES src/context.c
src/feat_desc.c
src/movement_parser.c
src/movement_parser_arc_eager.c
src/movement_tagger.c
src/feat_fct.c
src/global_feat_vec.c
src/oracle_parser.c
src/oracle_parser_arc_eager.c
src/oracle_tagger.c
src/simple_decoder_parser.c
src/simple_decoder_forrest.c
......@@ -16,7 +17,7 @@ set(SOURCES src/context.c
src/feat_model.c
src/config.c
src/queue.c
src/beam.c
# src/beam.c
src/feat_types.c
)
......@@ -63,12 +64,12 @@ target_link_libraries(maca_trans_tagger transparse)
target_link_libraries(maca_trans_tagger maca_common)
install (TARGETS maca_trans_tagger DESTINATION bin)
add_executable(maca_trans_parser_train ./src/train_perceptron.c)
target_compile_options(maca_trans_parser_train INTERFACE -Wall)
target_link_libraries(maca_trans_parser_train perceptron)
target_link_libraries(maca_trans_parser_train transparse)
target_link_libraries(maca_trans_parser_train maca_common)
install (TARGETS maca_trans_parser_train DESTINATION bin)
#add_executable(maca_trans_parser_train ./src/train_perceptron.c)
#target_compile_options(maca_trans_parser_train INTERFACE -Wall)
#target_link_libraries(maca_trans_parser_train perceptron)
#target_link_libraries(maca_trans_parser_train transparse)
#target_link_libraries(maca_trans_parser_train maca_common)
#install (TARGETS maca_trans_parser_train DESTINATION bin)
add_executable(test_word_buffer ./src/test_word_buffer.c)
target_compile_options(test_word_buffer INTERFACE -Wall)
......
......@@ -5,14 +5,14 @@
#include"dico.h"
#include"feat_types.h"
config *config_new(FILE *f, mcd *mcd_struct)
config *config_new(FILE *f, mcd *mcd_struct, int lookahead)
{
config *c = (config *)memalloc(sizeof(config));
c->ds = depset_new();
c->f = f;
c->mcd_struct = mcd_struct;
c->st = stack_new();
c->bf = queue_new();
c->bf = word_buffer_new(f, mcd_struct, lookahead);
c->score = 0;
c->mvt_array = NULL;
c->mvt_array_size = 0;
......@@ -23,7 +23,7 @@ config *config_new(FILE *f, mcd *mcd_struct)
return c;
}
word *config_add_next_word_to_buffer(config *c)
/*word *config_add_next_word_to_buffer(config *c)
{
word *w = NULL;
......@@ -31,19 +31,15 @@ word *config_add_next_word_to_buffer(config *c)
if(w == NULL) return NULL;
word_set_relative_index(w, c->current_index);
/* if(word_get_index(w) == -1){
word_set_index(w, c->current_index);
}*/
c->current_index++;
queue_add(c->bf, w);
return w;
}
}*/
void config_free(config *c)
{
stack_free(c->st);
queue_free(c->bf);
word_buffer_free(c->bf);
depset_free(c->ds);
if(c->mvt_array)free(c->mvt_array);
if(c->gfv)global_feat_vec_free(c->gfv);
......@@ -52,40 +48,34 @@ void config_free(config *c)
int config_is_terminal(config *c)
{
return queue_is_empty(c->bf);
return word_buffer_is_last(c->bf);
}
config *config_initial(FILE *f, mcd *mcd_struct, int lookahead)
{
int i;
config *c = config_new(f, mcd_struct);
queue_add(c->bf, word_create_dummy(mcd_struct));
config *c = config_new(f, mcd_struct, lookahead);
for(i=0; i < lookahead; i++)
config_add_next_word_to_buffer(c);
stack_push(c->st, word_create_dummy(mcd_struct));
return c;
}
config *config_initial_no_dummy_word(FILE *f, mcd *mcd_struct, int lookahead)
{
int i;
config *c = config_new(f, mcd_struct);
for(i=0; i < lookahead; i++)
config_add_next_word_to_buffer(c);
config *c = config_new(f, mcd_struct, lookahead);
return c;
}
/* must be checked things probably missing */
config *config_copy(config *o)
{
int i;
config *c = (config *)memalloc(sizeof(config));
c->ds = depset_copy(o->ds);
c->st = stack_copy(o->st);
c->bf = queue_copy(o->bf);
/* c->bf = queue_copy(o->bf); */
c->score = o->score;
c->f = o->f;
......@@ -117,15 +107,13 @@ void config_print(FILE *f, config *c)
if(c){
if(!stack_is_empty(c->st))
s0 = stack_elt_n(c->st, 0);
b0 = queue_elt_n(c->bf, 0);
b0 = word_buffer_b0(c->bf);
if(s0) { printf("s0 = "); word_print2(stdout, s0);}
if(b0) { printf("b0 = "); word_print2(stdout, b0);}
stack_print(f, c->st);
fprintf(f, " ");
queue_print(f, c->bf);
fprintf(f, " ");
depset_print(f, c->ds);
fprintf(f, "\n");
word_buffer_print(f, c->bf);
}
}
......
......@@ -8,6 +8,7 @@
#include"queue.h"
#include"depset.h"
#include"mcd.h"
#include"word_buffer.h"
#include"feat_vec.h"
#include"global_feat_vec.h"
......@@ -17,7 +18,7 @@
typedef struct {
stack *st; /* the stack */
queue *bf; /* the buffer */
word_buffer *bf; /* the buffer */
depset *ds; /* the dependency set */
FILE *f; /* file from which words are read */
mcd *mcd_struct; /* description of the format of file f */
......@@ -32,7 +33,7 @@ typedef struct {
int config_equal(config *c1, config *c2);
int config_equal2(config *c1, config *c2);
config *config_new(FILE *f, mcd *mcd_struct);
config *config_new(FILE *f, mcd *mcd_struct, int lookahead);
config *config_initial(FILE *f, mcd *mcd_struct, int lookahead);
config *config_initial_no_dummy_word(FILE *f, mcd *mcd_struct, int lookahead);
config *config_copy(config *o);
......
This diff is collapsed.
......@@ -296,6 +296,109 @@ int b3Z(config *c);
int b3r(config *c);
int bm1f(config *c);
int bm1l(config *c);
int bm1c(config *c);
int bm1p(config *c);
int bm1m(config *c);
int bm1s(config *c);
int bm1A(config *c);
int bm1B(config *c);
int bm1C(config *c);
int bm1D(config *c);
int bm1E(config *c);
int bm1F(config *c);
int bm1G(config *c);
int bm1H(config *c);
int bm1I(config *c);
int bm1J(config *c);
int bm1K(config *c);
int bm1L(config *c);
int bm1M(config *c);
int bm1N(config *c);
int bm1O(config *c);
int bm1P(config *c);
int bm1Q(config *c);
int bm1R(config *c);
int bm1S(config *c);
int bm1T(config *c);