double define_name(string s, double val, bool var=true) // add (s,val,var) to var_table { if (is_declared(s)) error(s," declared twice"); var_table.push_back(Variable(s,val,var)); return val; }
double define_name(string var, double val) { if(is_declared(var)) error("define_name: variable already declared."); var_table.push_back(Variable(var,val)); return val; }
double define_name(string var, double val) // add (var, val) to names { if(is_declared(var)) error(var, " declared twice, =" + to_string( get_value(var) ) ); names.push_back(Variable(var,val)); return val; }
double define_name(string var, double val) { if (is_declared(var)) error(var, " declared twice."); var_table.push_back(Variable(var,val)); return val; }
void l_variables_context::must_to_be_global_value(l_function* fun, l_syntactic_tree::variable_node* variable_node) { //not dec? if(!is_declared(fun,variable_node)) add_variable_into_table(fun, variable_node); //.. m_funs_table[fun][ variable_index(variable_node->m_name) ].m_context_type = const_info::T_CTX_MUST_TO_BE_GLOBAL; }
double define_name(string var, double val) //adds variable name var, value val to the table { //if variable already on the table (if is_declared() returns true) if(is_declared(var)) error(var, " declared twice"); variablesTable.push_back(Variables(var, val)); return val; }
double declaration() { Token t = ts.get(); if (t.kind != name) error ("name expected in declaration"); // 名前トークンでない場合 string name = t.name; if (is_declared(name)) error(name, " declared twice"); // すでに同じ名前の変数が定義されている場合 Token t2 = ts.get(); if (t2.kind != '=') error("= missing in declaration of " ,name); // 文法の"="がない場合 double d = expression(); names.push_back(Variable(t.name, d)); // namesに変数名と値を追加 return d; }
double declaration() { Token t = ts.get(); if (t.kind != 'a') error("name expected in declaration"); string name = t.name; if (is_declared(name)) error(name, " declared twice"); Token t2 = ts.get(); if (t2.kind != '=') error("= missing in declaration of ", name); double d = expression(); names.push_back(Variable(name, d)); return d; }
//isn't an up value void l_variables_context::is_not_upper_value(l_function* fun, l_syntactic_tree::variable_node* variable_node) { //not dec? if(!is_declared(fun,variable_node)) add_variable_into_table(fun, variable_node); //get ref auto& context_type = m_funs_table[fun][ variable_index(variable_node->m_name) ].m_context_type; //if can change value if( context_type == const_info::T_CTX_CAN_TO_BE_UPPER) { context_type = const_info::T_CTX_CAN_NOT_TO_BE_UPPER; } }
double Symbol_table::declare(string var, double val, bool is_const) //add (var,val) to table { if(is_declared(var)) error(var, "declared twice"); if (is_const) { Variable v(var, val); v.readonly = true; var_table.push_back(v); } else { var_table.push_back(Variable(var,val)); } return val; }
void SymbolTable::insert (string name, string type, int line_count, int scope_level) { if (is_declared(name)) { /* Skip without inserting */ } else { var* varptr = new var(); var_info[name] = varptr; var_info[name]->name = name; var_info[name]->type = type; var_info[name]->line = line_count; var_info[name]->scope = scope_level; //var_info[name]->id = GetID(); } }
double Symbol_table::define_name(char type) // Defines a variable { Token t = ts.get(); // Get a character from the stream if (t.kind != 'a') error ("name expected in declaration"); // If there is no name return an error string name = t.name; // Read the name in 'name' if (is_declared(name)) error(name, " declared twice"); // Check if the variable had been already declared Token t2 = ts.get(); // Get a character from the stream if (t2.kind != '=') error("= missing in definition of " ,name); /* If there is no '=' symbol used to assign a value to the variable return an error */ double d = expression(); // Process the provided value switch(type) { case let: names.push_back(Variable(name,d)); // Add new variable to a vector return d; // Return the value of new variable case constant: names.push_back(Variable(name,d,constant)); // Add new constant to a vector return d; // Return the value of new constant } }
double define_var(string s, double d){ if(is_declared(s)) error("declared twice"); names.push_back(Variable(s,d)); return d; }
// (var, val, c)をvar_tableに追加する double Symbol_table::define_name(string var, double val, bool c){ if(is_declared(var)) error(var, " declared twice"); var_table.push_back(Variable(var, val, c)); }
tValType add_variable(string s,tValType val){ if (is_declared(s)) error(s, " is declared"); var_table.push_back(Variable(s,val)); return val; }
double Symbol_table::declare(string s, double val, bool var = true) { if (is_declared(s)) error(s," declared twice"); var_table.push_back(Variable(s,val,var)); return val; }