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

Reply via email to