UNPKG

1.38 kBJavaScriptView Raw
1/*
2Language: Awk
3Author: Matthew Daly <matthewbdaly@gmail.com>
4Website: https://www.gnu.org/software/gawk/manual/gawk.html
5Description: language definition for Awk scripts
6*/
7
8/** @type LanguageFn */
9function awk(hljs) {
10 const VARIABLE = {
11 className: 'variable',
12 variants: [
13 {
14 begin: /\$[\w\d#@][\w\d_]*/
15 },
16 {
17 begin: /\$\{(.*?)\}/
18 }
19 ]
20 };
21 const KEYWORDS = 'BEGIN END if else while do for in break continue delete next nextfile function func exit|10';
22 const STRING = {
23 className: 'string',
24 contains: [hljs.BACKSLASH_ESCAPE],
25 variants: [
26 {
27 begin: /(u|b)?r?'''/,
28 end: /'''/,
29 relevance: 10
30 },
31 {
32 begin: /(u|b)?r?"""/,
33 end: /"""/,
34 relevance: 10
35 },
36 {
37 begin: /(u|r|ur)'/,
38 end: /'/,
39 relevance: 10
40 },
41 {
42 begin: /(u|r|ur)"/,
43 end: /"/,
44 relevance: 10
45 },
46 {
47 begin: /(b|br)'/,
48 end: /'/
49 },
50 {
51 begin: /(b|br)"/,
52 end: /"/
53 },
54 hljs.APOS_STRING_MODE,
55 hljs.QUOTE_STRING_MODE
56 ]
57 };
58 return {
59 name: 'Awk',
60 keywords: {
61 keyword: KEYWORDS
62 },
63 contains: [
64 VARIABLE,
65 STRING,
66 hljs.REGEXP_MODE,
67 hljs.HASH_COMMENT_MODE,
68 hljs.NUMBER_MODE
69 ]
70 };
71}
72
73export { awk as default };