fork for IVI
[profile/ivi/vim.git] / runtime / syntax / ampl.vim
1 " Language:     ampl (A Mathematical Programming Language)
2 " Maintainer:   Krief David <david.krief@etu.enseeiht.fr> or <david_krief@hotmail.com>
3 " Last Change:  2003 May 11
4
5
6 if version < 600
7  syntax clear
8 elseif exists("b:current_syntax")
9  finish
10 endif
11
12
13
14
15 "--
16 syn match   amplEntityKeyword     "\(subject to\)\|\(subj to\)\|\(s\.t\.\)"
17 syn keyword amplEntityKeyword     minimize   maximize  objective
18
19 syn keyword amplEntityKeyword     coeff      coef      cover        obj       default
20 syn keyword amplEntityKeyword     from       to        to_come      net_in    net_out
21 syn keyword amplEntityKeyword     dimen      dimension
22
23
24
25 "--
26 syn keyword amplType              integer    binary    set          param     var
27 syn keyword amplType              node       ordered   circular     reversed  symbolic
28 syn keyword amplType              arc
29
30
31
32 "--
33 syn keyword amplStatement         check      close     \display     drop      include
34 syn keyword amplStatement         print      printf    quit         reset     restore
35 syn keyword amplStatement         solve      update    write        shell     model
36 syn keyword amplStatement         data       option    let          solution  fix
37 syn keyword amplStatement         unfix      end       function     pipe      format
38
39
40
41 "--
42 syn keyword amplConditional       if         then      else         and       or
43 syn keyword amplConditional       exists     forall    in           not       within
44
45
46
47 "--
48 syn keyword amplRepeat            while      repeat    for
49
50
51
52 "--
53 syn keyword amplOperators         union      diff      difference   symdiff   sum
54 syn keyword amplOperators         inter      intersect intersection cross     setof
55 syn keyword amplOperators         by         less      mod          div       product
56 "syn keyword amplOperators         min        max
57 "conflict between functions max, min and operators max, min
58
59 syn match   amplBasicOperators    "||\|<=\|==\|\^\|<\|=\|!\|-\|\.\.\|:="
60 syn match   amplBasicOperators    "&&\|>=\|!=\|\*\|>\|:\|/\|+\|\*\*"
61
62
63
64
65 "--
66 syn match   amplComment         "\#.*"
67 syn region  amplComment         start=+\/\*+              end=+\*\/+
68
69 syn region  amplStrings         start=+\'+    skip=+\\'+  end=+\'+
70 syn region  amplStrings         start=+\"+    skip=+\\"+  end=+\"+
71
72 syn match   amplNumerics        "[+-]\=\<\d\+\(\.\d\+\)\=\([dDeE][-+]\=\d\+\)\=\>"
73 syn match   amplNumerics        "[+-]\=Infinity"
74
75
76 "--
77 syn keyword amplSetFunction       card       next     nextw       prev      prevw
78 syn keyword amplSetFunction       first      last     member      ord       ord0
79
80 syn keyword amplBuiltInFunction   abs        acos     acosh       alias     asin
81 syn keyword amplBuiltInFunction   asinh      atan     atan2       atanh     ceil
82 syn keyword amplBuiltInFunction   cos        exp      floor       log       log10
83 syn keyword amplBuiltInFunction   max        min      precision   round     sin
84 syn keyword amplBuiltInFunction   sinh       sqrt     tan         tanh      trunc
85
86 syn keyword amplRandomGenerator   Beta       Cauchy   Exponential Gamma     Irand224
87 syn keyword amplRandomGenerator   Normal     Poisson  Uniform     Uniform01
88
89
90
91 "-- to highlight the 'dot-suffixes'
92 syn match   amplDotSuffix       "\h\w*\.\(lb\|ub\)"hs=e-2
93 syn match   amplDotSuffix       "\h\w*\.\(lb0\|lb1\|lb2\|lrc\|ub0\)"hs=e-3
94 syn match   amplDotSuffix       "\h\w*\.\(ub1\|ub2\|urc\|val\|lbs\|ubs\)"hs=e-3
95 syn match   amplDotSuffix       "\h\w*\.\(init\|body\|dinit\|dual\)"hs=e-4
96 syn match   amplDotSuffix       "\h\w*\.\(init0\|ldual\|slack\|udual\)"hs=e-5
97 syn match   amplDotSuffix       "\h\w*\.\(lslack\|uslack\|dinit0\)"hs=e-6
98
99
100
101 "--
102 syn match   amplPiecewise       "<<\|>>"
103
104
105
106 "-- Todo.
107 syn keyword amplTodo contained   TODO FIXME XXX
108
109
110
111
112
113
114
115
116
117
118 if version >= 508 || !exists("did_ampl_syntax_inits")
119   if version < 508
120     let did_ampl_syntax_inits = 1
121     command -nargs=+ HiLink hi link <args>
122   else
123     command -nargs=+ HiLink hi def link <args>
124   endif
125
126   " The default methods for highlighting. Can be overridden later.
127   HiLink amplEntityKeyword      Keyword
128   HiLink amplType               Type
129   HiLink amplStatement          Statement
130   HiLink amplOperators          Operator
131   HiLink amplBasicOperators     Operator
132   HiLink amplConditional        Conditional
133   HiLink amplRepeat             Repeat
134   HiLink amplStrings            String
135   HiLink amplNumerics           Number
136   HiLink amplSetFunction        Function
137   HiLink amplBuiltInFunction    Function
138   HiLink amplRandomGenerator    Function
139   HiLink amplComment            Comment
140   HiLink amplDotSuffix          Special
141   HiLink amplPiecewise          Special
142
143   delcommand HiLink
144 endif
145
146 let b:current_syntax = "ampl"
147
148 " vim: ts=8
149
150