void parseRn(){ if(NT == 1000){ read("id"); }else if(NT == 2000){ read("int"); }else if(NT == 3000){ read("str"); }else if(NT == 4000){ if(keyword == "true"){ read("true"); buildTree("<true>", 0); }else if(keyword == "false"){ read("false"); buildTree("<false>", 0); }else if(keyword == "nil"){ read("nil"); buildTree("<nil>" , 0); }else if(keyword == "("){ read("("); parseE(); read(")"); }else if(keyword == "dummy"){ read("dummy"); buildTree("<dummy>", 0); } } }
void parseE(){ if(NT == 4000 && keyword == "let"){ read("let"); parseD(); read("in"); parseE(); buildTree("let", 2); }else if(NT == 4000 && keyword == "fn"){ read("fn"); parseVb(); int n= 1; while(NT == 1000 || (NT == 4000 && keyword == "(")){ parseVb(); n++; } read("."); parseE(); buildTree("lambda", n+1); }else{ parseEw(); } }
void parseDb(){ if(NT == 1000){ parseVl(); if(NT == 4000 && keyword == "="){ read("="); parseE(); buildTree("=", 2); }else if(NT == 1000 || (NT == 4000 && keyword == "(")){ parseVb(); int n = 1; while(NT == 1000 || (NT == 4000 && keyword == "(")){ parseVb(); n++; } read("="); parseE(); buildTree("function_form" , n+2); } }else if(NT == 4000 && keyword == "("){ read("("); parseD(); read(")"); } }
plyElements parseRow(char* text,int length) { switch(text[0]) { case 'p': { return parseP(text,length); } case 'f': { return FORMAT; } case 'c': { return COMMENT; } case 'e': { return parseE(text,length); } } }
Steps::Steps( const char* vlist, const char* clist, const char* elist, int nIn ) : vstepsLen( 1 ), cstepsLen( 1 ), estepsLen( 1 ), seatSteps( NULL ), v( 0 ), c( 0 ), e( -1 ), n( nIn ) { if ( vlist ) { parseV( vlist ); } else { vsteps = (int*)malloc( sizeof(int) ); vstepsLen = 0; } if ( clist ) { parseC( clist ); } else { csteps = (int*)malloc( sizeof(int) ); cstepsLen = 0; } if ( elist ) { parseE( elist ); } else { esteps = (float*)malloc( sizeof(float) ); estepsLen = 0; } }