Skip to content

Commit 6e8afcd

Browse files
committed
Delete old component-parsing code
1 parent 40863db commit 6e8afcd

File tree

1 file changed

+0
-158
lines changed

1 file changed

+0
-158
lines changed

src/systems/model_parsing.jl

Lines changed: 0 additions & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -1316,164 +1316,6 @@ end
13161316

13171317
### Parsing Components:
13181318

1319-
function component_args!(a, b, varexpr, kwargs; index_name = nothing)
1320-
# Whenever `b` is a function call, skip the first arg aka the function name.
1321-
# Whenever it is a kwargs list, include it.
1322-
start = b.head == :call ? 2 : 1
1323-
for i in start:lastindex(b.args)
1324-
arg = b.args[i]
1325-
arg isa LineNumberNode && continue
1326-
MLStyle.@match arg begin
1327-
x::Symbol ||
1328-
Expr(:kw, x) => begin
1329-
varname, _varname = _rename(a, x)
1330-
b.args[i] = Expr(:kw, x, _varname)
1331-
push!(varexpr.args, :((if $varname !== nothing
1332-
$_varname = $varname
1333-
elseif @isdefined $x
1334-
# Allow users to define a var in `structural_parameters` and set
1335-
# that as positional arg of subcomponents; it is useful for cases
1336-
# where it needs to be passed to multiple subcomponents.
1337-
$_varname = $x
1338-
end)))
1339-
push!(kwargs, Expr(:kw, varname, nothing))
1340-
# dict[:kwargs][varname] = nothing
1341-
end
1342-
Expr(:parameters, x...) => begin
1343-
component_args!(a, arg, varexpr, kwargs)
1344-
end
1345-
Expr(:kw,
1346-
x,
1347-
y) => begin
1348-
varname, _varname = _rename(a, x)
1349-
b.args[i] = Expr(:kw, x, _varname)
1350-
if isnothing(index_name)
1351-
push!(varexpr.args, :($_varname = $varname === nothing ? $y : $varname))
1352-
else
1353-
push!(varexpr.args,
1354-
:($_varname = $varname === nothing ? $y : $varname[$index_name]))
1355-
end
1356-
push!(kwargs, Expr(:kw, varname, nothing))
1357-
# dict[:kwargs][varname] = nothing
1358-
end
1359-
_ => error("Could not parse $arg of component $a")
1360-
end
1361-
end
1362-
end
1363-
1364-
model_name(name, range) = Symbol.(name, :_, collect(range))
1365-
1366-
function _parse_components!(body, kwargs)
1367-
local expr
1368-
varexpr = Expr(:block)
1369-
comps = Vector{Union{Union{Expr, Symbol}, Expr}}[]
1370-
comp_names = []
1371-
1372-
Base.remove_linenums!(body)
1373-
arg = body.args[end]
1374-
1375-
MLStyle.@match arg begin
1376-
Expr(:(=),
1377-
a,
1378-
Expr(:comprehension, Expr(:generator, b, Expr(:(=), c, d)))) => begin
1379-
array_varexpr = Expr(:block)
1380-
1381-
push!(comp_names, :($a...))
1382-
push!(comps, [a, b.args[1], d])
1383-
b = deepcopy(b)
1384-
1385-
component_args!(a, b, array_varexpr, kwargs; index_name = c)
1386-
1387-
expr = _named_idxs(a, d, :($c -> $b); extra_args = array_varexpr)
1388-
end
1389-
Expr(:(=),
1390-
a,
1391-
Expr(:comprehension, Expr(:generator, b, Expr(:filter, e, Expr(:(=), c, d))))) => begin
1392-
error("List comprehensions with conditional statements aren't supported.")
1393-
end
1394-
Expr(:(=),
1395-
a,
1396-
Expr(:comprehension, Expr(:generator, b, Expr(:(=), c, d), e...))) => begin
1397-
# Note that `e` is of the form `Tuple{Expr(:(=), c, d)}`
1398-
error("More than one index isn't supported while building component array")
1399-
end
1400-
Expr(:block) => begin
1401-
# TODO: Do we need this?
1402-
error("Multiple `@components` block detected within a single block")
1403-
end
1404-
Expr(:(=),
1405-
a,
1406-
Expr(:for, Expr(:(=), c, d), b)) => begin
1407-
Base.remove_linenums!(b)
1408-
array_varexpr = Expr(:block)
1409-
push!(array_varexpr.args, b.args[1:(end - 1)]...)
1410-
push!(comp_names, :($a...))
1411-
push!(comps, [a, b.args[end].args[1], d])
1412-
b = deepcopy(b)
1413-
1414-
component_args!(a, b.args[end], array_varexpr, kwargs; index_name = c)
1415-
1416-
expr = _named_idxs(a, d, :($c -> $(b.args[end])); extra_args = array_varexpr)
1417-
end
1418-
Expr(:(=), a, b) => begin
1419-
arg = deepcopy(arg)
1420-
b = deepcopy(arg.args[2])
1421-
1422-
component_args!(a, b, varexpr, kwargs)
1423-
1424-
arg.args[2] = b
1425-
expr = :(@named $arg)
1426-
push!(comp_names, a)
1427-
if (isa(b.args[1], Symbol) || Meta.isexpr(b.args[1], :.))
1428-
push!(comps, [a, b.args[1]])
1429-
end
1430-
end
1431-
_ => error("Couldn't parse the component body: $arg")
1432-
end
1433-
1434-
return comp_names, comps, expr, varexpr
1435-
end
1436-
1437-
function push_conditional_component!(ifexpr, expr_vec, comp_names, varexpr)
1438-
blk = Expr(:block)
1439-
push!(blk.args, varexpr)
1440-
push!(blk.args, expr_vec)
1441-
push!(blk.args, :($push!(systems, $(comp_names...))))
1442-
push!(ifexpr.args, blk)
1443-
end
1444-
1445-
function handle_if_x!(mod, exprs, ifexpr, x, kwargs, condition = nothing)
1446-
push!(ifexpr.args, condition)
1447-
comp_names, comps, expr_vec, varexpr = _parse_components!(x, kwargs)
1448-
push_conditional_component!(ifexpr, expr_vec, comp_names, varexpr)
1449-
comps
1450-
end
1451-
1452-
function handle_if_y!(exprs, ifexpr, y, kwargs)
1453-
Base.remove_linenums!(y)
1454-
if Meta.isexpr(y, :elseif)
1455-
comps = [:elseif, y.args[1]]
1456-
elseifexpr = Expr(:elseif)
1457-
push!(comps, handle_if_x!(mod, exprs, elseifexpr, y.args[2], kwargs, y.args[1]))
1458-
get(y.args, 3, nothing) !== nothing &&
1459-
push!(comps, handle_if_y!(exprs, elseifexpr, y.args[3], kwargs))
1460-
push!(ifexpr.args, elseifexpr)
1461-
(comps...,)
1462-
else
1463-
comp_names, comps, expr_vec, varexpr = _parse_components!(y, kwargs)
1464-
push_conditional_component!(ifexpr, expr_vec, comp_names, varexpr)
1465-
comps
1466-
end
1467-
end
1468-
1469-
function handle_conditional_components(condition, dict, exprs, kwargs, x, y = nothing)
1470-
ifexpr = Expr(:if)
1471-
comps = handle_if_x!(mod, exprs, ifexpr, x, kwargs, condition)
1472-
ycomps = y === nothing ? [] : handle_if_y!(exprs, ifexpr, y, kwargs)
1473-
push!(exprs, ifexpr)
1474-
push!(dict[:components], (:if, condition, comps, ycomps))
1475-
end
1476-
14771319
""" `push!`, or `append!`, depending on `x`'s type """
14781320
push_append!(vec, x::AbstractVector) = append!(vec, x)
14791321
push_append!(vec, x) = push!(vec, x)

0 commit comments

Comments
 (0)