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