/** * Function representing the <st_prime> productions */ void RecursiveDescentParser::st_prime(Type type) { if(errorCondition) return; if(token == TK_COMMA) { token = scanner->getToken(); #if DEBUG_PARSER std::cout << "<st_prime> --> ,i<arr_spec><st_prime>\n"; #endif if(token!=TK_IDENTIFIER){ // error } if(symTab.search(token)) { std::stringstream msg; msg << "Duplicate variable declaration '" << token.getValue() << "'"; errorHandler(msg.str(), token); } VariableEntry* entry = new VariableEntry(); entry->setType(type); symTab.insert(token, entry); token = scanner->getToken(); VariableAttribute va = arr_spec(); entry->setAttribute(va); st_prime(type); } else if(token == TK_SEMICOLON) { #if DEBUG_PARSER std::cout << "<st_prime> --> e\n"; #endif } else { errorHandler(); } }