本文整理汇总了C++中Token_stream::end方法的典型用法代码示例。如果您正苦于以下问题:C++ Token_stream::end方法的具体用法?C++ Token_stream::end怎么用?C++ Token_stream::end使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Token_stream
的用法示例。
在下文中一共展示了Token_stream::end方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: get_value
double Symbol_table::get_value(string s)
{
for (int i = 0; i<vars.size(); ++i)
if (vars[i].name == s) return vars[i].value;
ts.end();
error("get: undefined name ",s);
}
示例2: declaration
double declaration()
{
Token t = ts.get();
if (t.kind != VAR) {
ts.end();
error ("Valid name expected in declaration");
}
string name = t.name;
Token t2 = ts.get();
if (t2.kind != '=') {
ts.end();
error("'=' missing in declaration of " ,name);
}
double d = expression();
variables.set_value(name, d);
return d;
}
示例3: 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");
}
}
示例4: term
double term()
{
double left = power();
while(true) {
Token t = ts.get();
switch(t.kind) {
case '*':
left *= power();
break;
case '/':
{ double d = power();
if (d == 0) {
ts.end();
error("divide by zero");
}
left /= d;
break;
}
default:
ts.unget(t);
return left;
}
}
}