Create an omnifix calculator Inspiration. Inverse.
Evaluate a given omnifix expression.
Omnifix is like normal mathematics' infix notation, but with additional copies of each symbol surrounding the arguments. The outer symbols take the place of parentheses, and there is therefore no need for additional parentheses.
You must support addition, subtraction, multiplication, division, and positive real numbers (negative ones can be written -0-n-) within a reasonable range for your language.
Plus and minus must be + and -, but you may use * or × for times and / or ÷ for divide. Other reasonable symbols will be allowed upon request.
Brownie points for explanation and additional features (like additional operations, negative numbers, strings, etc.) Even if your answer does not have these features, feel free to show how it could.
Please provide a link to test your solution if at all possible.
Examples
For clarity, the explanations below use high minus (¯) to indicate negative numbers. You may return negative numbers using any reasonable format.
-5-2- → 3
+2+×3×2×+ → 8 (+2+×3×2×+ → +2+6+ → 8)
-14--3-1-- → 12 (-4--3-1-- → -14-2- → 12)
+2.1+×3.5×2.2×+ → 9.8 (+2.1+×3.5×2.2×+ → +2.1+7.7+ → 9.8)
×3×÷-0-6-÷2÷× → -9 (×3×÷-0-6-÷2÷× → ×3×÷¯6÷2÷× → ×3×¯3× → ¯9)
÷4÷-3-÷1÷2÷-÷ → 1.6 (÷4÷-3-÷1÷2÷-÷ → ÷4÷-3-0.5-÷ → ÷4÷2.5÷ → 1.6)
Python 3, 159 158 152 144 136 135 132 bytes

def t(i,a=1):
 while'-'&lt;l[i]!='/':i+=1;a=0
 if a:l[i]='(';i=t(t(i+1));l[i-1]=')'
 return-~i
*l,=input()
t(0)
print(eval(''.join(l)))


Try it online!

Doesn't allow negative numbers (though -0-5- works of course) and requires python operators.