diff options
Diffstat (limited to 'src/gamestate.cpp')
| -rw-r--r-- | src/gamestate.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/gamestate.cpp b/src/gamestate.cpp index d45d53c..e8df070 100644 --- a/src/gamestate.cpp +++ b/src/gamestate.cpp | |||
| @@ -408,6 +408,20 @@ void GameState::parse( const AstBranch::NodeList &lCode ) | |||
| 408 | break; | 408 | break; |
| 409 | 409 | ||
| 410 | case AstNode::tIn: | 410 | case AstNode::tIn: |
| 411 | { | ||
| 412 | Variable v = popDeref(); | ||
| 413 | Variable x = popDeref(); | ||
| 414 | if( v.getType() == Variable::tDictionary ) | ||
| 415 | { | ||
| 416 | push( Variable( v.has( x ) ) ); | ||
| 417 | } | ||
| 418 | else | ||
| 419 | { | ||
| 420 | throw Bu::ExceptionBase("Invalid type for operator in"); | ||
| 421 | } | ||
| 422 | } | ||
| 423 | break; | ||
| 424 | |||
| 411 | case AstNode::tGoto: | 425 | case AstNode::tGoto: |
| 412 | { | 426 | { |
| 413 | Variable x = popDeref(); | 427 | Variable x = popDeref(); |
| @@ -439,6 +453,14 @@ void GameState::parse( const AstBranch::NodeList &lCode ) | |||
| 439 | } | 453 | } |
| 440 | break; | 454 | break; |
| 441 | 455 | ||
| 456 | case AstNode::tInsert: | ||
| 457 | { | ||
| 458 | Variable v = popDeref(); | ||
| 459 | Variable k = popDeref(); | ||
| 460 | lStack.peek().insert( k, v ); | ||
| 461 | } | ||
| 462 | break; | ||
| 463 | |||
| 442 | // tLeafLiteral | 464 | // tLeafLiteral |
| 443 | case AstNode::tVarName: | 465 | case AstNode::tVarName: |
| 444 | case AstNode::tLiteral: | 466 | case AstNode::tLiteral: |
