Flag diacritics are a tool that let you express morphological dependencies as constraints between states in an FST, where constraints are checked at run-time instead of at compile-time. This lets you have fewer states in your FST (at the cost of some run-time overhead).
The concept originally comes from Xerox Finite State Toolkit, but has been reimplemented in HFST (as well as an experimental mode in lttoolbox-java/Flag diacritics).
Some consider flag diacritics harmful, and in many cases they are over-used where simpler methods are possible.
Nevertheless, there is a GsoC idea to implement them in lttoolbox.