Hi,
Am 06.12.2013 16:55, schrieb Alexandre Patry:
On 2013-12-06 10:46, Richard Eckart de Castilho wrote:
Hi,
assuming I have a Ruta script with recurring statements of the type
PartOfSpeech{FEATURE("value", "N")
Is it possible to define some kind of macro to replace this long
statement with a short-hand?
MACRO N := PartOfSpeech{FEATURE("value", "N")}
MACRO V := PartOfSpeech{FEATURE("value", "V")}
N{0,2} V
From what I know, RUTA does not support macro yet.
The closest thing I found in Ruta for such a thing was a Block - but
doesn't seem to do what I want, because I would need to ->CALL it.
I would define temporary annotations for N and V. The compromise on
performance is not the same though. It consumes more memory, but
searching for N or V does not require to scan all part-of-speeches
annotations anymore.
I would call that what Alexandre said actually the "Ruta Way" (no pun
intended). Just spam annotations on different levels of abstraction. It
results in a clearer and modular script composition, and in an improved
explanation of the rule inference.
There have been macros for conditions and action (not for complete rule
elements), but I removed them a while ago. I could add such macros again
for rule elements, conditions and actions, but only if someone creates a
feature request ;-)
You could also write something like:
PartOfSpeech.value=="N"[0,2] PartOfSpeech.value=="V";
... but that is only a few characters shorter.
... btw, I am not a fan of the macros in JAPE. Looks to me like a
workaround in order to retain the rules in one phase.
Best,
Peter
Hope this help,
Alexandre