74 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
Language: Awk
 | 
						|
Author: Matthew Daly <matthewbdaly@gmail.com>
 | 
						|
Website: https://www.gnu.org/software/gawk/manual/gawk.html
 | 
						|
Description: language definition for Awk scripts
 | 
						|
*/
 | 
						|
 | 
						|
/** @type LanguageFn */
 | 
						|
function awk(hljs) {
 | 
						|
  const VARIABLE = {
 | 
						|
    className: 'variable',
 | 
						|
    variants: [
 | 
						|
      {
 | 
						|
        begin: /\$[\w\d#@][\w\d_]*/
 | 
						|
      },
 | 
						|
      {
 | 
						|
        begin: /\$\{(.*?)\}/
 | 
						|
      }
 | 
						|
    ]
 | 
						|
  };
 | 
						|
  const KEYWORDS = 'BEGIN END if else while do for in break continue delete next nextfile function func exit|10';
 | 
						|
  const STRING = {
 | 
						|
    className: 'string',
 | 
						|
    contains: [hljs.BACKSLASH_ESCAPE],
 | 
						|
    variants: [
 | 
						|
      {
 | 
						|
        begin: /(u|b)?r?'''/,
 | 
						|
        end: /'''/,
 | 
						|
        relevance: 10
 | 
						|
      },
 | 
						|
      {
 | 
						|
        begin: /(u|b)?r?"""/,
 | 
						|
        end: /"""/,
 | 
						|
        relevance: 10
 | 
						|
      },
 | 
						|
      {
 | 
						|
        begin: /(u|r|ur)'/,
 | 
						|
        end: /'/,
 | 
						|
        relevance: 10
 | 
						|
      },
 | 
						|
      {
 | 
						|
        begin: /(u|r|ur)"/,
 | 
						|
        end: /"/,
 | 
						|
        relevance: 10
 | 
						|
      },
 | 
						|
      {
 | 
						|
        begin: /(b|br)'/,
 | 
						|
        end: /'/
 | 
						|
      },
 | 
						|
      {
 | 
						|
        begin: /(b|br)"/,
 | 
						|
        end: /"/
 | 
						|
      },
 | 
						|
      hljs.APOS_STRING_MODE,
 | 
						|
      hljs.QUOTE_STRING_MODE
 | 
						|
    ]
 | 
						|
  };
 | 
						|
  return {
 | 
						|
    name: 'Awk',
 | 
						|
    keywords: {
 | 
						|
      keyword: KEYWORDS
 | 
						|
    },
 | 
						|
    contains: [
 | 
						|
      VARIABLE,
 | 
						|
      STRING,
 | 
						|
      hljs.REGEXP_MODE,
 | 
						|
      hljs.HASH_COMMENT_MODE,
 | 
						|
      hljs.NUMBER_MODE
 | 
						|
    ]
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
module.exports = awk;
 |