88Variable (name; subtype:: Symbol , dependents:: Vector{Variable} = Variable[]) =
99 Variable (name, subtype, nothing , dependents)
1010
11- Parameter (name,args... ;kwargs... ) = Variable (name,args... ;subtype= :Parameter ,kwargs... )
12- IndependentVariable (name,args... ;kwargs... ) = Variable (name,args... ;subtype= :IndependentVariable ,kwargs... )
13- Unknown (name,args... ;kwargs... ) = Variable (name,args... ;subtype= :Unknown ,kwargs... )
11+ Parameter (name; kwargs... ) = Variable (name; subtype= :Parameter , kwargs... )
12+ Unknown (name, ;kwargs... ) = Variable (name; subtype= :Unknown , kwargs... )
1413
15- export Variable,Parameter,Constant,Unknown,IndependentVariable,
16- @Param , @Const , @Unknown , @IVar
14+ export Variable, Unknown, Parameter, Constant, @Unknown , @Param , @Const
1715
1816
1917Base. copy (x:: Variable ) = Variable (x. name, x. subtype, x. diff, x. dependents)
5351# Build variables more easily
5452function _parse_vars (macroname, fun, x)
5553 ex = Expr (:block )
56- lhss = Symbol[]
54+ var_names = Symbol[]
5755 # if parsing things in the form of
5856 # begin
5957 # x
@@ -62,33 +60,30 @@ function _parse_vars(macroname, fun, x)
6260 # end
6361 x = flatten_expr! (x)
6462 for _var in x
65- iscall = typeof (_var) <: Expr && _var. head == :call
63+ iscall = isa (_var, Expr) && _var. head == :call
6664 issym = _var isa Symbol
67- @assert iscall || issym " @$macroname expects a tuple of expressions! \n E.g. `@$macroname x y z` "
65+ @assert iscall || issym " @$macroname expects a tuple of expressions ( `@$macroname x y z(t)`) "
6866
6967 if iscall
7068 dependents = :(Variable[$ (_var. args[2 : end ]. .. )])
71- lhs = _var. args[1 ]
69+ var_name = _var. args[1 ]
7270 else
7371 dependents = Variable[]
74- lhs = _var
72+ var_name = _var
7573 end
7674
77- push! (lhss, lhs)
78- expr = :( $ lhs = $ fun ( Symbol ($ (String (lhs))) ,
79- dependents = $ dependents))
75+ push! (var_names, var_name)
76+ expr = :($ var_name = $ fun ($ (Meta. quot (var_name)), dependents = $ dependents))
8077 push! (ex. args, expr)
8178 end
82- push! (ex. args, build_expr (:tuple , lhss ))
79+ push! (ex. args, build_expr (:tuple , var_names ))
8380 return ex
8481end
85-
86- for funs in [(:Unknown , :Unknown ), (:IVar , :IndependentVariable ), (:Param , :Parameter )]
87- @eval begin
88- macro ($ (funs[1 ]))(x... )
89- esc (_parse_vars (String ($ funs[1 ]), $ funs[2 ], x))
90- end
91- end
82+ macro Unknown (xs... )
83+ esc (_parse_vars (:Unknown , Unknown, xs))
84+ end
85+ macro Param (xs... )
86+ esc (_parse_vars (:Param , Parameter, xs))
9287end
9388
9489function _const_assign (x)
0 commit comments