Added scope new/push to wesley
This commit is contained in:
@@ -54,7 +54,7 @@ class BoxedCPP_System
|
|||||||
|
|
||||||
void pop_scope()
|
void pop_scope()
|
||||||
{
|
{
|
||||||
if (m_scopes.size() == 1)
|
if (m_scopes.size() > 1)
|
||||||
{
|
{
|
||||||
m_scopes.pop_back();
|
m_scopes.pop_back();
|
||||||
} else {
|
} else {
|
||||||
@@ -70,7 +70,7 @@ class BoxedCPP_System
|
|||||||
if (itr != m_scopes[i].end())
|
if (itr != m_scopes[i].end())
|
||||||
{
|
{
|
||||||
return itr->second;
|
return itr->second;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
throw std::range_error("Object not known: " + name);
|
throw std::range_error("Object not known: " + name);
|
||||||
|
@@ -293,9 +293,11 @@ Boxed_Value eval_token(BoxedCPP_System &ss, TokenPtr node) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case (TokenType::Scoped_Block) : {
|
case (TokenType::Scoped_Block) : {
|
||||||
|
ss.new_scope();
|
||||||
for (i = 0; i < node->children.size(); ++i) {
|
for (i = 0; i < node->children.size(); ++i) {
|
||||||
retval = eval_token(ss, node->children[i]);
|
retval = eval_token(ss, node->children[i]);
|
||||||
}
|
}
|
||||||
|
ss.pop_scope();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case (TokenType::Statement) :
|
case (TokenType::Statement) :
|
||||||
@@ -360,7 +362,7 @@ Rule build_parser_rules() {
|
|||||||
negate = Ign(Str("-")) >> boolean;
|
negate = Ign(Str("-")) >> boolean;
|
||||||
return_statement = Ign(Str("return")) >> boolean;
|
return_statement = Ign(Str("return")) >> boolean;
|
||||||
|
|
||||||
value = (Ign(Id(TokenType::Parens_Open)) >> boolean >> Ign(Id(TokenType::Parens_Close))) | return_statement |
|
value = block | (Ign(Id(TokenType::Parens_Open)) >> boolean >> Ign(Id(TokenType::Parens_Close))) | return_statement |
|
||||||
funcall | Id(TokenType::Identifier) | Id(TokenType::Number) | Id(TokenType::Quoted_String) | Id(TokenType::Single_Quoted_String) ;
|
funcall | Id(TokenType::Identifier) | Id(TokenType::Number) | Id(TokenType::Quoted_String) | Id(TokenType::Single_Quoted_String) ;
|
||||||
|
|
||||||
return rule;
|
return rule;
|
||||||
|
Reference in New Issue
Block a user