// <readstatement>		::=	READ ( <input variable> { , <input variable> } )
void SyntaxAnalyzer::readStatement(std::set<symboltype> followers)
{
    
    accept(readsy);
    accept(leftparent);
    inputVariable();
    
    while (symbol == comma) {
        accept(comma);
        inputVariable();
    }
    
    accept(rightparent);
} // readstatement( )
 void FllImporter::processInputVariable(const std::string& block, Engine* engine) const {
     std::istringstream reader(block);
     std::string line;
     FL_unique_ptr<InputVariable> inputVariable(new InputVariable);
     while (std::getline(reader, line)) {
         std::pair<std::string, std::string> keyValue = parseKeyValue(line, ':');
         if ("InputVariable" == keyValue.first) {
             inputVariable->setName(Op::validName(keyValue.second));
         } else if ("enabled" == keyValue.first) {
             inputVariable->setEnabled(parseBoolean(keyValue.second));
         } else if ("range" == keyValue.first) {
             std::pair<scalar, scalar> range = parseRange(keyValue.second);
             inputVariable->setRange(range.first, range.second);
         } else if ("lock-range" == keyValue.first) {
             inputVariable->setLockValueInRange(parseBoolean(keyValue.second));
         } else if ("term" == keyValue.first) {
             inputVariable->addTerm(parseTerm(keyValue.second, engine));
         } else {
             throw Exception("[import error] key <" + keyValue.first + "> not "
                     "recognized in pair <" + keyValue.first + ":" + keyValue.second + ">", FL_AT);
         }
     }
     engine->addInputVariable(inputVariable.release());
 }
void inputVariablesOfSubSystem2( vector< Variable* > &subvar2 )
{
    inputVariable( subvar2, "TYPE", TYPE_SUBSYS2 );
    inputVariable( subvar2, "SHAPE", SHAPE_SUBSYS2 );
    inputVariable( subvar2, "LENGTHX", LENGTHX_SUBSYS2 );
    inputVariable( subvar2, "LENGTHY", LENGTHY_SUBSYS2 );
    inputVariable( subvar2, "LENGTHZ", LENGTHZ_SUBSYS2 );
    inputVariable( subvar2, "SURFACEX", SURFACEX_SUBSYS2 );
    inputVariable( subvar2, "SURFACEY", SURFACEY_SUBSYS2 );
    inputVariable( subvar2, "SURFACEZ", SURFACEZ_SUBSYS2 );
    inputVariable( subvar2, "ORIGINX", ORIGINX_SUBSYS2 );
    inputVariable( subvar2, "ORIGINY", ORIGINY_SUBSYS2 );
    inputVariable( subvar2, "ORIGINZ", ORIGINZ_SUBSYS2 );
    inputVariable( subvar2, "xL_pos", XL_POS_SUBSYS2 );
    inputVariable( subvar2, "SOURCE", SOURCE_SUBSYS2 );
    inputVariable( subvar2, "VACANT", VACANT_SUBSYS2 );
    inputVariable( subvar2, "A", A_SUBSYS2 );
    inputVariable( subvar2, "B", B_SUBSYS2 );
    inputVariable( subvar2, "C", C_SUBSYS2 );
}
void inputVariablesOfMainSystem( vector< Variable* > &var )
{
    inputVariable( var, "TYPE", TYPE_MAINSYS );
    inputVariable( var, "SHAPE", SHAPE );
    inputVariable( var, "LENGTHX", LENGTHX );
    inputVariable( var, "LENGTHY", LENGTHY );
    inputVariable( var, "LENGTHZ", LENGTHZ );
    inputVariable( var, "SURFACEX", SURFACEX );
    inputVariable( var, "SURFACEY", SURFACEY );
    inputVariable( var, "SURFACEZ", SURFACEZ );
    inputVariable( var, "ORIGINX", ORIGINX );
    inputVariable( var, "ORIGINY", ORIGINY );
    inputVariable( var, "ORIGINZ", ORIGINZ );
    inputVariable( var, "N_cells", N_CELLS );
}