blob: 6cc6e4f58e2e3e3af17b70f974866f7c17e8bc71 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
--- @class AtomicExpression
--- Interface for an atomic mathematical expression that has no sub-expressions.
AtomicExpression = {}
__AtomicExpression = {}
----------------------
-- Required methods --
----------------------
--- Converts an atomic expression to its equivalent compound expression, if it has one.
--- @return Expression
function AtomicExpression:tocompoundexpression()
return self
end
----------------------
-- Instance methods --
----------------------
--- @return AtomicExpression
function AtomicExpression:evaluate()
return self
end
--- @return AtomicExpression
function AtomicExpression:autosimplify()
return self
end
--- @return table<number, Expression>
function AtomicExpression:subexpressions()
return {}
end
--- @param subexpressions table<number, Expression>
--- @return AtomicExpression
function AtomicExpression:setsubexpressions(subexpressions)
return self
end
--- @param map table<Expression, Expression>
--- @return Expression
function AtomicExpression:substitute(map)
for expression, replacement in pairs(map) do
if self == expression then
return replacement
end
end
return self
end
--- @return boolean
function AtomicExpression:isatomic()
return true
end
--- @return string
function AtomicExpression:tolatex()
-- Most atomic expressions should have the same __tostring as LaTeX's output
return tostring(self)
end
-----------------
-- Inheritance --
-----------------
__AtomicExpression.__index = Expression
AtomicExpression = setmetatable(AtomicExpression, __AtomicExpression)
|