1
0
Fork 0
mirror of https://github.com/Reuh/anselme.git synced 2025-10-27 16:49:31 +00:00

Add implicit multiplication

This commit is contained in:
Étienne Fildadut 2022-01-14 21:32:14 +01:00
parent 4214fafc68
commit fd07db83f2
2 changed files with 19 additions and 0 deletions

View file

@ -16,6 +16,7 @@ local binops_prio = {
[12] = {} [12] = {}
} }
local pair_priority = 8 local pair_priority = 8
local implicit_multiply_priority = 7.5 -- just above / so 1/2x gives 1/(2x)
-- unop priority -- unop priority
local prefix_unops_prio = { local prefix_unops_prio = {
[1] = {}, [1] = {},
@ -398,6 +399,22 @@ local function expression(s, state, namespace, current_priority, operating_on)
if not variant then return variant, err end if not variant then return variant, err end
return expression(r, state, namespace, current_priority, variant) return expression(r, state, namespace, current_priority, variant)
end end
-- implicit multiplication
if implicit_multiply_priority > current_priority then
if s:match("^"..identifier_pattern) then
local right, r = expression(s, state, namespace, implicit_multiply_priority)
if right then
local args = {
type = "list",
left = operating_on,
right = right
}
local variant, err = find_function(state, namespace, "_*_", args, true)
if not variant then return variant, err end
return expression(r, state, namespace, current_priority, variant)
end
end
end
-- nothing to operate -- nothing to operate
return operating_on, s return operating_on, s
end end

View file

@ -8,4 +8,6 @@ return [[
:pair="pair" :pair="pair"
:function reference="function reference" :function reference="function reference"
:variable reference="variable reference" :variable reference="variable reference"
:pi=3.1415926535898
]] ]]