diff options
author | Saracen <SaracenOne@gmail.com> | 2017-02-06 22:44:22 +0000 |
---|---|---|
committer | Saracen <SaracenOne@gmail.com> | 2017-02-28 21:52:33 +0000 |
commit | 5e938f000136c076f9f35b8332dc7c022687a983 (patch) | |
tree | a8e79b3f4a557ce4097791f5622728c69d22764f /modules/gdscript | |
parent | 0f8c6dd3822c38b8145f08265abb9eba479f4d15 (diff) |
Inf and NaN support added to GDScript.
Diffstat (limited to 'modules/gdscript')
-rw-r--r-- | modules/gdscript/gd_editor.cpp | 10 | ||||
-rw-r--r-- | modules/gdscript/gd_parser.cpp | 16 | ||||
-rw-r--r-- | modules/gdscript/gd_script.cpp | 4 | ||||
-rw-r--r-- | modules/gdscript/gd_tokenizer.cpp | 4 | ||||
-rw-r--r-- | modules/gdscript/gd_tokenizer.h | 2 |
5 files changed, 36 insertions, 0 deletions
diff --git a/modules/gdscript/gd_editor.cpp b/modules/gdscript/gd_editor.cpp index 352016b2d2..9dd41847d7 100644 --- a/modules/gdscript/gd_editor.cpp +++ b/modules/gdscript/gd_editor.cpp @@ -323,6 +323,16 @@ void GDScriptLanguage::get_public_constants(List<Pair<String,Variant> > *p_const pi.first="PI"; pi.second=Math_PI; p_constants->push_back(pi); + + Pair<String, Variant> infinity; + infinity.first = "INF"; + infinity.second = Math_INF; + p_constants->push_back(infinity); + + Pair<String, Variant> nan; + nan.first = "NAN"; + nan.second = Math_NAN; + p_constants->push_back(nan); } String GDScriptLanguage::make_function(const String& p_class,const String& p_name,const PoolStringArray& p_args) const { diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp index 350f596f71..5147ccd63f 100644 --- a/modules/gdscript/gd_parser.cpp +++ b/modules/gdscript/gd_parser.cpp @@ -375,6 +375,22 @@ GDParser::Node* GDParser::_parse_expression(Node *p_parent,bool p_static,bool p_ constant->value=Math_PI; tokenizer->advance(); expr=constant; + } + else if (tokenizer->get_token() == GDTokenizer::TK_CONST_INF) { + + //constant defined by tokenizer + ConstantNode *constant = alloc_node<ConstantNode>(); + constant->value = Math_INF; + tokenizer->advance(); + expr = constant; + } + else if (tokenizer->get_token() == GDTokenizer::TK_CONST_NAN) { + + //constant defined by tokenizer + ConstantNode *constant = alloc_node<ConstantNode>(); + constant->value = Math_NAN; + tokenizer->advance(); + expr = constant; } else if (tokenizer->get_token()==GDTokenizer::TK_PR_PRELOAD) { //constant defined by tokenizer diff --git a/modules/gdscript/gd_script.cpp b/modules/gdscript/gd_script.cpp index d4646aa36d..4e72bc39a4 100644 --- a/modules/gdscript/gd_script.cpp +++ b/modules/gdscript/gd_script.cpp @@ -1517,6 +1517,8 @@ void GDScriptLanguage::init() { } _add_global(StaticCString::create("PI"),Math_PI); + _add_global(StaticCString::create("INF"),Math_INF); + _add_global(StaticCString::create("NAN"),Math_NAN); //populate native classes @@ -1909,6 +1911,8 @@ void GDScriptLanguage::get_reserved_words(List<String> *p_words) const { "bool", "null", "PI", + "INF", + "NAN", "self", "true", // functions diff --git a/modules/gdscript/gd_tokenizer.cpp b/modules/gdscript/gd_tokenizer.cpp index 477a1f1ac8..54b9624e8e 100644 --- a/modules/gdscript/gd_tokenizer.cpp +++ b/modules/gdscript/gd_tokenizer.cpp @@ -120,6 +120,8 @@ const char* GDTokenizer::token_names[TK_MAX]={ "'\\n'", "PI", "_", +"INF", +"NAN", "Error", "EOF", "Cursor"}; @@ -901,6 +903,8 @@ void GDTokenizerText::_advance() { {TK_SELF,"self"}, {TK_CONST_PI,"PI"}, {TK_WILDCARD,"_"}, + {TK_CONST_INF,"INF"}, + {TK_CONST_NAN,"NAN"}, {TK_ERROR,NULL} }; diff --git a/modules/gdscript/gd_tokenizer.h b/modules/gdscript/gd_tokenizer.h index 5d955ff1ae..1e9eda7947 100644 --- a/modules/gdscript/gd_tokenizer.h +++ b/modules/gdscript/gd_tokenizer.h @@ -128,6 +128,8 @@ public: TK_NEWLINE, TK_CONST_PI, TK_WILDCARD, + TK_CONST_INF, + TK_CONST_NAN, TK_ERROR, TK_EOF, TK_CURSOR, //used for code completion |