...
1<lexer>
2 <config>
3 <name>Natural</name>
4 <alias>natural</alias>
5 <filename>*.NSN</filename>
6 <filename>*.NSP</filename>
7 <filename>*.NSS</filename>
8 <filename>*.NSH</filename>
9 <filename>*.NSG</filename>
10 <filename>*.NSL</filename>
11 <filename>*.NSA</filename>
12 <filename>*.NSM</filename>
13 <filename>*.NSC</filename>
14 <filename>*.NS7</filename>
15 <mime_type>text/x-natural</mime_type>
16 <case_insensitive>true</case_insensitive>
17 </config>
18 <rules>
19 <state name="common">
20 <rule pattern="\s+">
21 <token type="Text"/>
22 </rule>
23 <rule pattern="^\*.*$">
24 <token type="CommentSingle"/>
25 </rule>
26 <rule pattern="/\*.*$">
27 <token type="CommentSingle"/>
28 </rule>
29 </state>
30 <state name="variable-names">
31 <rule pattern="[#+]?[\w\-\d]+">
32 <token type="NameVariable"/>
33 </rule>
34 <rule pattern="\([a-zA-z]\d*\)">
35 <token type="Other"/>
36 </rule>
37 </state>
38 <state name="root">
39 <rule>
40 <include state="common"/>
41 </rule>
42 <rule pattern="(?:END-DEFINE|END-IF|END-FOR|END-SUBROUTINE|END-ERROR|END|IGNORE)\b">
43 <token type="Keyword"/>
44 </rule>
45 <rule pattern="(?:INIT|CONST)\s*<\b">
46 <token type="Keyword"/>
47 </rule>
48 <rule pattern="(FORM)(\s+)(\w+)">
49 <bygroups>
50 <token type="Keyword"/>
51 <token type="Text"/>
52 <token type="NameFunction"/>
53 </bygroups>
54 </rule>
55 <rule pattern="(DEFINE)(\s+)(SUBROUTINE)(\s+)([#+]?[\w\-\d]+)">
56 <bygroups>
57 <token type="Keyword"/>
58 <token type="Text"/>
59 <token type="Keyword"/>
60 <token type="Text"/>
61 <token type="NameFunction"/>
62 </bygroups>
63 </rule>
64 <rule pattern="(PERFORM)(\s+)([#+]?[\w\-\d]+)">
65 <bygroups>
66 <token type="Keyword"/>
67 <token type="Text"/>
68 <token type="NameFunction"/>
69 </bygroups>
70 </rule>
71 <rule pattern="(METHOD)(\s+)([\w~]+)">
72 <bygroups>
73 <token type="Keyword"/>
74 <token type="Text"/>
75 <token type="NameFunction"/>
76 </bygroups>
77 </rule>
78 <rule pattern="(\s+)([\w\-]+)([=\-]>)([\w\-~]+)">
79 <bygroups>
80 <token type="Text"/>
81 <token type="NameVariable"/>
82 <token type="Operator"/>
83 <token type="NameFunction"/>
84 </bygroups>
85 </rule>
86 <rule pattern="(?<=(=|-)>)([\w\-~]+)(?=\()">
87 <token type="NameFunction"/>
88 </rule>
89 <rule pattern="(TEXT)(-)(\d{3})">
90 <bygroups>
91 <token type="Keyword"/>
92 <token type="Punctuation"/>
93 <token type="LiteralNumberInteger"/>
94 </bygroups>
95 </rule>
96 <rule pattern="(TEXT)(-)(\w{3})">
97 <bygroups>
98 <token type="Keyword"/>
99 <token type="Punctuation"/>
100 <token type="NameVariable"/>
101 </bygroups>
102 </rule>
103 <rule pattern="(?i)\b(?<!-)(?<!#)(ENTIRE|BY|NAME|ARRAY|SPECIFIED|VIEW|MODULE|FUNCTION|RETURNS|AND|NUMERIC|OPTIONAL|END-PARSE|TRUE|END-RESULT|LEAVING|NOT|CONDITION|NUMBER|NO|EXP|FULL|REPLACE|INSERT|DOEND|LOG|ABS|ANY|REPEAT|SET|DLOGOFF|DOWNLOAD|BREAK|VALUES|DIVIDE|COMPRESS|UPDATE|SORTKEY|OR|END-FIND|END-ENDPAGE|REDUCE|IGNORE|MIN|WASTE|END-DEFINE|SUBSTR|END|FIND|ADD|INVESTIGATE|DNATIVE|CONST|COS|ENDHOC|SGN|COPY|REDEFINE|DEFINE|MULTIPLY|ASSIGN|LE|VALUE|COMPOSE|FALSE|POS|CALL|TAN|ERROR|CLOSE|PARSE|LT|WITH_CTE|END-SORT|EJECT|RESET|SHOW|LOCAL|PERFORM|TERMINATE|VAL|BACKOUT|END-LOOP|REJECT|SUM|CREATE|SORT|RETURN|AT|SIN|SETTIME|INT|NE|GLOBAL|END-SELECT|ELSE|DELETE|TOP|INCLUDE|END-ENDDATA|LOOP|OLD|SUSPEND|SKIP|SQRT|RULEVAR|NMIN|AVER|PROCESS|SELECT|MAP|USING|END-HISTOGRAM|MAX|NEWPAGE|ON|OFF|KEY|NAMED|CONTROL|PF1|PF2|PF3|PF4|PF5|PF6|PF7|PF8|PF9|INITIAL|WRITE|STORE|FETCH|ATN|RET|END-WORK|RESTORE|GET|LIMIT|END-ERROR|SEND|OPEN|ESCAPE|COMPUTE|COUNT|TRANSFER|RELEASE|DO|DYNAMIC|ROLLBACK|END-READ|DISPLAY|UPLOAD|END-DATA|NULL-HANDLE|NCOUNT|RESIZE|END-PROCESS|REQUEST|READ|SEPARATE|EQ|INPUT|DATA|END-START|STACK|REINPUT|INCDIC|INCCONT|END-IF|WHEN|END-BEFORE|WHILE|END-ENDFILE|END-TOPPAGE|INCDIR|PARAMETER|OBTAIN|CALLDBPROC|END-BROWSE|MOVE|SUBTRACT|DLOGON|EXAMINE|SUBSTRING|BEFORE|STOP|RUN|END-BREAK|EXPORT|END-SUBROUTINE|FOR|GE|PRINT|BROWSE|IMPORT|EXPAND|ALL|PASSW|FORMAT|GT|END-NOREC|END-DECIDE|END-FOR|CALLNAT|END-ALL|OPTIONS|RETRY|NONE|INCMAC|END-FILE|DECIDE|INIT|HISTOGRAM|NAVER|START|ACCEPT|COMMIT|TOTAL|IF|FRAC|END-REPEAT|UNTIL|TO|INTO|WITH|DELIMITER|FIRST|OF|INTO|SUBROUTINE|GIVING|POSITION)\b(?!-)">
104 <token type="Keyword"/>
105 </rule>
106 <rule pattern="[0-9]+">
107 <token type="LiteralNumberInteger"/>
108 </rule>
109 <rule pattern="(?<=(\s|.))(AND|OR|NOT|EQUAL|NE|EQ|GT|GE|LT|LE)\b">
110 <token type="OperatorWord"/>
111 </rule>
112 <rule>
113 <include state="variable-names"/>
114 </rule>
115 <rule pattern="[?*<>=\-+&]">
116 <token type="Operator"/>
117 </rule>
118 <rule pattern="(?:(ESCAPE)(\s+)(MODULE|ROUTINE|BOTTOM|TOP))">
119 <bygroups>
120 <token type="Keyword"/>
121 <token type="Text"/>
122 <token type="Keyword"/>
123 </bygroups>
124 </rule>
125 <rule pattern="'(''|[^'])*'">
126 <token type="LiteralStringSingle"/>
127 </rule>
128 <rule pattern="`([^`])*`">
129 <token type="LiteralStringSingle"/>
130 </rule>
131 <rule pattern="([|}])([^{}|]*?)([|{])">
132 <bygroups>
133 <token type="Punctuation"/>
134 <token type="LiteralStringSingle"/>
135 <token type="Punctuation"/>
136 </bygroups>
137 </rule>
138 <rule pattern="[/;:()\[\],.]">
139 <token type="Punctuation"/>
140 </rule>
141 </state>
142 </rules>
143</lexer>
View as plain text