Recursive decoding of value
Hello, I wonder if the following code is correct or if there is a way to adjust it.
It is simplified in the example, but basically it tries to implement a recursive decoding of a value.


``` ksy

      sub_100_modec_t:

        seq:
          - id: value
            type: b12

        instances:
          modec:
            value:  ungray_f(value>>3, 0, 8)

        types:

          ungray_f:
            params:
              - id: c
                type: b12
              - id: pb
                type: b12
              - id: pl
                type: u1

            instances:
              l:
                value: pl-1
              b:
                value: 'pl==0 ? pb : ug'
              ug:
                type: ungray_f(c,'pb^(((pb>>1)^c)&(1<<l)', l)

```
No matter if I declare ug: value:, ug: type:, or if I put all sentence between '' or just part of it, I will keep getting errors, like:

```shell
error: parsing expression 'ungray_f(c,pb^(((pb>>1)^c)&(1<<l), l)' failed on 1:9, expected "::" | CharsWhile(Set( , n)) | "\\\n" | End
```
or
```shell
error: parsing expression 'ungray_f(c,pb^(((pb>>1)^c)&(1<<l), l)' failed on 1:9, expected "or" | CharsWhile(Set( , n)) | "\\\n" | End
```
or

```shell
error: parsing expression 'pl==0 ? pb : ungray_f(c,pb^(((pb>>1)^c)&(1<<l), l)' failed on 1:22, expected "or" | CharsWhile(Set( , n)) | "\\\n" | End
```


The KSY type, tries to implement the following python code:

```python
def ungray2(c, b=0, l=8):
    if l == 0:
        return b
    l -= 1
    return ungray2(c, b ^ (((b >> 1) ^ c) & (1 << l)), l)
```



