## Include this file in top-level srcdir to compile FSTs ## Copyright: Sámediggi/Divvun/UiT ## Licence: GPL v3+ # This file is included by $GTLANG/am-shared/src-dir-include.am, which is # included by $GTLANG/src/Makefile.am. All file references are relative to # that Makefile.am. ################################################## ####### Automake targets: ######## if WANT_OAHPA if CAN_HFST GT_ANALYSERS+=analyser-oahpa-gt-norm.hfstol GT_GENERATORS+=generator-oahpa-gt-norm.hfstol \ $(OAHPA_DIALECT_TARGETS_HFST) endif # CAN_HFST if CAN_XFST GT_ANALYSERS+=analyser-oahpa-gt-norm.xfst GT_GENERATORS+=generator-oahpa-gt-norm.xfst \ $(OAHPA_DIALECT_TARGETS_XFST) endif # CAN_XFST if CAN_FOMA GT_ANALYSERS+=analyser-oahpa-gt-norm.foma GT_GENERATORS+=generator-oahpa-gt-norm.foma \ $(OAHPA_DIALECT_TARGETS_FOMA) endif # CAN_FOMA endif # WANT_OAHPA # Define the dialect targets using list of dialects defined in configure.ac: if HAVE_DIALECTS OAHPA_DIALECT_TARGETS=$(addprefix generator-oahpa-gt-norm-dial_,$(DIALECTS)) OAHPA_DIALECT_TARGETS_HFST=$(addsuffix .hfstol,$(OAHPA_DIALECT_TARGETS)) OAHPA_DIALECT_TARGETS_XFST=$(addsuffix .xfst,$(OAHPA_DIALECT_TARGETS)) OAHPA_DIALECT_TARGETS_FOMA=$(addsuffix .foma,$(OAHPA_DIALECT_TARGETS)) endif # HAVE_DIALECTS if WANT_L2 if CAN_HFST GT_ANALYSERS+=analyser-oahpa-gt-error.hfstol GT_RAW+=analyser-raw-gt-error.hfst endif # CAN_HFST if CAN_XFST GT_ANALYSERS+=analyser-oahpa-gt-error.xfst endif # CAN_XFST if CAN_FOMA GT_ANALYSERS+=analyser-oahpa-gt-error.foma endif # CAN_FOMA endif # WANT_L2 if WANT_DOWNCASEERROR if CAN_HFST GT_ANALYSERS+=analyser-oahpa-gt-downcaseerror.hfstol endif # CAN_HFST if CAN_XFST GT_ANALYSERS+=analyser-oahpa-gt-downcaseerror.xfst endif # CAN_XFST if CAN_FOMA GT_ANALYSERS+=analyser-oahpa-gt-downcaseerror.foma endif # CAN_FOMA endif # WANT_DOWNCASEERROR ################################################## ######## Build rules for Xerox and HFST: ######### # analyser-oahpa-gt-norm - only used for testing in parallel with the generator # Require: # * homonym tags: Hom1, Hom2 (ie don't remove) - done # Optionally allow these tags: # * transitivity tags: IV, TV, - done # * variant tags: v1, v2, v3, v4, v5, - done # * generation restriction tags: Use/NGminip - not implemented # Build the normative Oahpa analyser as a complement to the generator: analyser-oahpa-gt-norm.tmp.%: analyser-raw-gt-desc.% \ filters/remove-area-tags.% \ filters/remove-dialect-tags.% \ filters/remove-orig_lang-tags.% \ filters/remove-usage-tags.% \ filters/remove-semantic-tags.% \ filters/remove-hyphenation-marks.% \ filters/remove-error-strings.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-orthography-tags.% \ filters/remove-Orth_IPA-strings.% \ orthography/inituppercase.compose.% \ orthography/spellrelax.compose.% \ orthography/downcase-derived_proper-strings.compose.% $(AM_V_XFST_TOOL)$(PRINTF) "read regex \ @\"filters/remove-dialect-tags.$*\" \ .o. @\"filters/remove-orig_lang-tags.$*\" \ .o. @\"filters/remove-usage-tags.$*\" \ .o. @\"filters/remove-error-strings.$*\" \ .o. @\"filters/remove-semantic-tags.$*\" \ .o. @\"filters/remove-orthography-tags.$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$*\" \ .o. @\"filters/remove-area-tags.$*\" \ .o. @\"$<\" \ .o. @\"orthography/downcase-derived_proper-strings.compose.$*\" \ .o. @\"filters/remove-hyphenation-marks.$*\" \ .o. @\"filters/remove-infl_deriv-borders.$*\" \ .o. @\"filters/remove-word-boundary.$*\" \ ; \n\ define fst \n\ set flag-is-epsilon ON\n\ read regex fst \ .o. @\"orthography/inituppercase.compose.$*\" \ .o. @\"orthography/spellrelax.compose.$*\" \ ;\n\ save stack $@\n\ quit\n" | $(XFST_TOOL) # oahpa-norm / generator-oahpa-gt-norm # Require: # * homonym tags: Hom1, Hom2 (ie don't remove) - done # Optionally allow these tags: # * transitivity tags: IV, TV, - done # * variant tags: v1, v2, v3, v4, v5, - done # * generation restriction tags: Use/NGminip - not implemented # Build the general normative Oahpa generator: generator-oahpa-gt-norm.tmp.%: analyser-raw-gt-desc.% \ filters/make-optional-hyph-tags.% \ filters/make-optional-transitivity-tags.% \ filters/make-optional-variant-tags.% \ filters/make-optional-semantic-tags.% \ filters/make-optional-NGminip-tags.% \ filters/make-optional-adv_comp-tags.% \ filters/remove-area-tags.% \ filters/remove-dialect-tags.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-number-string-tags.% \ filters/remove-usage-tags.% \ filters/remove-orthography-tags.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-orig_lang-tags.% \ filters/remove-error-strings.% \ orthography/downcase-derived_proper-strings.compose.% $(AM_V_XFST_TOOL)$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$*\" \ .o. @\"filters/make-optional-hyph-tags.$*\" \ .o. @\"filters/make-optional-variant-tags.$*\" \ .o. @\"filters/make-optional-semantic-tags.$*\" \ .o. @\"filters/make-optional-NGminip-tags.$*\" \ .o. @\"filters/make-optional-adv_comp-tags.$*\" \ .o. @\"filters/remove-dialect-tags.$*\" \ .o. @\"filters/remove-number-string-tags.$*\" \ .o. @\"filters/remove-area-tags.$*\" \ .o. @\"filters/remove-usage-tags.$*\" \ .o. @\"filters/remove-error-strings.$*\" \ .o. @\"filters/remove-orig_lang-tags.$*\" \ .o. @\"filters/remove-orthography-tags.$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$*\" \ .o. @\"$<\" \ .o. @\"orthography/downcase-derived_proper-strings.compose.$*\" \ .o. @\"filters/remove-hyphenation-marks.$*\" \ .o. @\"filters/remove-infl_deriv-borders.$*\" \ .o. @\"filters/remove-word-boundary.$*\" \ ;\n\ save stack $@\n\ quit\n" | $(XFST_TOOL) # Build the dialect-targeted normative Oahpa generator - # the dialects are defined in configure.ac: define dial_oahpa_generators generator-oahpa-gt-norm-dial_$(1).tmp.%: analyser-raw-gt-desc.% \ filters/remove-all_dialects_but_$(1)-strings.% \ filters/make-optional-hyph-tags.% \ filters/make-optional-transitivity-tags.% \ filters/make-optional-variant-tags.% \ filters/make-optional-semantic-tags.% \ filters/make-optional-adv_comp-tags.% \ filters/remove-area-tags.% \ filters/remove-dialect-tags.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-number-string-tags.% \ filters/remove-usage-tags.% \ filters/remove-orthography-tags.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-orig_lang-tags.% \ filters/remove-NG-strings.% \ filters/remove-error-strings.% \ orthography/downcase-derived_proper-strings.compose.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$$*\" \ .o. @\"filters/make-optional-hyph-tags.$$*\" \ .o. @\"filters/make-optional-variant-tags.$$*\" \ .o. @\"filters/make-optional-semantic-tags.$$*\" \ .o. @\"filters/make-optional-adv_comp-tags.$$*\" \ .o. @\"filters/remove-area-tags.$$*\" \ .o. @\"filters/remove-dialect-tags.$$*\" \ .o. @\"filters/remove-number-string-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-error-strings.$$*\" \ .o. @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"filters/remove-NG-strings.$$*\" \ .o. @\"filters/remove-all_dialects_but_$(1)-strings.$$*\"\ .o. @\"$$<\" \ .o. @\"orthography/downcase-derived_proper-strings.compose.$$*\"\ .o. @\"filters/remove-hyphenation-marks.$$*\" \ .o. @\"filters/remove-infl_deriv-borders.$$*\" \ .o. @\"filters/remove-word-boundary.$$*\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) endef $(foreach dialect,$(DIALECTS),$(eval $(call dial_oahpa_generators,$(dialect)))) # The "raw" transducer contains all tags and symbols available on the analysis # side. Some of them are optional for generation, some are only needed for # special tools. On the lower side, the raw transducer contains all # morphological boundaries and hyphenation symbols. As such, this transducer # can NOT be used for morphological analysis, and hardly for generation. # First build a tmp1 raw file as the intersection between lexicon and rules: # This raw error/L2 lexical transducer uses both L2 lexicon and L2 twolc: generator-raw-gt-%.tmp1.hfst: morphology/lexicon-%.hfst \ phonology/$(GTLANG)-phon-%.compose.hfst $(AM_V_INTRSCT)$(HFST_COMPOSE_INTERSECT) $(MORE_VERBOSITY) $(HFST_FLAGS) \ -1 morphology/lexicon-$*.hfst \ -2 phonology/$(GTLANG)-phon-$*.compose.hfst |\ $(HFST_MINIMIZE) $(HFST_FLAGS) -o $@ # This is an alternative error fst for cases where the L2 phonology file is not # available (because of configuration or no source file): generator-raw-gt-%.tmp1.hfst: morphology/lexicon-%.hfst \ phonology/$(GTLANG)-phon.compose.hfst $(AM_V_INTRSCT)$(HFST_COMPOSE_INTERSECT) $(MORE_VERBOSITY) $(HFST_FLAGS) \ -1 morphology/lexicon-$*.hfst \ -2 phonology/$(GTLANG)-phon.compose.hfst |\ $(HFST_MINIMIZE) $(HFST_FLAGS) -o $@ # The same for Xerox: analyser-raw-gt-%.tmp1.xfst: morphology/lexicon-%.xfst \ phonology/$(GTLANG)-phon-%.compose.xfst $(AM_V_LEXC)$(PRINTF) \ "read-source morphology/lexicon-$*.xfst\nread-rules phonology/$(GTLANG)-phon-$*.compose.xfst\ncompose-result\nsave-result $@\nquit\n" \ | $(LEXC) $(VERBOSITY) analyser-raw-gt-%.tmp1.xfst: morphology/lexicon-%.xfst \ phonology/$(GTLANG)-phon.compose.xfst $(AM_V_LEXC)$(PRINTF) \ "read-source morphology/lexicon-$*.xfst\nread-rules phonology/$(GTLANG)-phon.compose.xfst\ncompose-result\nsave-result $@\nquit\n" \ | $(LEXC) $(VERBOSITY) # FOMA analyser-raw-gt-%.tmp1.foma: morphology/lexicon-%.foma \ phonology/$(GTLANG)-phon-%.compose.foma $(AM_V_FOMA)$(PRINTF) \ "read regex \ @\"$<\" \ .o. @\"phonology/$(GTLANG)-phon-$*.compose.foma\" \ ; \n\ save stack $@\n\ quit\n" \ | $(FOMA) $(VERBOSITY) analyser-raw-gt-%.tmp1.foma: morphology/lexicon-%.foma \ phonology/$(GTLANG)-phon.compose.foma $(AM_V_FOMA)$(PRINTF) \ "read regex \ @\"$<\" \ .o. @\"phonology/$(GTLANG)-phon.compose.foma\" \ ; \n\ save stack $@\n\ quit\n" \ | $(FOMA) $(VERBOSITY) # ... then apply tag reordering to tmp1 to ensure the same tag order in all # subsequent processing; this creates the regular tmp file, which can further # get local processing to produce the final raw file: # Hfst makes a generator (wrt lookup): generator-raw-gt-error.tmp.%: generator-raw-gt-L2.tmp1.% \ filters/reorder-semantic-tags.% \ filters/reorder-subpos-tags.% \ filters/remove-mwe-tags.% $(AM_V_XFST_TOOL)$(PRINTF) "read regex \ @\"filters/reorder-subpos-tags.$*\" \ .o. @\"filters/reorder-semantic-tags.$*\" \ .o. @\"filters/remove-mwe-tags.$*\" \ .o. @\"$<\" \ ;\n\ save stack $@\n\ quit\n" | $(XFST_TOOL) # Just cp the generator-*.hfst to the corresponding analyser, to make it # possible to share build code between Hfst and Xerox/Foma: analyser-raw-gt-error.hfst: generator-raw-gt-error.hfst $(AM_V_CP)cp $< $@ # Xerox & Foma make analysers (wrt lookup): analyser-raw-gt-error.tmp.%: analyser-raw-gt-L2.tmp1.% \ filters/reorder-semantic-tags.% \ filters/reorder-subpos-tags.% \ filters/remove-mwe-tags.% $(AM_V_XFST_TOOL)$(PRINTF) "read regex \ @\"filters/reorder-subpos-tags.$*\" \ .o. @\"filters/reorder-semantic-tags.$*\" \ .o. @\"filters/remove-mwe-tags.$*\" \ .o. @\"$<\" \ ;\n\ save stack $@\n\ quit\n" | $(XFST_TOOL) # Build the descriptive Oahpa analyser with extra error tags: analyser-oahpa-gt-error.tmp.%: analyser-raw-gt-error.% \ filters/remove-area-tags.% \ filters/remove-dialect-tags.% \ filters/remove-orig_lang-tags.% \ filters/remove-usage-tags.% \ filters/remove-semantic-tags.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-orthography-tags.% \ filters/remove-Orth_IPA-strings.% \ orthography/inituppercase.compose.% \ orthography/spellrelax.compose.% \ orthography/downcase-derived_proper-strings.compose.% $(AM_V_XFST_TOOL)$(PRINTF) "read regex \ @\"filters/remove-area-tags.$*\" \ .o. @\"filters/remove-dialect-tags.$*\" \ .o. @\"filters/remove-orig_lang-tags.$*\" \ .o. @\"filters/remove-usage-tags.$*\" \ .o. @\"filters/remove-semantic-tags.$*\" \ .o. @\"filters/remove-orthography-tags.$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$*\" \ .o. @\"$<\" \ .o. @\"orthography/downcase-derived_proper-strings.compose.$*\" \ .o. @\"filters/remove-hyphenation-marks.$*\" \ .o. @\"filters/remove-infl_deriv-borders.$*\" \ .o. @\"filters/remove-word-boundary.$*\" \ ; \n\ define fst \n\ set flag-is-epsilon ON\n\ read regex fst \ .o. @\"orthography/inituppercase.compose.$*\" \ .o. @\"orthography/spellrelax.compose.$*\" \ ;\n\ save stack $@\n\ quit\n" | $(XFST_TOOL) # Build an error fst that also recognises initial case error for place names: analyser-oahpa-gt-downcaseerror.tmp.%: analyser-oahpa-gt-error.tmp.% \ filters/downcase_UCletters.% \ filters/extract-Sem_Plc-strings.% \ filters/tag-lowercase_error-strings.% $(AM_V_XFST_TOOL)$(PRINTF) "read regex \ [ [ @\"filters/tag-lowercase_error-strings.$*\" \ .o. @\"filters/extract-Sem_Plc-strings.$*\" \ .o. @\"$<\" \ ] \ .o. @\"filters/downcase_UCletters.$*\" \ ] \ | @\"$<\" \ ;\n\ save stack $@\n\ quit\n" | $(XFST_TOOL) ############################################################### # Additional targets to support multiple writing systems: define oahpa_alt_ws_fsts analyser-oahpa-gt-norm.$(1).tmp.%: analyser-raw-gt-desc.% \ filters/remove-area-tags.% \ filters/remove-dialect-tags.% \ filters/remove-orig_lang-tags.% \ filters/remove-usage-tags.% \ filters/remove-semantic-tags.% \ filters/remove-hyphenation-marks.% \ filters/remove-error-strings.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-orthography-tags.% \ filters/remove-Orth_IPA-strings.% \ orthography/spellrelax.$(1).compose.% \ orthography/$$(DEFAULT_WS)-to-$(1).compose.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/remove-area-tags.$$*\" \ .o. @\"filters/remove-dialect-tags.$$*\" \ .o. @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-error-strings.$$*\" \ .o. @\"filters/remove-semantic-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"$$<\" \ .o. @\"filters/remove-hyphenation-marks.$$*\" \ .o. @\"filters/remove-infl_deriv-borders.$$*\" \ .o. @\"filters/remove-word-boundary.$$*\" \ .o. @\"orthography/$$(DEFAULT_WS)-to-$(1).compose.$$*\"\ .o. @\"orthography/spellrelax.$(1).compose.$$*\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) generator-oahpa-gt-norm.$(1).tmp.%: analyser-raw-gt-desc.% \ filters/make-optional-hyph-tags.% \ filters/make-optional-transitivity-tags.% \ filters/make-optional-variant-tags.% \ filters/make-optional-semantic-tags.% \ filters/make-optional-NGminip-tags.% \ filters/make-optional-adv_comp-tags.% \ filters/remove-area-tags.% \ filters/remove-dialect-tags.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-number-string-tags.% \ filters/remove-usage-tags.% \ filters/remove-orthography-tags.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-orig_lang-tags.% \ filters/remove-error-strings.% \ orthography/$$(DEFAULT_WS)-to-$(1).compose.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$$*\" \ .o. @\"filters/make-optional-hyph-tags.$$*\" \ .o. @\"filters/make-optional-variant-tags.$$*\" \ .o. @\"filters/make-optional-semantic-tags.$$*\" \ .o. @\"filters/make-optional-NGminip-tags.$$*\" \ .o. @\"filters/make-optional-adv_comp-tags.$$*\" \ .o. @\"filters/remove-area-tags.$$*\" \ .o. @\"filters/remove-dialect-tags.$$*\" \ .o. @\"filters/remove-number-string-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-error-strings.$$*\" \ .o. @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"$$<\" \ .o. @\"filters/remove-hyphenation-marks.$$*\" \ .o. @\"filters/remove-infl_deriv-borders.$$*\" \ .o. @\"filters/remove-word-boundary.$$*\" \ .o. @\"orthography/$$(DEFAULT_WS)-to-$(1).compose.$$*\"\ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) endef $(foreach altws,$(ALT_WSS),$(eval $(call oahpa_alt_ws_fsts,$(altws)))) ############################################################### # Additional targets to support alternative orthographies: define oahpa_alt_orth_fsts analyser-oahpa-gt-norm.$(1).tmp.%: analyser-raw-gt-desc.% \ filters/remove-area-tags.% \ filters/remove-dialect-tags.% \ filters/remove-orig_lang-tags.% \ filters/remove-usage-tags.% \ filters/remove-semantic-tags.% \ filters/remove-hyphenation-marks.% \ filters/remove-error-strings.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-orthography-tags.% \ filters/remove-Orth_IPA-strings.% \ orthography/spellrelax.$(1).compose.% \ orthography/$$(DEFAULT_ORTH)-to-$(1).compose.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/remove-area-tags.$$*\" \ .o. @\"filters/remove-dialect-tags.$$*\" \ .o. @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-error-strings.$$*\" \ .o. @\"filters/remove-semantic-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"$$<\" \ .o. @\"filters/remove-hyphenation-marks.$$*\" \ .o. @\"filters/remove-infl_deriv-borders.$$*\" \ .o. @\"filters/remove-word-boundary.$$*\" \ .o. @\"orthography/$$(DEFAULT_ORTH)-to-$(1).compose.$$*\"\ .o. @\"orthography/spellrelax.$(1).compose.$$*\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) analyser-oahpa-gt-norm.$(1).tmp.%: analyser-raw-gt-desc.% \ filters/remove-area-tags.% \ filters/remove-dialect-tags.% \ filters/remove-orig_lang-tags.% \ filters/remove-usage-tags.% \ filters/remove-semantic-tags.% \ filters/remove-hyphenation-marks.% \ filters/remove-error-strings.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-orthography-tags.% \ filters/remove-Orth_IPA-strings.% \ orthography/spellrelax.$(1).compose.% \ orthography/raw-to-$(1).compose.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/remove-area-tags.$$*\" \ .o. @\"filters/remove-dialect-tags.$$*\" \ .o. @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-error-strings.$$*\" \ .o. @\"filters/remove-semantic-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"$$<\" \ .o. @\"filters/remove-hyphenation-marks.$$*\" \ .o. @\"filters/remove-infl_deriv-borders.$$*\" \ .o. @\"filters/remove-word-boundary.$$*\" \ .o. @\"orthography/raw-to-$(1).compose.$$*\" \ .o. @\"orthography/spellrelax.$(1).compose.$$*\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) generator-oahpa-gt-norm.$(1).tmp.%: analyser-raw-gt-desc.% \ filters/make-optional-hyph-tags.% \ filters/make-optional-transitivity-tags.% \ filters/make-optional-variant-tags.% \ filters/make-optional-semantic-tags.% \ filters/make-optional-NGminip-tags.% \ filters/make-optional-adv_comp-tags.% \ filters/remove-area-tags.% \ filters/remove-dialect-tags.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-number-string-tags.% \ filters/remove-usage-tags.% \ filters/remove-orthography-tags.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-orig_lang-tags.% \ filters/remove-error-strings.% \ orthography/$$(DEFAULT_ORTH)-to-$(1).compose.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$$*\" \ .o. @\"filters/make-optional-hyph-tags.$$*\" \ .o. @\"filters/make-optional-variant-tags.$$*\" \ .o. @\"filters/make-optional-semantic-tags.$$*\" \ .o. @\"filters/make-optional-NGminip-tags.$$*\" \ .o. @\"filters/make-optional-adv_comp-tags.$$*\" \ .o. @\"filters/remove-area-tags.$$*\" \ .o. @\"filters/remove-dialect-tags.$$*\" \ .o. @\"filters/remove-number-string-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-error-strings.$$*\" \ .o. @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"$$<\" \ .o. @\"filters/remove-hyphenation-marks.$$*\" \ .o. @\"filters/remove-infl_deriv-borders.$$*\" \ .o. @\"filters/remove-word-boundary.$$*\" \ .o. @\"orthography/$$(DEFAULT_ORTH)-to-$(1).compose.$$*\"\ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) generator-oahpa-gt-norm.$(1).tmp.%: analyser-raw-gt-desc.% \ filters/make-optional-hyph-tags.% \ filters/make-optional-transitivity-tags.% \ filters/make-optional-variant-tags.% \ filters/make-optional-semantic-tags.% \ filters/make-optional-NGminip-tags.% \ filters/make-optional-adv_comp-tags.% \ filters/remove-area-tags.% \ filters/remove-dialect-tags.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-number-string-tags.% \ filters/remove-usage-tags.% \ filters/remove-orthography-tags.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-orig_lang-tags.% \ filters/remove-error-strings.% \ orthography/raw-to-$(1).compose.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$$*\" \ .o. @\"filters/make-optional-hyph-tags.$$*\" \ .o. @\"filters/make-optional-variant-tags.$$*\" \ .o. @\"filters/make-optional-semantic-tags.$$*\" \ .o. @\"filters/make-optional-NGminip-tags.$$*\" \ .o. @\"filters/make-optional-adv_comp-tags.$$*\" \ .o. @\"filters/remove-area-tags.$$*\" \ .o. @\"filters/remove-dialect-tags.$$*\" \ .o. @\"filters/remove-number-string-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-error-strings.$$*\" \ .o. @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"$$<\" \ .o. @\"filters/remove-hyphenation-marks.$$*\" \ .o. @\"filters/remove-infl_deriv-borders.$$*\" \ .o. @\"filters/remove-word-boundary.$$*\" \ .o. @\"orthography/raw-to-$(1).compose.$$*\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) endef $(foreach altorth,$(ALT_ORTHS),$(eval $(call oahpa_alt_orth_fsts,$(altorth)))) ############################################################### # Additional targets to support area / country specific fst's: define oahpa_area_fsts analyser-oahpa-gt-norm_$(1).tmp.%: analyser-raw-gt-desc.% \ filters/remove-area-tags.% \ filters/remove-dialect-tags.% \ filters/remove-orig_lang-tags.% \ filters/remove-usage-tags.% \ filters/remove-semantic-tags.% \ filters/remove-hyphenation-marks.% \ filters/remove-error-strings.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-orthography-tags.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-all_areas_but_$(1)-strings.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/remove-area-tags.$$*\" \ .o. @\"filters/remove-dialect-tags.$$*\" \ .o. @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-error-strings.$$*\" \ .o. @\"filters/remove-semantic-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"filters/remove-all_areas_but_$(1)-strings.$$*\"\ .o. @\"$$<\" \ .o. @\"filters/remove-hyphenation-marks.$$*\" \ .o. @\"filters/remove-infl_deriv-borders.$$*\" \ .o. @\"filters/remove-word-boundary.$$*\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) generator-oahpa-gt-norm_$(1).tmp.%: analyser-raw-gt-desc.% \ filters/make-optional-hyph-tags.% \ filters/make-optional-transitivity-tags.% \ filters/make-optional-variant-tags.% \ filters/make-optional-semantic-tags.% \ filters/make-optional-NGminip-tags.% \ filters/make-optional-adv_comp-tags.% \ filters/remove-area-tags.% \ filters/remove-dialect-tags.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-number-string-tags.% \ filters/remove-usage-tags.% \ filters/remove-orthography-tags.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-orig_lang-tags.% \ filters/remove-error-strings.% \ filters/remove-all_areas_but_$(1)-strings.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$$*\" \ .o. @\"filters/make-optional-hyph-tags.$$*\" \ .o. @\"filters/make-optional-variant-tags.$$*\" \ .o. @\"filters/make-optional-semantic-tags.$$*\" \ .o. @\"filters/make-optional-NGminip-tags.$$*\" \ .o. @\"filters/make-optional-adv_comp-tags.$$*\" \ .o. @\"filters/remove-area-tags.$$*\" \ .o. @\"filters/remove-dialect-tags.$$*\" \ .o. @\"filters/remove-number-string-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-error-strings.$$*\" \ .o. @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"filters/remove-all_areas_but_$(1)-strings.$$*\"\ .o. @\"$$<\" \ .o. @\"filters/remove-hyphenation-marks.$$*\" \ .o. @\"filters/remove-infl_deriv-borders.$$*\" \ .o. @\"filters/remove-word-boundary.$$*\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) endef $(foreach area,$(AREAS),$(eval $(call oahpa_area_fsts,$(area))))