diff --git a/anselme/common/init.lua b/anselme/common/init.lua index 4b7508f..e125d33 100644 --- a/anselme/common/init.lua +++ b/anselme/common/init.lua @@ -34,6 +34,7 @@ local common = { prefixes = { { ">", 4 }, -- just above _=_ { "!", 11 }, + { "+", 11 }, { "-", 11 }, { "*", 11 }, { "%", 11 }, diff --git a/anselme/parser/expression/primary/init.lua b/anselme/parser/expression/primary/init.lua index bf3e357..df5ed41 100644 --- a/anselme/parser/expression/primary/init.lua +++ b/anselme/parser/expression/primary/init.lua @@ -25,6 +25,7 @@ local primaries = { r("prefix.function"), r("prefix.wrap"), r("prefix.negation"), + r("prefix.positive"), r("prefix.not"), r("prefix.mutable"), r("prefix.translatable"), diff --git a/anselme/parser/expression/primary/prefix/positive.lua b/anselme/parser/expression/primary/prefix/positive.lua new file mode 100644 index 0000000..bbe810d --- /dev/null +++ b/anselme/parser/expression/primary/prefix/positive.lua @@ -0,0 +1,9 @@ +local prefix = require("anselme.parser.expression.primary.prefix.prefix") + +local operator_priority = require("anselme.common").operator_priority + +return prefix { + operator = "+", + identifier = "+_", + priority = operator_priority["+_"] +} diff --git a/anselme/stdlib/number.lua b/anselme/stdlib/number.lua index 0e24300..f181497 100644 --- a/anselme/stdlib/number.lua +++ b/anselme/stdlib/number.lua @@ -57,6 +57,7 @@ return { { "_%_", "(a::is number, b::is number)", function(state, a, b) return Number:new(a.number % b.number) end }, { "_^_", "(a::is number, b::is number)", function(state, a, b) return Number:new(a.number ^ b.number) end }, { "-_", "(a::is number)", function(state, a) return Number:new(-a.number) end }, + { "+_", "(a::is number)", function(state, a) return a end }, { "rand", "(min::is number, max::is number)", function(state, min, max) return Number:new(math.random(min.number, max.number)) end }, { "rand", "(max::is number)", function(state, max) return Number:new(math.random(max.number)) end },