Итак, я пытаюсь создать синтаксис для Менгира генератора парсера для OCaml.
На этом языке в файле есть три раздела, разделенных %%
(нет, это не красиво; к сожалению, оно унаследовано от древнего ocamlyacc.)
Я пытаюсь создать отдельную область синтаксиса для каждого из этих трех, плюс один для чего-либо после постороннего, третий %%
:
this should be in `menhirDeclarations`
%%
this should be in `menhirRules`
%%
this should be in `menhirOcamlFooter`
%%
this should be in `menhirSeparatorError`
%%
this should still be in the same `menhirSeparatorError`
Сегодня я просматривал документы :h syn-define
и дошел до определения группы, которая соответствует всему в первом объявлении:
syn region menhirDeclarations start=/\%^/ end=/%%/
\ contains=@menhirComments
… но у меня много проблем с расширением для соответствия следующим разделам. Наивный подход не работает для меня, например:
" These break each document into the three sections of a Menhir parser definition:
syn region menhirSeparatorError start=/%%/ end=/%%/
\ contained contains=@menhirComments
syn region menhirOcamlFooter start=/%%/ end=/%%/
\ contained contains=@menhirCommentsnextgroup=menhirSeparatorError
syn region menhirRules start=/%%/ end=/%%/
\ contained contains=@menhirComments nextgroup=menhirOcamlFooter
syn region menhirDeclarations start=/\%^/ end=/%%/
\ contains=@menhirComments nextgroup=menhirRules
Как заставить Vim разделить подсветку синтаксиса файла на несколько разделов, как это?