simple_expressions.jl 921 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. abstract type StarpuExpr end
  2. function apply(func :: Function, expr :: StarpuExpr)
  3. return func(expr)
  4. end
  5. struct StarpuExprVar <: StarpuExpr
  6. name :: Symbol
  7. end
  8. print(io :: IO, x :: StarpuExprVar ; indent = 0) = print(io, x.name)
  9. struct StarpuExprValue <: StarpuExpr
  10. value :: Any
  11. end
  12. function print(io :: IO, x :: StarpuExprValue ; indent = 0)
  13. value = x.value
  14. if value == nothing
  15. return
  16. end
  17. if isa(value, AbstractString)
  18. print(io, '"', value, '"')
  19. return
  20. end
  21. if isa(value, Char)
  22. print(io, '\'', value, '\'')
  23. return
  24. end
  25. print(io, value)
  26. end
  27. struct StarpuExprInvalid <: StarpuExpr
  28. end
  29. print(io :: IO, x :: StarpuExprInvalid ; indent = 0) = print(io, "INVALID")
  30. function starpu_parse(raw_value :: Any)
  31. return StarpuExprValue(raw_value)
  32. end
  33. function starpu_parse(sym :: Symbol)
  34. return StarpuExprVar(sym)
  35. end