1. check AutoFooter if all files are there, add new files when necessary 2. generate flex.c and bison.c by typing: flex -i -I -L -s -t yabasic.flex >flex.c perl -i -n -e 'if (!/^\#include\s+\s+$$/) {print if $$i;$$i++}' flex.c bison -d -l -t -v --output-file bison.c yabasic.bison 3. edit flex.c as follows: - add the headers (after #include) and the static declaration #include #include "program.h" static int isparsed = 0; - replace the default input buffer size #define YY_BUF_SIZE 16384 with #define YY_BUF_SIZE PROGLEN - search for #define YY_INPUT(buf,result,max_size) \ replace the last lines of this define else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); with else if ( ((result = zread( buf, 1, max_size, yyin )) == 0) && !ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); - add to the function static int yy_get_next_buffer() after int ret_val; the following line if(isparsed) return EOB_ACT_END_OF_FILE; - add the function zread at the end of flex.c: int zread(char* dest, size_t memb_size, size_t num_memb, FILE *file) { long destlen = PROGLEN; if(isparsed==1) return 0; isparsed = 1; uncompress(dest,&destlen,myProg,sizeof(myProg)); return destlen; } - NOTE: you only have to go through this process when new commands have been added to yabasic.flex. Otherwise you can just take the modified flex.c from the last BuildFactory. 4. edit main.c as follows: - search for the function int isbound(void) delete the whole function and replace it with: int isbound(void) { FILE *interpreter; if (!interpreter_path || !interpreter_path[0]) { error(FATAL,"interpreter_path is not set !"); return 0; } if (!(interpreter=fopen(interpreter_path,"r"))) { sprintf(string,"Couldn't open '%s' to check, if it is bound: %s",interpreter_path,my_strerror(errno)); error(WARNING,string); return 0; } return 1; }