Added short form lambda: (x) : { x + 10 }. Fixed eval sample

This commit is contained in:
Jonathan Turner
2009-06-21 00:35:45 +00:00
parent 9f13858482
commit 75431a052b
3 changed files with 4 additions and 4 deletions

View File

@@ -168,7 +168,7 @@ namespace chaiscript
expression = term >> *((Str("+") >> term) | (Str("-") >> term));
term = factor >> *((Str("*") >> factor) | (Str("/") >> factor));
factor = methodcall | arraycall | value | negate | boolean_not | prefix | (Ign(Str("+")) >> value);
value = vardecl | mapinit | arrayinit | block | paren_block | lambda_def | return_statement | break_statement |
value = vardecl | mapinit | arrayinit | block | lambda_def | paren_block | return_statement | break_statement |
funcall | Id(TokenType::Identifier) | Id(TokenType::Real_Number) | Id(TokenType::Integer) | Id(TokenType::Quoted_String) |
Id(TokenType::Single_Quoted_String) ;
@@ -187,7 +187,7 @@ namespace chaiscript
return_statement = Ign(Str("return")) >> ~boolean;
break_statement = Wrap(Ign(Str("break")));
paren_block = (Ign(Id(TokenType::Parens_Open)) >> equation >> Ign(Id(TokenType::Parens_Close)));
lambda_def = Ign(Str("function")) >> ~(Ign(Id(TokenType::Parens_Open)) >> ~params >> Ign(Id(TokenType::Parens_Close))) >> block;
lambda_def = (Ign(Str("function")) >> ~(Ign(Id(TokenType::Parens_Open)) >> ~params >> Ign(Id(TokenType::Parens_Close))) >> block) | (Ign(Id(TokenType::Parens_Open)) >> ~params >> Ign(Id(TokenType::Parens_Close)) >> Ign(Str(":")) >> block);
return rule;
}