Skip to content

Commit da99287

Browse files
committed
refactor
1 parent 57eed3e commit da99287

File tree

1 file changed

+17
-29
lines changed

1 file changed

+17
-29
lines changed

src/matchers.jl

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -130,48 +130,36 @@ function term_matcher_constructor(term, acSets)
130130
data = car(data) # from (..., ) to ...
131131
!iscall(data) && return nothing # if first element is not a call, return nothing
132132

133-
# if data is of the alternative form (1/...)^(...), it might match with negative exponent
133+
result = loop(data, bindings, matchers)
134+
result !== nothing && return success(result, 1)
135+
136+
frankestein = nothing
134137
if (operation(data) === ^) && iscall(arguments(data)[1]) && (operation(arguments(data)[1]) === /) && isequal(arguments(arguments(data)[1])[1], 1)
138+
# if data is of the alternative form (1/...)^(...)
135139
one_over_smth = arguments(data)[1]
136140
T = symtype(one_over_smth)
137141
frankestein = Term{T}(^, [arguments(one_over_smth)[2], -arguments(data)[2]])
138-
result = loop(frankestein, bindings, matchers)
139-
result !== nothing && return success(result, 1)
140-
end
141-
142-
result = loop(data, bindings, matchers)
143-
result !== nothing && return success(result, 1)
144-
145-
# if data is of the alternative form 1/(...)^(...), it might match with negative exponent
146-
if (operation(data) === /) && isequal(arguments(data)[1], 1) && iscall(arguments(data)[2]) && (operation(arguments(data)[2]) === ^)
142+
elseif (operation(data) === /) && isequal(arguments(data)[1], 1) && iscall(arguments(data)[2]) && (operation(arguments(data)[2]) === ^)
143+
# if data is of the alternative form 1/(...)^(...)
147144
denominator = arguments(data)[2]
148145
T = symtype(denominator)
149146
frankestein = Term{T}(^, [arguments(denominator)[1], -arguments(denominator)[2]])
150-
result = loop(frankestein, bindings, matchers)
151-
result !== nothing && return success(result, 1)
152-
end
153-
154-
# if data is of the alternative form 1/(...), it might match with exponent = -1
155-
if (operation(data) === /) && isequal(arguments(data)[1], 1)
147+
elseif (operation(data) === /) && isequal(arguments(data)[1], 1)
148+
# if data is of the alternative form 1/(...), it might match with exponent = -1
156149
denominator = arguments(data)[2]
157150
T = symtype(denominator)
158151
frankestein = Term{T}(^, [denominator, -1])
159-
result = loop(frankestein, bindings, matchers)
160-
result !== nothing && return success(result, 1)
161-
end
162-
163-
# if data is a exp call, it might match with base e
164-
if operation(data)===exp
152+
elseif operation(data)===exp
153+
# if data is a exp call, it might match with base e
165154
T = symtype(arguments(data)[1])
166-
frankestein = Term{T}(^,[ℯ,arguments(data)[1]])
167-
result = loop(frankestein, bindings, matchers)
168-
result !== nothing && return success(result, 1)
169-
end
170-
171-
# if data is a sqrt call, it might match with exponent 1//2
172-
if operation(data)===sqrt
155+
frankestein = Term{T}(^,[ℯ, arguments(data)[1]])
156+
elseif operation(data)===sqrt
157+
# if data is a sqrt call, it might match with exponent 1//2
173158
T = symtype(arguments(data)[1])
174159
frankestein = Term{T}(^,[arguments(data)[1], 1//2])
160+
end
161+
162+
if frankestein !==nothing
175163
result = loop(frankestein, bindings, matchers)
176164
result !== nothing && return success(result, 1)
177165
end

0 commit comments

Comments
 (0)