2 <!DOCTYPE MODE SYSTEM "xmode.dtd">
4 <!-- CPlex LP mode, by Kevin Hunter of NCSU (kmhunte@) for jEdit 4.5+ -->
5 <!-- Finding an LP specification has proved difficult; the best I could do -->
6 <!-- was borrow a copy of the ILOG CPLEX 10.1 User's Manual from a friend. -->
8 <!-- For the curious reading this file: one doesn't generally create LP -->
9 <!-- files by hand, but uses the output of another program (usually for -->
10 <!-- debugging purposes). Consequently, I've not include any frills, -->
11 <!-- like auto indent, etc. -->
15 <PROPERTY NAME='wordBreakChars' VALUE='+-/*^=<>\' />
20 HIGHLIGHT_DIGITS='TRUE' DIGIT_RE='\d+(?:\.\d+)?|\d+(?:\.\d+)?e\d+'>
22 <EOL_SPAN TYPE='COMMENT1'>\</EOL_SPAN>
24 <SEQ TYPE='OPERATOR'>>=</SEQ>
25 <SEQ TYPE='OPERATOR'>=></SEQ>
26 <SEQ TYPE='OPERATOR'>></SEQ>
27 <SEQ TYPE='OPERATOR'><=</SEQ>
28 <SEQ TYPE='OPERATOR'>=<</SEQ>
29 <SEQ TYPE='OPERATOR'><</SEQ>
30 <SEQ TYPE='OPERATOR'>:</SEQ>
31 <SEQ TYPE='OPERATOR'>=</SEQ>
32 <SEQ TYPE='OPERATOR'>+</SEQ>
33 <SEQ TYPE='OPERATOR'>-</SEQ>
34 <SEQ TYPE='OPERATOR'>*</SEQ>
35 <SEQ TYPE='OPERATOR'>/</SEQ>
38 <KEYWORD1>maximize</KEYWORD1>
39 <KEYWORD1>maximum</KEYWORD1>
40 <KEYWORD1>minimize</KEYWORD1>
41 <KEYWORD1>minimum</KEYWORD1>
42 <KEYWORD1>min</KEYWORD1>
43 <KEYWORD1>max</KEYWORD1>
45 <!-- <KEYWORD1>subject to</KEYWORD1> jEdit apparently cannot -->
46 <!-- <KEYWORD1>Subject To</KEYWORD1> handle a space in this -->
47 <!-- <KEYWORD1>such that</KEYWORD1> style of KEYWORD. -->
48 <KEYWORD1>s.t.</KEYWORD1>
49 <KEYWORD1>st.</KEYWORD1>
50 <KEYWORD1>st</KEYWORD1>
51 <KEYWORD1>end</KEYWORD1>
53 <KEYWORD1>bounds</KEYWORD1>
54 <KEYWORD1>bound</KEYWORD1>
56 <KEYWORD1>generals</KEYWORD1>
57 <KEYWORD1>general</KEYWORD1>
58 <KEYWORD1>gen</KEYWORD1>
60 <KEYWORD1>integers</KEYWORD1>
61 <KEYWORD1>integer</KEYWORD1>
62 <KEYWORD1>int</KEYWORD1>
64 <KEYWORD1>binaries</KEYWORD1>
65 <KEYWORD1>binary</KEYWORD1>
66 <KEYWORD1>bin</KEYWORD1>
68 <SEQ AT_LINE_START='FALSE' TYPE='KEYWORD3'>infinity</SEQ>
69 <SEQ AT_LINE_START='FALSE' TYPE='KEYWORD3'>inf</SEQ>
70 <SEQ AT_LINE_START='FALSE' TYPE='KEYWORD3'>free</SEQ>
73 <SEQ TYPE='KEYWORD1'>subject to</SEQ>
74 <SEQ TYPE='KEYWORD1'>such that</SEQ>
76 <!-- objective function and constraint labels -->
77 <SEQ_REGEXP AT_LINE_START='TRUE' TYPE='LABEL' HASH_CHARS='ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz_'>[A-z_ ][\w(),]+(?=:)</SEQ_REGEXP>
80 <!-- It's unfortunate for CPlex LP format that jEdit neight has a -->
81 <!-- token type of VARIABLE, nor lets the mode file define it's own, -->
82 <!-- like Vim. Oh well; arbitrarily pick a KEYWORD. -->
83 <SEQ_REGEXP AT_WORD_START='TRUE' AT_LINE_START='FALSE' TYPE='KEYWORD2' HASH_CHARS='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_'>[A-z_][\w!"#$%&()/,.;?@_`'{}|~]*</SEQ_REGEXP>