1- export Variable, Unknown, Parameter, @Unknown , @Param
1+ export Variable, @Variable , @Param
22
33
44struct Variable <: Expression
55 name:: Symbol
6- known:: Bool
76 dependents:: Vector{Variable}
7+ known:: Bool
8+ Variable (name, dependents = Variable[]; known = false ) =
9+ new (name, dependents, known)
810end
911
10- Parameter (name, dependents = Variable[]) = Variable (name, true , dependents)
11- Unknown (name, dependents = Variable[]) = Variable (name, false , dependents)
12-
1312
1413struct Constant <: Expression
1514 value:: Number
@@ -41,7 +40,7 @@ Base.convert(::Type{Expr}, c::Constant) = c.value
4140Base. show (io:: IO , x:: Variable ) = print (io, x. name)
4241
4342# Build variables more easily
44- function _parse_vars (macroname, fun , x)
43+ function _parse_vars (macroname, known , x)
4544 ex = Expr (:block )
4645 var_names = Symbol[]
4746 # if parsing things in the form of
@@ -65,15 +64,15 @@ function _parse_vars(macroname, fun, x)
6564 end
6665
6766 push! (var_names, var_name)
68- expr = :($ var_name = $ fun ($ (Meta. quot (var_name)), $ dependents))
67+ expr = :($ var_name = $ Variable ($ (Meta. quot (var_name)), $ dependents; known = $ known ))
6968 push! (ex. args, expr)
7069 end
7170 push! (ex. args, build_expr (:tuple , var_names))
7271 return ex
7372end
74- macro Unknown (xs... )
75- esc (_parse_vars (:Unknown , Unknown , xs))
73+ macro Variable (xs... )
74+ esc (_parse_vars (:Variable , false , xs))
7675end
7776macro Param (xs... )
78- esc (_parse_vars (:Param , Parameter , xs))
77+ esc (_parse_vars (:Param , true , xs))
7978end
0 commit comments