meankondo/editors/vim/syntax/meankondo.vim
Ian Jauslin 3f0510629e Update to v1.5.
The update to version 1.5 is rather substantial, and introduces some minor
  backward-incompatibilities:
    * The header "#!symbols" has been replaced by "#!virtual_fields"
    * Multiplying polynomials using the '*' symbol is no longer supported (or,
      rather, the symbolic capabilities of meankondo were enhanced, and the
      syntax has been changed).
    * 'meantools exp' has been removed (its functionality is now handled by
      other means)
    * 'meantoolds derive' has been replaced by 'meantools differentiate'

  * The symbolic capabilities were enhanced: polynomials can now be
    multiplied, added, exponentiated, and their logarithms can be taken
    directly in the configuration file.

  * The flow equation can now be processed after being computed using the
    various "#!postprocess_*" entries.

  * Deprecated kondo_preprocess.

  * Compute the mean using an LU decomposition if possible.

  * More detailed checks for syntax errors in configuration file.

  * Check that different '#!group' entries are indeed uncorrelated.

  * New flags in meankondo: '-p' and '-A'.

  * New tool: meantools expand.

  * Improve conversion to LaTeX using meantools-convert

  * Assign terms randomly to different threads.

  * Created vim files to implement syntax highlighting for configuration
    files.

  * Multiple bug fixes
2022-06-14 09:46:36 +02:00

112 lines
4.8 KiB
VimL

" Vim syntax file
" Language: meankondo
" Maintainer: Ian Jauslin <ian.jauslin@roma1.infn.it>
" Last Change: 2022-06-06
" URL: http://ian.jauslin.org/software/meankondo
"
if exists("b:current_syntax")
finish
endif
" Comments
syn match Comment '#.*'
" Regions
syn region FieldsRegion matchgroup=configHeader start='#!fields' end='&' transparent contains=Comment,Separator,FieldHeader,FieldInField,Equal
syn region VariablesRegion matchgroup=configHeader start='#!preprocessor_variables' end='&' transparent contains=@Globals,VariableHeader
syn region IdTableRegion matchgroup=configHeader start='#!id_table' end='&' transparent contains=@Globals,RegionHeader
syn region SymbolsRegion matchgroup=configHeader start='#!symbols' end='&' transparent contains=@Globals,VariableHeader
syn region PolynomialRegion matchgroup=configHeader start='#!input_polynomial' end='&' transparent
syn region PolynomialRegion matchgroup=configHeader start='#!postprocess_operation' end='&' transparent
syn region PolynomialRegion matchgroup=configHeader start='#!postprocess_flow_equation' end='&' transparent
syn region PolynomialRegion matchgroup=configHeader start='#!numerical_postprocess_operation' end='&' transparent
syn region PropagatorRegion matchgroup=configHeader start='#!propagator' end='&' transparent contains=Comment,Number,NumberBase,Separator,FieldInProp,Equal,NumberInProp
syn region IdentitiesRegion matchgroup=configHeader start='#!identities' end='&' transparent
syn region GroupsRegion matchgroup=configHeader start='#!groups' end='&' transparent contains=Comment,Separator,FieldHeader,FieldInField,Equal,GroupParenthesis
syn region LabelsRegion matchgroup=configHeader start='#!labels' end='&' transparent contains=String,RegionHeader,Separator,Comment,Equal
syn region FlowEquationRegion matchgroup=configHeader start='#!flow_equation' end='&' transparent
syn region InitCdRegion matchgroup=configHeader start='#!initial_condition' end='&' transparent contains=Comment,Separator,RegionHeader,Equal,NumberInInit,InitHeader
syn region DerivVarsRegion matchgroup=configHeader start='#!variables' end='&' transparent contains=Comment,Separator,FieldHeader,FieldInField,Equal,VarAll
" Generic syntax
syn match Field '\[f[-0-9]\+\]'
syn match Factor '\[l[-0-9]\+\]'
syn match Factor '\[d*% *[-0-9]\+\]' contains=Deriv
syn match ConstantF '\[d*C *[0-9]\+\]' contains=Deriv
syn match ConstantD '\[/C *[0-9]\+ *\^ *[0-9]\+\]'
syn match Deriv 'd' contained
syn match Variables '\$[^>]*'
syn match Number '<[-/0-9]*>'
syn match Number '([-/0-9]*)'
syn match NumberBase 's{[-/0-9]*}'
syn match NumberBase '(s{[-/0-9]*})'
syn match Operator '[*+]'
syn match Operator '%exp'
syn match Operator '%log_1'
syn match Separator ','
syn match Equal '[:=]'
syn cluster Globals contains=Comment,Field,Factor,Constant,Variables,Number,NumberBase,Operator,Separator,Equal
" Fields
syn keyword FieldHeader i contained
syn keyword FieldHeader x contained
syn keyword FieldHeader h contained
syn keyword FieldHeader f contained
syn keyword FieldHeader a contained
syn match FieldInField '[-0-9]\+' contained
" Variables
syn match VariableHeader '^[^=,]*='he=e-1 contained contains=Equal
" Groups
syn match GroupParenthesis '[()]' contained
" Propagator
syn match FieldInProp '[0-9]\+ *[;:]'he=e-1 contained contains=Equal,NumberInProp
syn match NumberInProp ': *[-/()0-9s{}]*'hs=s+1 contained
" IdTable
syn match RegionHeader '[0-9]\+:'he=e-1 contained contains=Equal
" Labels
syn match String '"[^"]*"'hs=s+1,he=e-1 contained
" Initial condition
syn match InitHeader '[0-9]\+:'he=e-1 contained contains=Equal,NumberInInit
syn match NumberInInit ': *[-.e0-9]*'hs=s+1 contained
" Variables
syn keyword VarAll all contained
" Colors
hi Comment ctermfg=cyan
hi configHeader ctermfg=red
hi Field ctermfg=Lightblue
hi Factor ctermfg=Lightblue
hi ConstantF ctermfg=Lightblue
hi ConstantD ctermfg=Lightgreen
hi Deriv ctermfg=red
hi Header ctermfg=Lightgreen
hi Variables ctermfg=yellow
hi Number ctermfg=green
hi NumberBase ctermfg=green
hi Separator ctermfg=red
hi Equal ctermfg=Lightred
hi Operator ctermfg=magenta
hi String ctermfg=magenta
hi NumberInInit ctermfg=magenta
hi def link FieldInField Field
hi def link VariableHeader Variables
hi def link FieldInProp Field
hi def link FieldHeader Header
hi def link NumberInProp Number
hi def link SeparatorInProp Separator
hi def link RegionHeader Header
hi def link InitHeader Header
hi def link GroupParenthesis Separator
hi def link VarAll Field