Пример #1
0
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;
}
Пример #2
0
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;
}
Пример #4
0
double define_name(string var, double val)
{
	if (is_declared(var))
		error(var, " declared twice.");
	var_table.push_back(Variable(var,val));
	return val;
}
Пример #5
0
 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;
 }
Пример #6
0
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;
}
Пример #7
0
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;
}
Пример #8
0
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;
}
Пример #9
0
 //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;
     }
 }
Пример #10
0
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;
}
Пример #11
0
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;
}
Пример #14
0
// (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));
}
Пример #15
0
tValType add_variable(string s,tValType val){
	if (is_declared(s)) error(s, " is declared");
	var_table.push_back(Variable(s,val));
	return val;
}
Пример #16
0
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;
}