## 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 \ $(DIALECT_TARGETS_HFST) endif # CAN_HFST if CAN_XFST GT_ANALYSERS+=analyser-oahpa-gt-norm.xfst GT_GENERATORS+=generator-oahpa-gt-norm.xfst \ $(DIALECT_TARGETS_XFST) endif # CAN_XFST if CAN_FOMA GT_ANALYSERS+=analyser-oahpa-gt-norm.foma GT_GENERATORS+=generator-oahpa-gt-norm.foma \ $(DIALECT_TARGETS_FOMA) endif # CAN_FOMA endif # WANT_OAHPA # Define the dialect targets using list of dialects defined in configure.ac: if HAVE_DIALECTS DIALECT_TARGETS=$(addprefix generator-oahpa-gt-norm-dial_,$(DIALECTS)) DIALECT_TARGETS_HFST=$(addsuffix .hfstol,$(DIALECT_TARGETS)) DIALECT_TARGETS_XFST=$(addsuffix .xfst,$(DIALECT_TARGETS)) DIALECT_TARGETS_FOMA=$(addsuffix .foma,$(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_%.tmp.$(1): analyser-raw-gt-desc.$(1) \ filters/remove-all_dialects_but_%-strings.$(1) \ filters/make-optional-hyph-tags.$(1) \ filters/make-optional-transitivity-tags.$(1) \ filters/make-optional-variant-tags.$(1) \ filters/make-optional-semantic-tags.$(1) \ filters/make-optional-adv_comp-tags.$(1) \ filters/remove-area-tags.$(1) \ filters/remove-dialect-tags.$(1) \ filters/remove-hyphenation-marks.$(1) \ filters/remove-infl_deriv-borders.$(1) \ filters/remove-word-boundary.$(1) \ filters/remove-number-string-tags.$(1) \ filters/remove-usage-tags.$(1) \ filters/remove-orthography-tags.$(1) \ filters/remove-Orth_IPA-strings.$(1) \ filters/remove-orig_lang-tags.$(1) \ filters/remove-NG-strings.$(1) \ filters/remove-error-strings.$(1) \ orthography/downcase-derived_proper-strings.compose.$(1) $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$(1)\" \ .o. @\"filters/make-optional-hyph-tags.$(1)\" \ .o. @\"filters/make-optional-variant-tags.$(1)\" \ .o. @\"filters/make-optional-semantic-tags.$(1)\" \ .o. @\"filters/make-optional-adv_comp-tags.$(1)\" \ .o. @\"filters/remove-area-tags.$(1)\" \ .o. @\"filters/remove-dialect-tags.$(1)\" \ .o. @\"filters/remove-number-string-tags.$(1)\" \ .o. @\"filters/remove-usage-tags.$(1)\" \ .o. @\"filters/remove-error-strings.$(1)\" \ .o. @\"filters/remove-orig_lang-tags.$(1)\" \ .o. @\"filters/remove-orthography-tags.$(1)\" \ .o. @\"filters/remove-Orth_IPA-strings.$(1)\" \ .o. @\"filters/remove-NG-strings.$(1)\" \ .o. @\"filters/remove-all_dialects_but_$$*-strings.$(1)\"\ .o. @\"$$<\" \ .o. @\"orthography/downcase-derived_proper-strings.compose.$(1)\"\ .o. @\"filters/remove-hyphenation-marks.$(1)\" \ .o. @\"filters/remove-infl_deriv-borders.$(1)\" \ .o. @\"filters/remove-word-boundary.$(1)\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) endef $(foreach fst,hfst xfst foma,$(eval $(call dial_oahpa_generators,$(fst)))) # 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_analysers analyser-oahpa-gt-norm.%.tmp.$(1): analyser-raw-gt-desc.$(1) \ filters/remove-area-tags.$(1) \ filters/remove-dialect-tags.$(1) \ filters/remove-orig_lang-tags.$(1) \ filters/remove-usage-tags.$(1) \ filters/remove-semantic-tags.$(1) \ filters/remove-hyphenation-marks.$(1) \ filters/remove-error-strings.$(1) \ filters/remove-infl_deriv-borders.$(1) \ filters/remove-word-boundary.$(1) \ filters/remove-orthography-tags.$(1) \ filters/remove-Orth_IPA-strings.$(1) \ orthography/spellrelax.%.compose.$(1) \ orthography/$$(DEFAULT_WS)-to-%.compose.$(1) $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/remove-area-tags.$(1)\" \ .o. @\"filters/remove-dialect-tags.$(1)\" \ .o. @\"filters/remove-orig_lang-tags.$(1)\" \ .o. @\"filters/remove-usage-tags.$(1)\" \ .o. @\"filters/remove-error-strings.$(1)\" \ .o. @\"filters/remove-semantic-tags.$(1)\" \ .o. @\"filters/remove-orthography-tags.$(1)\" \ .o. @\"filters/remove-Orth_IPA-strings.$(1)\" \ .o. @\"$$<\" \ .o. @\"filters/remove-hyphenation-marks.$(1)\" \ .o. @\"filters/remove-infl_deriv-borders.$(1)\" \ .o. @\"filters/remove-word-boundary.$(1)\" \ .o. @\"orthography/$$(DEFAULT_WS)-to-$$*.compose.$(1)\"\ .o. @\"orthography/spellrelax.$$*.compose.$(1)\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) endef $(foreach fst,hfst xfst foma,$(eval $(call oahpa_alt_ws_analysers,$(fst)))) define oahpa_alt_ws_generators generator-oahpa-gt-norm.%.tmp.$(1): analyser-raw-gt-desc.$(1) \ filters/make-optional-hyph-tags.$(1) \ filters/make-optional-transitivity-tags.$(1) \ filters/make-optional-variant-tags.$(1) \ filters/make-optional-semantic-tags.$(1) \ filters/make-optional-NGminip-tags.$(1) \ filters/make-optional-adv_comp-tags.$(1) \ filters/remove-area-tags.$(1) \ filters/remove-dialect-tags.$(1) \ filters/remove-hyphenation-marks.$(1) \ filters/remove-infl_deriv-borders.$(1) \ filters/remove-word-boundary.$(1) \ filters/remove-number-string-tags.$(1) \ filters/remove-usage-tags.$(1) \ filters/remove-orthography-tags.$(1) \ filters/remove-Orth_IPA-strings.$(1) \ filters/remove-orig_lang-tags.$(1) \ filters/remove-error-strings.$(1) \ orthography/$$(DEFAULT_WS)-to-%.compose.$(1) $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$(1)\" \ .o. @\"filters/make-optional-hyph-tags.$(1)\" \ .o. @\"filters/make-optional-variant-tags.$(1)\" \ .o. @\"filters/make-optional-semantic-tags.$(1)\" \ .o. @\"filters/make-optional-NGminip-tags.$(1)\" \ .o. @\"filters/make-optional-adv_comp-tags.$(1)\" \ .o. @\"filters/remove-area-tags.$(1)\" \ .o. @\"filters/remove-dialect-tags.$(1)\" \ .o. @\"filters/remove-number-string-tags.$(1)\" \ .o. @\"filters/remove-usage-tags.$(1)\" \ .o. @\"filters/remove-error-strings.$(1)\" \ .o. @\"filters/remove-orig_lang-tags.$(1)\" \ .o. @\"filters/remove-orthography-tags.$(1)\" \ .o. @\"filters/remove-Orth_IPA-strings.$(1)\" \ .o. @\"$$<\" \ .o. @\"filters/remove-hyphenation-marks.$(1)\" \ .o. @\"filters/remove-infl_deriv-borders.$(1)\" \ .o. @\"filters/remove-word-boundary.$(1)\" \ .o. @\"orthography/$$(DEFAULT_WS)-to-$$*.compose.$(1)\"\ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) endef $(foreach fst,hfst xfst foma,$(eval $(call oahpa_alt_ws_generators,$(fst)))) ############################################################### # Additional targets to support alternative orthographies: define oahpa_alt_orth_analysers analyser-oahpa-gt-norm.%.tmp.$(1): analyser-raw-gt-desc.$(1) \ filters/remove-area-tags.$(1) \ filters/remove-dialect-tags.$(1) \ filters/remove-orig_lang-tags.$(1) \ filters/remove-usage-tags.$(1) \ filters/remove-semantic-tags.$(1) \ filters/remove-hyphenation-marks.$(1) \ filters/remove-error-strings.$(1) \ filters/remove-infl_deriv-borders.$(1) \ filters/remove-word-boundary.$(1) \ filters/remove-orthography-tags.$(1) \ filters/remove-Orth_IPA-strings.$(1) \ orthography/spellrelax.%.compose.$(1) \ orthography/$$(DEFAULT_ORTH)-to-%.compose.$(1) $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/remove-area-tags.$(1)\" \ .o. @\"filters/remove-dialect-tags.$(1)\" \ .o. @\"filters/remove-orig_lang-tags.$(1)\" \ .o. @\"filters/remove-usage-tags.$(1)\" \ .o. @\"filters/remove-error-strings.$(1)\" \ .o. @\"filters/remove-semantic-tags.$(1)\" \ .o. @\"filters/remove-orthography-tags.$(1)\" \ .o. @\"filters/remove-Orth_IPA-strings.$(1)\" \ .o. @\"$$<\" \ .o. @\"filters/remove-hyphenation-marks.$(1)\" \ .o. @\"filters/remove-infl_deriv-borders.$(1)\" \ .o. @\"filters/remove-word-boundary.$(1)\" \ .o. @\"orthography/$$(DEFAULT_ORTH)-to-$$*.compose.$(1)\"\ .o. @\"orthography/spellrelax.$$*.compose.$(1)\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) analyser-oahpa-gt-norm.%.tmp.$(1): analyser-raw-gt-desc.$(1) \ filters/remove-area-tags.$(1) \ filters/remove-dialect-tags.$(1) \ filters/remove-orig_lang-tags.$(1) \ filters/remove-usage-tags.$(1) \ filters/remove-semantic-tags.$(1) \ filters/remove-hyphenation-marks.$(1) \ filters/remove-error-strings.$(1) \ filters/remove-infl_deriv-borders.$(1) \ filters/remove-word-boundary.$(1) \ filters/remove-orthography-tags.$(1) \ filters/remove-Orth_IPA-strings.$(1) \ orthography/spellrelax.%.compose.$(1) \ orthography/raw-to-%.compose.$(1) $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/remove-area-tags.$(1)\" \ .o. @\"filters/remove-dialect-tags.$(1)\" \ .o. @\"filters/remove-orig_lang-tags.$(1)\" \ .o. @\"filters/remove-usage-tags.$(1)\" \ .o. @\"filters/remove-error-strings.$(1)\" \ .o. @\"filters/remove-semantic-tags.$(1)\" \ .o. @\"filters/remove-orthography-tags.$(1)\" \ .o. @\"filters/remove-Orth_IPA-strings.$(1)\" \ .o. @\"$$<\" \ .o. @\"filters/remove-hyphenation-marks.$(1)\" \ .o. @\"filters/remove-infl_deriv-borders.$(1)\" \ .o. @\"filters/remove-word-boundary.$(1)\" \ .o. @\"orthography/raw-to-$$*.compose.$(1)\" \ .o. @\"orthography/spellrelax.$$*.compose.$(1)\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) endef $(foreach fst,hfst xfst foma,$(eval $(call oahpa_alt_orth_analysers,$(fst)))) define oahpa_alt_orth_generators generator-oahpa-gt-norm.%.tmp.$(1): analyser-raw-gt-desc.$(1) \ filters/make-optional-hyph-tags.$(1) \ filters/make-optional-transitivity-tags.$(1) \ filters/make-optional-variant-tags.$(1) \ filters/make-optional-semantic-tags.$(1) \ filters/make-optional-NGminip-tags.$(1) \ filters/make-optional-adv_comp-tags.$(1) \ filters/remove-area-tags.$(1) \ filters/remove-dialect-tags.$(1) \ filters/remove-hyphenation-marks.$(1) \ filters/remove-infl_deriv-borders.$(1) \ filters/remove-word-boundary.$(1) \ filters/remove-number-string-tags.$(1) \ filters/remove-usage-tags.$(1) \ filters/remove-orthography-tags.$(1) \ filters/remove-Orth_IPA-strings.$(1) \ filters/remove-orig_lang-tags.$(1) \ filters/remove-error-strings.$(1) \ orthography/$$(DEFAULT_ORTH)-to-%.compose.$(1) $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$(1)\" \ .o. @\"filters/make-optional-hyph-tags.$(1)\" \ .o. @\"filters/make-optional-variant-tags.$(1)\" \ .o. @\"filters/make-optional-semantic-tags.$(1)\" \ .o. @\"filters/make-optional-NGminip-tags.$(1)\" \ .o. @\"filters/make-optional-adv_comp-tags.$(1)\" \ .o. @\"filters/remove-area-tags.$(1)\" \ .o. @\"filters/remove-dialect-tags.$(1)\" \ .o. @\"filters/remove-number-string-tags.$(1)\" \ .o. @\"filters/remove-usage-tags.$(1)\" \ .o. @\"filters/remove-error-strings.$(1)\" \ .o. @\"filters/remove-orig_lang-tags.$(1)\" \ .o. @\"filters/remove-orthography-tags.$(1)\" \ .o. @\"filters/remove-Orth_IPA-strings.$(1)\" \ .o. @\"$$<\" \ .o. @\"filters/remove-hyphenation-marks.$(1)\" \ .o. @\"filters/remove-infl_deriv-borders.$(1)\" \ .o. @\"filters/remove-word-boundary.$(1)\" \ .o. @\"orthography/$$(DEFAULT_ORTH)-to-$$*.compose.$(1)\"\ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) generator-oahpa-gt-norm.%.tmp.$(1): analyser-raw-gt-desc.$(1) \ filters/make-optional-hyph-tags.$(1) \ filters/make-optional-transitivity-tags.$(1) \ filters/make-optional-variant-tags.$(1) \ filters/make-optional-semantic-tags.$(1) \ filters/make-optional-NGminip-tags.$(1) \ filters/make-optional-adv_comp-tags.$(1) \ filters/remove-area-tags.$(1) \ filters/remove-dialect-tags.$(1) \ filters/remove-hyphenation-marks.$(1) \ filters/remove-infl_deriv-borders.$(1) \ filters/remove-word-boundary.$(1) \ filters/remove-number-string-tags.$(1) \ filters/remove-usage-tags.$(1) \ filters/remove-orthography-tags.$(1) \ filters/remove-Orth_IPA-strings.$(1) \ filters/remove-orig_lang-tags.$(1) \ filters/remove-error-strings.$(1) \ orthography/raw-to-%.compose.$(1) $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$(1)\" \ .o. @\"filters/make-optional-hyph-tags.$(1)\" \ .o. @\"filters/make-optional-variant-tags.$(1)\" \ .o. @\"filters/make-optional-semantic-tags.$(1)\" \ .o. @\"filters/make-optional-NGminip-tags.$(1)\" \ .o. @\"filters/make-optional-adv_comp-tags.$(1)\" \ .o. @\"filters/remove-area-tags.$(1)\" \ .o. @\"filters/remove-dialect-tags.$(1)\" \ .o. @\"filters/remove-number-string-tags.$(1)\" \ .o. @\"filters/remove-usage-tags.$(1)\" \ .o. @\"filters/remove-error-strings.$(1)\" \ .o. @\"filters/remove-orig_lang-tags.$(1)\" \ .o. @\"filters/remove-orthography-tags.$(1)\" \ .o. @\"filters/remove-Orth_IPA-strings.$(1)\" \ .o. @\"$$<\" \ .o. @\"filters/remove-hyphenation-marks.$(1)\" \ .o. @\"filters/remove-infl_deriv-borders.$(1)\" \ .o. @\"filters/remove-word-boundary.$(1)\" \ .o. @\"orthography/raw-to-$$*.compose.$(1)\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) endef $(foreach fst,hfst xfst foma,$(eval $(call oahpa_alt_orth_generators,$(fst))))