Syntax
The syntax of the tree
language is similar to any average scripting language namely it consists of:
- tree definitions: subtree that defines a prat of the complete tree.
- tree invocations: the calls of the tree definitions.
- imports: the instructions that enable import from the other files.
- parameters and arguments: that allow passing the values and the other tree to the tree definitions.
- lambda: the ability to define the anonymous tree definitions and invoke it at the same time.
- comments: the extra information.
Below, a simple example that shows the aforementioned points
import "nested/impls.tree"
import "nested/impls.tree" {
grasp => grasp_ball,
}
root place_ball_to_target fallback {
place_to(
obj = {"x":1 },
operation = place([10]),
)
retry(5) ask_for_help()
}
sequence place_to(what:object, operation:tree){
fallback {
is_approachable(what)
do_job(approach(what))
}
fallback {
is_graspable(what)
do_job(approach(what))
}
sequence {
savepoint()
operation(..)
}
}
sequence place(where:array){
is_valid_place(where)
do_job(slowly_drop({"cord":1}))
}
sequence do_job(action:tree){
savepoint()
info_wrapper(action(..))
savepoint()
}
sequence info_wrapper(action:tree){
log("before action")
action(..)
log("before action")
}
impl log(text:string);