Mercurial > vim
annotate runtime/syntax/awk.vim @ 21426:bb6e617589d0
Added tag v8.2.1263 for changeset a6c316ef161aa621a3ef1743bfab32a9acd4eb90
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 21 Jul 2020 21:45:06 +0200 |
parents | 350e1d3131d8 |
children | bbca88cd13d5 |
rev | line source |
---|---|
7 | 1 " Vim syntax file |
2 " Language: awk, nawk, gawk, mawk | |
3312 | 3 " Maintainer: Antonio Colombo <azc100@gmail.com> |
19813 | 4 " Last Change: 2020 Mar 25 |
7 | 5 |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
6 " AWK ref. is: Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger |
7 | 7 " The AWK Programming Language, Addison-Wesley, 1988 |
8 | |
9 " GAWK ref. is: Arnold D. Robbins | |
10 " Effective AWK Programming, Third Edition, O'Reilly, 2001 | |
6530 | 11 " Effective AWK Programming, Fourth Edition, O'Reilly, 2015 |
19813 | 12 " (up-to-date version available with the gawk source distribution) |
7 | 13 |
14 " MAWK is a "new awk" meaning it implements AWK ref. | |
15 " mawk conforms to the Posix 1003.2 (draft 11.3) | |
16 " definition of the AWK language which contains a few features | |
17 " not described in the AWK book, and mawk provides a small number of extensions. | |
18 | |
19 " TODO: | |
20 " Dig into the commented out syntax expressions below. | |
21 | |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
22 " Quit when a syntax file was already loaded |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
23 if exists("b:current_syntax") |
7 | 24 finish |
25 endif | |
26 | |
3312 | 27 let s:cpo_save = &cpo |
28 set cpo&vim | |
29 | |
7 | 30 " A bunch of useful Awk keywords |
31 " AWK ref. p. 188 | |
32 syn keyword awkStatement break continue delete exit | |
33 syn keyword awkStatement function getline next | |
34 syn keyword awkStatement print printf return | |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
35 " GAWK ref. Chapter 7-9 |
19813 | 36 syn keyword awkStatement case default switch nextfile |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
37 syn keyword awkStatement func |
19813 | 38 " GAWK ref. Chapter 2.7, Including Other Files into Your Program |
39 " GAWK ref. Chapter 2.8, Loading Dynamic Extensions into Your Program | |
40 " GAWK ref. Chapter 15, Namespaces | |
41 " Directives | |
42 syn keyword awkStatement @include @load @namespace | |
6530 | 43 " |
44 " GAWK ref. Chapter 9, Functions | |
45 " Numeric Functions | |
19813 | 46 syn keyword awkFunction atan2 cos exp int log rand sin sqrt srand |
6530 | 47 " String Manipulation Functions |
19813 | 48 syn keyword awkFunction asort asorti gensub gsub index length match |
6530 | 49 syn keyword awkFunction patsplit split sprintf strtonum sub substr |
7 | 50 syn keyword awkFunction tolower toupper |
6530 | 51 " Input Output Functions |
52 syn keyword awkFunction close fflush system | |
53 " Time Functions | |
54 syn keyword awkFunction mktime strftime systime | |
55 " Bit Manipulation Functions | |
56 syn keyword awkFunction and compl lshift or rshift xor | |
19813 | 57 " Getting Type Information Functions |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
58 syn keyword awkFunction isarray typeof |
6530 | 59 " String-Translation Functions |
60 syn keyword awkFunction bindtextdomain dcgettext dcngetext | |
7 | 61 |
62 syn keyword awkConditional if else | |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
63 syn keyword awkRepeat while for do |
7 | 64 |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
65 syn keyword awkTodo contained TODO |
7 | 66 |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
67 syn keyword awkPatterns BEGIN END BEGINFILE ENDFILE |
6530 | 68 |
69 " GAWK ref. Chapter 7 | |
70 " Built-in Variables That Control awk | |
71 syn keyword awkVariables BINMODE CONVFMT FIELDWIDTHS FPAT FS | |
72 syn keyword awkVariables IGNORECASE LINT OFMT OFS ORS PREC | |
73 syn keyword awkVariables ROUNDMODE RS SUBSEP TEXTDOMAIN | |
74 " Built-in Variables That Convey Information | |
75 syn keyword awkVariables ARGC ARGV ARGIND ENVIRON ERRNO FILENAME | |
76 syn keyword awkVariables FNR NF FUNCTAB NR PROCINFO RLENGTH RSTART | |
77 syn keyword awkVariables RT SYMTAB | |
7 | 78 |
10140
b11ceef7116e
commit https://github.com/vim/vim/commit/64d8e25bf6efe5f18b032563521c3ce278c316ab
Christian Brabandt <cb@256bit.org>
parents:
9533
diff
changeset
|
79 " Arithmetic operators: +, and - take care of ++, and -- |
b11ceef7116e
commit https://github.com/vim/vim/commit/64d8e25bf6efe5f18b032563521c3ce278c316ab
Christian Brabandt <cb@256bit.org>
parents:
9533
diff
changeset
|
80 syn match awkOperator "+\|-\|\*\|/\|%\|=" |
b11ceef7116e
commit https://github.com/vim/vim/commit/64d8e25bf6efe5f18b032563521c3ce278c316ab
Christian Brabandt <cb@256bit.org>
parents:
9533
diff
changeset
|
81 syn match awkOperator "+=\|-=\|\*=\|/=\|%=" |
b11ceef7116e
commit https://github.com/vim/vim/commit/64d8e25bf6efe5f18b032563521c3ce278c316ab
Christian Brabandt <cb@256bit.org>
parents:
9533
diff
changeset
|
82 syn match awkOperator "\^\|\^=" |
7 | 83 |
84 " Octal format character. | |
85 syn match awkSpecialCharacter display contained "\\[0-7]\{1,3\}" | |
86 " Hex format character. | |
87 syn match awkSpecialCharacter display contained "\\x[0-9A-Fa-f]\+" | |
88 | |
89 syn match awkFieldVars "\$\d\+" | |
90 | |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
91 " catch errors caused by wrong parenthesis |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
92 syn region awkParen transparent start="(" end=")" contains=ALLBUT,awkParenError,awkSpecialCharacter,awkArrayElement,awkArrayArray,awkTodo,awkRegExp,awkBrktRegExp,awkBrackets,awkCharClass,awkComment |
7 | 93 syn match awkParenError display ")" |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
94 "syn match awkInParen display contained "[{}]" |
7 | 95 |
96 " 64 lines for complex &&'s, and ||'s in a big "if" | |
97 syn sync ccomment awkParen maxlines=64 | |
98 | |
99 " Search strings & Regular Expressions therein. | |
100 syn region awkSearch oneline start="^[ \t]*/"ms=e start="\(,\|!\=\~\)[ \t]*/"ms=e skip="\\\\\|\\/" end="/" contains=awkBrackets,awkRegExp,awkSpecialCharacter | |
101 syn region awkBrackets contained start="\[\^\]\="ms=s+2 start="\[[^\^]"ms=s+1 end="\]"me=e-1 contains=awkBrktRegExp,awkCharClass | |
102 syn region awkSearch oneline start="[ \t]*/"hs=e skip="\\\\\|\\/" end="/" contains=awkBrackets,awkRegExp,awkSpecialCharacter | |
103 | |
104 syn match awkCharClass contained "\[:[^:\]]*:\]" | |
105 syn match awkBrktRegExp contained "\\.\|.\-[^]]" | |
106 syn match awkRegExp contained "/\^"ms=s+1 | |
107 syn match awkRegExp contained "\$/"me=e-1 | |
108 syn match awkRegExp contained "[?.*{}|+]" | |
109 | |
110 " String and Character constants | |
111 " Highlight special characters (those which have a backslash) differently | |
3513 | 112 syn region awkString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell,awkSpecialCharacter,awkSpecialPrintf |
7 | 113 syn match awkSpecialCharacter contained "\\." |
114 | |
115 " Some of these combinations may seem weird, but they work. | |
116 syn match awkSpecialPrintf contained "%[-+ #]*\d*\.\=\d*[cdefgiosuxEGX%]" | |
117 | |
118 " Numbers, allowing signs (both -, and +) | |
119 " Integer number. | |
120 syn match awkNumber display "[+-]\=\<\d\+\>" | |
121 " Floating point number. | |
122 syn match awkFloat display "[+-]\=\<\d\+\.\d+\>" | |
123 " Floating point number, starting with a dot. | |
124 syn match awkFloat display "[+-]\=\<.\d+\>" | |
125 syn case ignore | |
126 "floating point number, with dot, optional exponent | |
127 syn match awkFloat display "\<\d\+\.\d*\(e[-+]\=\d\+\)\=\>" | |
128 "floating point number, starting with a dot, optional exponent | |
129 syn match awkFloat display "\.\d\+\(e[-+]\=\d\+\)\=\>" | |
130 "floating point number, without dot, with exponent | |
131 syn match awkFloat display "\<\d\+e[-+]\=\d\+\>" | |
132 syn case match | |
133 | |
134 "syn match awkIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" | |
135 | |
136 " Comparison expressions. | |
6530 | 137 syn match awkExpression "==\|>=\|=>\|<=\|=<\|\!=" |
138 syn match awkExpression "\~\|\!\~" | |
139 syn match awkExpression "?\|:" | |
140 syn keyword awkExpression in | |
7 | 141 |
142 " Boolean Logic (OR, AND, NOT) | |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
143 syn match awkBoolLogic "||\|&&\|\!" |
7 | 144 |
145 " This is overridden by less-than & greater-than. | |
146 " Put this above those to override them. | |
147 " Put this in a 'match "\<printf\=\>.*;\="' to make it not override | |
148 " less/greater than (most of the time), but it won't work yet because | |
3513 | 149 " keywords always have precedence over match & region. |
7 | 150 " File I/O: (print foo, bar > "filename") & for nawk (getline < "filename") |
151 "syn match awkFileIO contained ">" | |
152 "syn match awkFileIO contained "<" | |
153 | |
154 " Expression separators: ';' and ',' | |
155 syn match awkSemicolon ";" | |
156 syn match awkComma "," | |
157 | |
3513 | 158 syn match awkComment "#.*" contains=@Spell,awkTodo |
7 | 159 |
160 syn match awkLineSkip "\\$" | |
161 | |
162 " Highlight array element's (recursive arrays allowed). | |
163 " Keeps nested array names' separate from normal array elements. | |
164 " Keeps numbers separate from normal array elements (variables). | |
165 syn match awkArrayArray contained "[^][, \t]\+\["me=e-1 | |
166 syn match awkArrayElement contained "[^][, \t]\+" | |
167 syn region awkArray transparent start="\[" end="\]" contains=awkArray,awkArrayElement,awkArrayArray,awkNumber,awkFloat | |
168 | |
169 " 10 should be enough. | |
170 " (for the few instances where it would be more than "oneline") | |
171 syn sync ccomment awkArray maxlines=10 | |
172 | |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
173 " Define the default highlighting. |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
174 hi def link awkConditional Conditional |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
175 hi def link awkFunction Function |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
176 hi def link awkRepeat Repeat |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
177 hi def link awkStatement Statement |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
178 hi def link awkString String |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
179 hi def link awkSpecialPrintf Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
180 hi def link awkSpecialCharacter Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
181 hi def link awkSearch String |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
182 hi def link awkBrackets awkRegExp |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
183 hi def link awkBrktRegExp awkNestRegExp |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
184 hi def link awkCharClass awkNestRegExp |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
185 hi def link awkNestRegExp Keyword |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
186 hi def link awkRegExp Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
187 hi def link awkNumber Number |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
188 hi def link awkFloat Float |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
189 hi def link awkFileIO Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
190 hi def link awkOperator Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
191 hi def link awkExpression Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
192 hi def link awkBoolLogic Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
193 hi def link awkPatterns Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
194 hi def link awkVariables Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
195 hi def link awkFieldVars Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
196 hi def link awkLineSkip Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
197 hi def link awkSemicolon Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
198 hi def link awkComma Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
199 hi def link awkIdentifier Identifier |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
200 hi def link awkComment Comment |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
201 hi def link awkTodo Todo |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
202 " Change this if you want nested array names to be highlighted. |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
203 hi def link awkArrayArray awkArray |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
204 hi def link awkArrayElement Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
205 hi def link awkParenError awkError |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
206 hi def link awkInParen awkError |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
207 hi def link awkError Error |
7 | 208 |
209 let b:current_syntax = "awk" | |
210 | |
3312 | 211 let &cpo = s:cpo_save |
212 unlet s:cpo_save | |
213 | |
7 | 214 " vim: ts=8 |