## Include this file in top-level srcdir to compile FSTs ## Copyright: Sámediggi/Divvun/UiT ## Licence: GPL v3+ if CAN_HFST if WANT_GRAMCHECK GT_ANALYSERS += analyser-gramcheck-gt-desc.hfstol GT_GENERATORS+=generator-gramcheck-gt-norm.hfstol endif # WANT_GRAMCHECK endif # CAN_HFST # The grammar checker analyser is the same as the disambiguator analyser, but # potentially/most likely with language-specific adaptations: analyser-gramcheck-gt-desc.tmp.%: analyser-raw-gt-desc.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-orig_lang-tags.% \ filters/remove-orthography-tags.% \ filters/remove-usage-tags.% \ filters/remove-Use_GC-tags.% \ filters/remove-Use_minusGC-strings.% \ filters/remove-Use_minus_PMatch-strings.% \ filters/remove-Use_PMatch-tags.% \ filters/block-mwe-compounds.% \ orthography/inituppercase.compose.% \ orthography/spellrelax.compose.% \ orthography/downcase-derived_proper-strings.compose.% $(AM_V_XFST_TOOL)$(PRINTF) "read regex \ @\"filters/remove-orig_lang-tags.$*\" \ .o. @\"filters/remove-usage-tags.$*\" \ .o. @\"filters/remove-orthography-tags.$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$*\" \ .o. @\"filters/remove-Use_minus_PMatch-strings.$*\" \ .o. @\"filters/remove-Use_minusGC-strings.$*\" \ .o. @\"filters/remove-Use_GC-tags.$*\" \ .o. @\"filters/remove-Use_PMatch-tags.$*\" \ .o. @\"filters/block-mwe-compounds.$*\" \ .o. @\"$<\" \ .o. @\"orthography/downcase-derived_proper-strings.compose.$*\" \ .o. @\"filters/remove-hyphenation-marks.$*\" \ .o. @\"filters/remove-infl_deriv-borders.$*\" \ ; \n\ define fst \n\ set flag-is-epsilon ON\n\ read regex fst \ .o. @\"orthography/inituppercase.compose.$*\" \ ;\n\ save stack $@\n\ quit\n" | $(XFST_TOOL) # And the same for alternate writing systems etc: analyser-gramcheck-gt-desc.%.tmp.hfst: analyser-disamb-gt-desc.%.tmp.hfst $(AM_V_CP)cp -f $< $@ # The grammar checker generator is used to generate suggestions for the grammar # checker, and must match the grammar checker analyser tag-wise. It is of course # normative as opposed to the analysers. generator-gramcheck-gt-norm.tmp.%: analyser-raw-gt-desc.% \ filters/make-optional-transitivity-tags.% \ filters/make-optional-homonymy-tags.% \ filters/make-optional-hyph-tags.% \ filters/make-optional-variant-tags.% \ filters/make-optional-semantic-tags.% \ filters/make-optional-adv_comp-tags.% \ filters/make-optional-area-tags.% \ filters/make-optional-dialect-tags.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-number-string-tags.% \ filters/remove-orig_lang-tags.% \ filters/remove-orthography-tags.% \ filters/remove-usage-tags.% \ filters/remove-error-strings.% \ filters/remove-Use_minusGC-tags.% \ filters/remove-Use_GC-strings.% \ filters/remove-Use_minus_PMatch-tags.% \ filters/remove-Use_PMatch-strings.% \ orthography/downcase-derived_proper-strings.compose.% $(AM_V_XFST_TOOL)$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$*\" \ .o. @\"filters/make-optional-homonymy-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/make-optional-area-tags.$*\" \ .o. @\"filters/make-optional-dialect-tags.$*\" \ .o. @\"filters/remove-orig_lang-tags.$*\" \ .o. @\"filters/remove-number-string-tags.$*\" \ .o. @\"filters/remove-usage-tags.$*\" \ .o. @\"filters/remove-orthography-tags.$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$*\" \ .o. @\"filters/remove-error-strings.$*\" \ .o. @\"filters/remove-Use_minus_PMatch-tags.$*\" \ .o. @\"filters/remove-Use_minusGC-tags.$*\" \ .o. @\"filters/remove-Use_GC-strings.$*\" \ .o. @\"filters/remove-Use_PMatch-strings.$*\" \ .o. @\"filters/remove-mwe-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\ save stack $@\n\ quit\n" | $(XFST_TOOL) # Additional target to support languages with alternative writing systems: define alt_ws_gramchk_fsts analyser-gramcheck-gt-desc.$(1).tmp.%: analyser-raw-gt-desc.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-orig_lang-tags.% \ filters/remove-orthography-tags.% \ filters/remove-usage-tags.% \ filters/remove-variant-tags.% \ filters/remove-Use_minusGC-strings.% \ filters/remove-Use_GC-tags.% \ filters/remove-Use_minus_PMatch-strings.% \ filters/remove-Use_PMatch-tags.% \ filters/block-mwe-compounds.% \ orthography/spellrelax.$(1).compose.% \ orthography/$(DEFAULT_WS)-to-$(1).compose.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-variant-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"filters/remove-Use_minus_PMatch-strings.$$*\" \ .o. @\"filters/remove-Use_minusGC-strings.$$*\" \ .o. @\"filters/remove-Use_GC-tags.$$*\" \ .o. @\"filters/remove-Use_PMatch-tags.$$*\" \ .o. @\"filters/block-mwe-compounds.$$*\" \ .o. @\"$$<\" \ .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/$(DEFAULT_WS)-to-$(1).compose.$$*\" \ .o. @\"orthography/spellrelax.$(1).compose.$$*\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) generator-gramcheck-gt-norm.$(1).tmp.%: generator-raw-gt-desc.% \ filters/make-optional-transitivity-tags.% \ filters/make-optional-homonymy-tags.% \ filters/make-optional-hyph-tags.% \ filters/make-optional-variant-tags.% \ filters/make-optional-semantic-tags.% \ filters/make-optional-adv_comp-tags.% \ filters/make-optional-area-tags.% \ filters/make-optional-dialect-tags.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-number-string-tags.% \ filters/remove-orig_lang-tags.% \ filters/remove-orthography-tags.% \ filters/remove-usage-tags.% \ filters/remove-error-strings.% \ filters/remove-Use_minusGC-tags.% \ filters/remove-Use_GC-strings.% \ filters/remove-Use_minus_PMatch-tags.% \ filters/remove-Use_PMatch-strings.% \ orthography/$(DEFAULT_WS)-to-$(1).compose.% \ orthography/downcase-derived_proper-strings.compose.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$$*\" \ .o. @\"filters/make-optional-homonymy-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/make-optional-area-tags.$$*\" \ .o. @\"filters/make-optional-dialect-tags.$$*\" \ .o. @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-number-string-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"filters/remove-error-strings.$$*\" \ .o. @\"filters/remove-Use_minus_PMatch-tags.$$*\" \ .o. @\"filters/remove-Use_minusGC-tags.$$*\" \ .o. @\"filters/remove-Use_GC-strings.$$*\" \ .o. @\"filters/remove-Use_PMatch-strings.$$*\" \ .o. @\"filters/remove-mwe-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/$(DEFAULT_WS)-to-$(1).compose.$$*\" \ ; \n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) endef $(foreach alt_ws,$(ALT_WSS),$(eval $(call alt_ws_gramchk_fsts,$(alt_ws)))) # Additional target to support languages with alternative orthographies: define alt_orth_disamb_fst analyser-gramcheck-gt-desc.$(1).tmp.%: analyser-raw-gt-desc.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-orig_lang-tags.% \ filters/remove-orthography-tags.% \ filters/remove-usage-tags.% \ filters/remove-variant-tags.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-Use_minusGC-strings.% \ filters/remove-Use_GC-tags.% \ filters/remove-Use_minus_PMatch-strings.% \ filters/remove-Use_PMatch-tags.% \ filters/block-mwe-compounds.% \ orthography/spellrelax.$(1).compose.% \ orthography/inituppercase.compose.% \ orthography/downcase-derived_proper-strings.compose.% \ orthography/$(DEFAULT_ORTH)-to-$(1).compose.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-variant-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"filters/remove-Use_minus_PMatch-strings.$$*\" \ .o. @\"filters/remove-Use_minusGC-strings.$$*\" \ .o. @\"filters/remove-Use_GC-tags.$$*\" \ .o. @\"filters/remove-Use_PMatch-tags.$$*\" \ .o. @\"filters/block-mwe-compounds.$$*\" \ .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/$(DEFAULT_ORTH)-to-$(1).compose.$$*\" \ .o. @\"orthography/spellrelax.$(1).compose.$$*\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) # ... alternatively using a filter from RAW to target: analyser-gramcheck-gt-desc.$(1).tmp.%: analyser-raw-gt-desc.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-orig_lang-tags.% \ filters/remove-orthography-tags.% \ filters/remove-usage-tags.% \ filters/remove-variant-tags.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-Use_minusGC-strings.% \ filters/remove-Use_GC-tags.% \ filters/remove-Use_minus_PMatch-strings.% \ filters/remove-Use_PMatch-tags.% \ filters/block-mwe-compounds.% \ orthography/spellrelax.$(1).compose.% \ orthography/inituppercase.compose.% \ orthography/downcase-derived_proper-strings.compose.% \ orthography/raw-to-$(1).compose.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-variant-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"filters/remove-Use_minus_PMatch-strings.$$*\" \ .o. @\"filters/remove-Use_minusGC-strings.$$*\" \ .o. @\"filters/remove-Use_GC-tags.$$*\" \ .o. @\"filters/remove-Use_PMatch-tags.$$*\" \ .o. @\"filters/block-mwe-compounds.$$*\" \ .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/raw-to-$(1).compose.$$*\" \ .o. @\"orthography/spellrelax.$(1).compose.$$*\" \ ;\n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) generator-gramcheck-gt-norm.$(1).tmp.%: generator-raw-gt-desc.% \ filters/make-optional-transitivity-tags.% \ filters/make-optional-homonymy-tags.% \ filters/make-optional-hyph-tags.% \ filters/make-optional-variant-tags.% \ filters/make-optional-semantic-tags.% \ filters/make-optional-adv_comp-tags.% \ filters/make-optional-area-tags.% \ filters/make-optional-dialect-tags.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-number-string-tags.% \ filters/remove-orig_lang-tags.% \ filters/remove-orthography-tags.% \ filters/remove-usage-tags.% \ filters/remove-error-strings.% \ filters/remove-Use_minusGC-tags.% \ filters/remove-Use_GC-strings.% \ filters/remove-Use_minus_PMatch-tags.% \ filters/remove-Use_PMatch-strings.% \ orthography/$(DEFAULT_ORTH)-to-$(1).compose.% \ orthography/downcase-derived_proper-strings.compose.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$$*\" \ .o. @\"filters/make-optional-homonymy-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/make-optional-area-tags.$$*\" \ .o. @\"filters/make-optional-dialect-tags.$$*\" \ .o. @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-number-string-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"filters/remove-error-strings.$$*\" \ .o. @\"filters/remove-Use_minus_PMatch-tags.$$*\" \ .o. @\"filters/remove-Use_minusGC-tags.$$*\" \ .o. @\"filters/remove-Use_GC-strings.$$*\" \ .o. @\"filters/remove-Use_PMatch-strings.$$*\" \ .o. @\"filters/remove-mwe-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/$(DEFAULT_ORTH)-to-$(1).compose.$$*\" \ ; \n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) generator-gramcheck-gt-norm.$(1).tmp.%: generator-raw-gt-desc.% \ filters/make-optional-transitivity-tags.% \ filters/make-optional-homonymy-tags.% \ filters/make-optional-hyph-tags.% \ filters/make-optional-variant-tags.% \ filters/make-optional-semantic-tags.% \ filters/make-optional-adv_comp-tags.% \ filters/make-optional-area-tags.% \ filters/make-optional-dialect-tags.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-number-string-tags.% \ filters/remove-orig_lang-tags.% \ filters/remove-orthography-tags.% \ filters/remove-usage-tags.% \ filters/remove-error-strings.% \ filters/remove-Use_minusGC-tags.% \ filters/remove-Use_GC-strings.% \ filters/remove-Use_minus_PMatch-tags.% \ filters/remove-Use_PMatch-strings.% \ orthography/raw-to-$(1).compose.% \ orthography/downcase-derived_proper-strings.compose.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$$*\" \ .o. @\"filters/make-optional-homonymy-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/make-optional-area-tags.$$*\" \ .o. @\"filters/make-optional-dialect-tags.$$*\" \ .o. @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-number-string-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"filters/remove-error-strings.$$*\" \ .o. @\"filters/remove-Use_minus_PMatch-tags.$$*\" \ .o. @\"filters/remove-Use_minusGC-tags.$$*\" \ .o. @\"filters/remove-Use_GC-strings.$$*\" \ .o. @\"filters/remove-Use_PMatch-strings.$$*\" \ .o. @\"filters/remove-mwe-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/raw-to-$(1).compose.$$*\" \ ; \n\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) endef $(foreach alt_orth,$(ALT_ORTHS),$(eval $(call alt_orth_disamb_fst,$(alt_orth)))) # Additional target to support languages with geographically bound orthographic # variation (Area tags); only the normative generator is needed, the descriptive # analyser will accept (and tag) all areas: define area_gramchk_fsts generator-gramcheck-gt-norm_$(1).tmp.%: generator-raw-gt-desc.% \ filters/make-optional-transitivity-tags.% \ filters/make-optional-homonymy-tags.% \ filters/make-optional-hyph-tags.% \ filters/make-optional-variant-tags.% \ filters/make-optional-semantic-tags.% \ filters/make-optional-adv_comp-tags.% \ filters/make-optional-area-tags.% \ filters/make-optional-dialect-tags.% \ filters/remove-Orth_IPA-strings.% \ filters/remove-hyphenation-marks.% \ filters/remove-infl_deriv-borders.% \ filters/remove-word-boundary.% \ filters/remove-number-string-tags.% \ filters/remove-orig_lang-tags.% \ filters/remove-orthography-tags.% \ filters/remove-usage-tags.% \ filters/remove-error-strings.% \ filters/remove-Use_minusGC-tags.% \ filters/remove-Use_GC-strings.% \ filters/remove-Use_minus_PMatch-tags.% \ filters/remove-Use_PMatch-strings.% \ filters/remove-all_areas_but_$(1)-strings.% \ orthography/downcase-derived_proper-strings.compose.% $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"filters/make-optional-transitivity-tags.$$*\" \ .o. @\"filters/make-optional-homonymy-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/make-optional-area-tags.$$*\" \ .o. @\"filters/make-optional-dialect-tags.$$*\" \ .o. @\"filters/remove-orig_lang-tags.$$*\" \ .o. @\"filters/remove-number-string-tags.$$*\" \ .o. @\"filters/remove-usage-tags.$$*\" \ .o. @\"filters/remove-orthography-tags.$$*\" \ .o. @\"filters/remove-Orth_IPA-strings.$$*\" \ .o. @\"filters/remove-error-strings.$$*\" \ .o. @\"filters/remove-Use_minus_PMatch-tags.$$*\" \ .o. @\"filters/remove-Use_minusGC-tags.$$*\" \ .o. @\"filters/remove-Use_GC-strings.$$*\" \ .o. @\"filters/remove-Use_PMatch-strings.$$*\" \ .o. @\"filters/remove-all_areas_but_$(1)-strings.$$*\" \ .o. @\"filters/remove-mwe-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\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) endef $(foreach area,$(AREAS),$(eval $(call area_gramchk_fsts,$(area)))) # Default fallback processing for the grammarchecker fst's: define giella_gramcheck_analysers analyser-gramcheck%.$(1): analyser-gramcheck%.tmp.$(1) \ filters/remove-word-boundary.$(1) $$(AM_V_XFST_TOOL)$$(PRINTF) "read regex \ @\"$$<\" \ .o. @\"filters/remove-word-boundary.$(1)\" \ ;\n\ $$(INVERT_HFST)\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) generator-gramcheck%.$(1): generator-gramcheck%.tmp.$(1) \ filters/remove-word-boundary.$(1) $$(AM_V_XFST_TOOL)$$(PRINTF) "\ load stack $$<\n\ $$(INVERT_XFST)$$(INVERT_FOMA)\ save stack $$@\n\ quit\n" | $$(XFST_TOOL) endef $(foreach fst,hfst xfst foma,$(eval $(call giella_gramcheck_analysers,$(fst))))