dollabs / pamela

Probabalistic Advanced Modeling and Execution Learning Architecture
Apache License 2.0
233 stars 15 forks source link

Extend pclass-ctor-options to be strings OR references #146

Closed dcerys closed 6 years ago

dcerys commented 6 years ago

Currently pclass-ctor-options ( id | plant-part | interface ) are restricted to be literal strings.

Extend pclass-ctor-options so the values can be either a string or a symbolic reference.

The following example is in test/pending/pclass-ctor-option-as-parg.pamela:

;;
;; When supported, you should be able to generate HTN/TPN via:
;; pamela -i pclass-ctor-option-as-parg.pamela -o pclass-ctor-option-as-parg -t "(main.main)" htn
;;

(defpclass subunit []
  :methods [(defpmethod bar [arg])]
  )

(defpclass unit [id]
  :fields {left (subunit :id id :plant-part "left")
           right (subunit :id id :plant-part "right")}
  :methods [(defpmethod foo [arg]
              (left.bar arg))]
  )

(defpclass main []
  :fields {unit (unit "foo" :id "foo")}
  :methods [(defpmethod main []
              (sequence
               (unit.foo 5)))
            ])