Skip to content

Commit 69f9907

Browse files
committed
More structured parsing
1 parent 8383b15 commit 69f9907

File tree

1 file changed

+4
-13
lines changed

1 file changed

+4
-13
lines changed

src/systems/connectors.jl

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ end
5656
function parse_variable_def!(dict, mod, arg, varclass)
5757
MLStyle.@match arg begin
5858
::Symbol => generate_var!(dict, arg, varclass)
59-
Expr(:call, a, b) => generate_var!(dict, a, set_iv!(dict, b), varclass)
59+
Expr(:call, a, b) => generate_var!(dict, a, b, varclass)
6060
Expr(:(=), a, b) => begin
6161
var = parse_variable_def!(dict, mod, a, varclass)
6262
def = parse_default(mod, b)
@@ -106,15 +106,6 @@ function generate_var!(dict, a, b, varclass)
106106
end
107107
var
108108
end
109-
function set_iv!(dict, b)
110-
prev_b = get!(dict, :independent_variable_name) do
111-
b
112-
end
113-
if prev_b != b
114-
error("Conflicting independent variable $prev_b and $b")
115-
end
116-
b
117-
end
118109
function parse_default(mod, a)
119110
a = Base.remove_linenums!(deepcopy(a))
120111
MLStyle.@match a begin
@@ -189,17 +180,17 @@ end
189180
function parse_components!(exprs, cs, dict, body)
190181
expr = Expr(:block)
191182
push!(exprs, expr)
192-
comps = Pair{String, String}[]
183+
comps = Vector{String}[]
193184
for arg in body.args
194185
arg isa LineNumberNode && continue
195186
MLStyle.@match arg begin
196187
Expr(:(=), a, b) => begin
197188
push!(cs, a)
189+
push!(comps, [String(a), String(b.args[1])])
198190
arg = deepcopy(arg)
199191
b = deepcopy(arg.args[2])
200192
push!(b.args, Expr(:kw, :name, Meta.quot(a)))
201193
arg.args[2] = b
202-
push!(comps, String(a) => readable_code(b))
203194
push!(expr.args, arg)
204195
end
205196
_ => error("`@components` only takes assignment expressions. Got $arg")
@@ -224,7 +215,7 @@ function parse_extend!(exprs, ext, dict, body)
224215
end
225216
ext[] = a
226217
push!(b.args, Expr(:kw, :name, Meta.quot(a)))
227-
dict[:extend] = Symbol.(vars.args), a, readable_code(b)
218+
dict[:extend] = [Symbol.(vars.args), a, readable_code(b)]
228219
push!(expr.args, :($a = $b))
229220
if vars !== nothing
230221
push!(expr.args, :(@unpack $vars = $a))

0 commit comments

Comments
 (0)