Author: dhains
Date: Wed Mar 26 06:22:57 2008
New Revision: 25136
URL: http://svn.gna.org/viewcvs/wesnoth?rev=25136&view=rev
Log:
Added comment support to formula AI scripts. See FormulaAI wiki for details.
Modified:
trunk/src/formula.cpp
trunk/src/formula_tokenizer.cpp
trunk/src/formula_tokenizer.hpp
Modified: trunk/src/formula.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/formula.cpp?rev=25136&r1=25135&r2=25136&view=diff
==============================================================================
--- trunk/src/formula.cpp (original)
+++ trunk/src/formula.cpp Wed Mar 26 06:22:57 2008
@@ -324,6 +324,16 @@
}
std::string id_;
};
+
+class null_expression : public formula_expression {
+public:
+ explicit null_expression() {};
+private:
+ variant execute(const formula_callable& variables) const {
+ return variant();
+ }
+};
+
class integer_expression : public formula_expression {
public:
@@ -692,7 +702,7 @@
while(i1 != i2) {
try {
tokens.push_back(get_token(i1,i2));
- if(tokens.back().type == TOKEN_WHITESPACE) {
+ if((tokens.back().type == TOKEN_WHITESPACE) ||
(tokens.back().type == TOKEN_COMMENT)) {
tokens.pop_back();
}
} catch(token_error& /*e*/) {
@@ -701,7 +711,11 @@
}
try {
- expr_ = parse_expression(&tokens[0],&tokens[0] + tokens.size(),
symbols);
+ if(tokens.size() != 0) {
+ expr_ = parse_expression(&tokens[0],&tokens[0] +
tokens.size(), symbols);
+ } else {
+ expr_ = expression_ptr(new null_expression());
+ }
} catch(...) {
std::cerr << "error parsing formula '" << str << "'\n";
throw;
Modified: trunk/src/formula_tokenizer.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/formula_tokenizer.cpp?rev=25136&r1=25135&r2=25136&view=diff
==============================================================================
--- trunk/src/formula_tokenizer.cpp (original)
+++ trunk/src/formula_tokenizer.cpp Wed Mar 26 06:22:57 2008
@@ -41,6 +41,7 @@
{ regex("^\\)"), TOKEN_RPARENS },
{ regex("^\\["), TOKEN_LSQUARE },
{ regex("^\\]"), TOKEN_RSQUARE },
+ { regex("^\\{.*?\\}"), TOKEN_COMMENT },
{ regex("^,"), TOKEN_COMMA },
{ regex("^;"), TOKEN_SEMICOLON },
{ regex("^\\s+"), TOKEN_WHITESPACE }
Modified: trunk/src/formula_tokenizer.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/formula_tokenizer.hpp?rev=25136&r1=25135&r2=25136&view=diff
==============================================================================
--- trunk/src/formula_tokenizer.hpp (original)
+++ trunk/src/formula_tokenizer.hpp Wed Mar 26 06:22:57 2008
@@ -26,7 +26,8 @@
TOKEN_LPARENS, TOKEN_RPARENS,
TOKEN_LSQUARE, TOKEN_RSQUARE,
TOKEN_COMMA, TOKEN_SEMICOLON,
- TOKEN_WHITESPACE, TOKEN_KEYWORD };
+ TOKEN_WHITESPACE, TOKEN_KEYWORD,
+ TOKEN_COMMENT };
struct token {
TOKEN_TYPE type;
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits