The binding rule:

This():
  refers to Field "this"

translates to

nabl-get-name :
  This() -> "this"

nabl-use-site(|lang__, partition__, uniques__, uris__, states__) =
  ?This() ; origin-track-forced(This()|)

which doesn’t do anything.

Submitted by Gabriël Konat on 13 November 2013 at 15:16

On 13 November 2013 at 15:16 Gabriël Konat tagged generator

On 13 November 2013 at 15:16 Gabriël Konat tagged @guwac

On 14 November 2013 at 18:26 Guido Wachsmuth commented:

This actually works, if the term is the reference itself:

This(): refers to Field This()

I think the general problem here is that the name is not part of the pattern.


On 19 January 2014 at 00:32 Guido Wachsmuth commented:

I think it is an error, if the name is not part of the pattern. It causes all kinds of problems. Where should the annotation go? What should get-name return? What is the annotation of the returned name? Instead, I think you should either use a desugaring from This() to FieldRef("this"), if you really like to use the string version, or the term itself as the name.

If you agree, please close.


On 20 January 2014 at 11:31 Gabriël Konat commented:

That’s fine with me, but we should show an error for cases like these that we don’t handle.


On 20 May 2014 at 23:52 Guido Wachsmuth commented:

In NaBL Core, I enforce variables in the syntax of defines clause. Alternatively, you can use a string for implicit definitions, which results in a different constructor for the defines clause. The latter might be generalised to arbitrary terms, except for variables.

Log in to post comments