Когда есть несколько правил, которые могут совпадать на текущем входе и давать совпадения одинакового размера, flex
примет правило, определенное первым.
Так, например, если есть \t
, оба правила \t
и .
могут совпадать, но на первом месте стоит \t
, так что именно оно используется.Но если появляется "
, используется .
, потому что \"
идет после него в вашем гибком файле.Таким образом, невозможно использовать правило \"
в STRLIT
, и именно в этом и заключается ошибка.
Чтобы исправить это, просто переместите .
, чтобы оно стало последним правилом.Таким образом, он будет совпадать, только если ни одно из других правил не совпадает.