Сегодня утром я понял, что можно генерировать теги с использованием литеральных строк. Однако это своего рода хакинг, поскольку он основан на знании того, что Apertium помещает теги в <>, и мне кажется, что пользователь FlexTrans действительно не должен полагаться на такие детали.
Тем не менее, это означает, что, извлекая базовую информацию из входного потока (например, класс существительного) в переменную литеральной строки (например, var v_noun_class := string ‘3’), можно сделать что-то вроде:
let var v_gloss = “<”
append var v_gloss “NPx”
append var v_gloss “_”
append var v_gloss var v_noun_class
append var v_gloss “>”
… а затем вывести var v_gloss, и результат будет синтезирован корректно (так, как если бы я вывел литеральный тег NPx_3)
В моем случае это также позволяет генерировать тег суффикса в отдельной переменной, просто заменив NPx на NSx, – что гораздо проще (и читабельнее), чем управлять большой структурой choose when … when … when … для каждого выходного аффиксного тега, содержащего информацию о классе существительного и что-то еще.
Так что, с одной стороны, это кажется уродливым хакингом, а с другой – позволяет более элегантно и читабельно генерировать сложные аффиксные теги. Что вы думаете об этом подходе?
С уважением, bruce
I realised this morning that it is possible to generate tags using literal strings. It is, however, a bit of a hack, because it relies on knowing that Apertium puts tags in <> and it feels to me that the FlexTrans user really shouldn’t be relying on such details.
However, it means that, having extracted basic information from the input stream (like noun class) into a literal string variable (e.g., var v_noun_class := string ‘3’), one can do something like:
let var v_gloss = “<”
append var v_gloss “NPx”
append var v_gloss “_”
append var v_gloss var v_noun_class
append var v_gloss “>”
… and then output var v_gloss and the result will synthesize correctly (just as if I had output the literal tag NPx_3)
In my case, it means I can also generate a suffix tag in a separate variable, just changing NPx to NSx – which is a lot easier (and more readable) than managing a big choose when … when … when … structure for each output affix tag that includes noun class information and something more.
So on the one hand, it seems to be an ugly hack, and on the other, it allows more elegant and readable generation of complicated affix tags. What are your thoughts on this approach?
Cheers, bruce