本文整理汇总了C++中Symbol_table::get_value方法的典型用法代码示例。如果您正苦于以下问题:C++ Symbol_table::get_value方法的具体用法?C++ Symbol_table::get_value怎么用?C++ Symbol_table::get_value使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Symbol_table
的用法示例。
在下文中一共展示了Symbol_table::get_value方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: primary
double primary(){
Token t = ts.get();
switch(t.kind){
case '(': // '(' Expression ')'を処理する
{
double d = expression();
t = ts.get();
if(t.kind != ')') error("')' expected");
return d;
}
case number: // 数字を表す
return t.value; // 数字の値を返す
case name:
{
Token t2 = ts.get();
if(t2.kind == '='){ // 変数に値を代入
double d = expression();
st.set_value(t.name, d);
return d;
}
else{
ts.putback(t2);
return st.get_value(t.name); // 変数の値を返す
}
}
case '-':
return -primary();
case '+':
return primary();
default:
error("primary expected");
}
}
示例2: primary
double primary()
{
Token t = ts.get();
switch (t.kind) {
// Handles expressions in parentheses.
case '(':
{ double d = expression();
t = ts.get();
if (t.kind != ')') {
ts.end();
error("')' expected");
}
return d;
}
// This handles unary + or -
case '-':
return - primary();
case '+':
return + primary();
case NUMBER:
return t.value;
case VAR:
return variables.get_value(t.name);
case SQRT: {
t=ts.get();
if(t.kind!='(') {
ts.end();
error("sqrt: sqrt must be of the form sqrt(expression)");
}
ts.unget(t);
double d = primary();
if(d<0) {
ts.end();
error("sqrt: cannot take square root of a negative number");
}
return sqrt(d);
}
default:
ts.end();
error("primary expected");
}
}
示例3: primary
double primary() // Processes semicolons, numbers and returns variables
{
Token t = ts.get(); // Get a character
switch (t.kind) {
case '(':
{ double d = expression(); // Perform calculations in semicolons
t = ts.get(); // Get a ')' closing character
if (t.kind != ')') error("')' expected"); // If there wasn't any ')' return an error
return d;
}
case sqrts: // Calculate square root of number or group of numbers
{
return squareroot();
}
case pows:
{
return pow();
}
case '-': // For negative digits
return - primary(); // Return negative digit
case number: // If Token is a number
if(narrow_cast<int>(t.value)) return t.value; // Return the number
case name: // If Token is a name of variable
{
string s = t.name; // Save name of variable
t = ts.get();
if (t.kind == assign) names.set_value(s,expression()); // If there is an assignment symbol then update the value of variable
else ts.unget(t);
return names.get_value(s); // Return the value of the variable
}
case help:
return primary();
default:
error("primary expected"); // Return an error if an inappropriate character was provided
}
}