]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/catalog/modes/cplexlp.xml
basis/xmode: refactor to be deploy friendly.
[factor.git] / basis / xmode / catalog / modes / cplexlp.xml
1 <?xml version="1.0"?>
2 <!DOCTYPE MODE SYSTEM "xmode.dtd">
3
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. -->
7
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. -->
12
13 <MODE>
14         <PROPS>
15                 <PROPERTY NAME='wordBreakChars' VALUE='+-/*^=&lt;&gt;\' />
16         </PROPS>
17
18         <RULES
19                 IGNORE_CASE='TRUE'
20                 HIGHLIGHT_DIGITS='TRUE' DIGIT_RE='\d+(?:\.\d+)?|\d+(?:\.\d+)?e\d+'>
21
22                 <EOL_SPAN TYPE='COMMENT1'>\</EOL_SPAN>
23
24                 <SEQ TYPE='OPERATOR'>&gt;=</SEQ>
25                 <SEQ TYPE='OPERATOR'>=&gt;</SEQ>
26                 <SEQ TYPE='OPERATOR'>&gt;</SEQ>
27                 <SEQ TYPE='OPERATOR'>&lt;=</SEQ>
28                 <SEQ TYPE='OPERATOR'>=&lt;</SEQ>
29                 <SEQ TYPE='OPERATOR'>&lt;</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>
36
37                 <KEYWORDS>
38                         <KEYWORD1>maximize</KEYWORD1>
39                         <KEYWORD1>maximum</KEYWORD1>
40                         <KEYWORD1>minimize</KEYWORD1>
41                         <KEYWORD1>minimum</KEYWORD1>
42                         <KEYWORD1>min</KEYWORD1>
43                         <KEYWORD1>max</KEYWORD1>
44
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>
52
53                         <KEYWORD1>bounds</KEYWORD1>
54                         <KEYWORD1>bound</KEYWORD1>
55
56                         <KEYWORD1>generals</KEYWORD1>
57                         <KEYWORD1>general</KEYWORD1>
58                         <KEYWORD1>gen</KEYWORD1>
59
60                         <KEYWORD1>integers</KEYWORD1>
61                         <KEYWORD1>integer</KEYWORD1>
62                         <KEYWORD1>int</KEYWORD1>
63
64                         <KEYWORD1>binaries</KEYWORD1>
65                         <KEYWORD1>binary</KEYWORD1>
66                         <KEYWORD1>bin</KEYWORD1>
67
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>
71                 </KEYWORDS>
72
73                 <SEQ TYPE='KEYWORD1'>subject to</SEQ>
74                 <SEQ TYPE='KEYWORD1'>such that</SEQ>
75
76                 <!-- objective function and constraint labels -->
77                 <SEQ_REGEXP AT_LINE_START='TRUE' TYPE='LABEL' HASH_CHARS='ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz_'>[A-z_ ][\w(),]+(?=:)</SEQ_REGEXP>
78
79                 <!-- Variables. -->
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!"#$%&amp;()/,.;?@_`'{}|~]*</SEQ_REGEXP>
84         </RULES>
85 </MODE>