55 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
|  Language: Flix
 | |
|  Category: functional
 | |
|  Author: Magnus Madsen <mmadsen@uwaterloo.ca>
 | |
|  Website: https://flix.dev/
 | |
|  */
 | |
| 
 | |
|  /** @type LanguageFn */
 | |
| function flix(hljs) {
 | |
|   const CHAR = {
 | |
|     className: 'string',
 | |
|     begin: /'(.|\\[xXuU][a-zA-Z0-9]+)'/
 | |
|   };
 | |
| 
 | |
|   const STRING = {
 | |
|     className: 'string',
 | |
|     variants: [{
 | |
|       begin: '"',
 | |
|       end: '"'
 | |
|     }]
 | |
|   };
 | |
| 
 | |
|   const NAME = {
 | |
|     className: 'title',
 | |
|     relevance: 0,
 | |
|     begin: /[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/
 | |
|   };
 | |
| 
 | |
|   const METHOD = {
 | |
|     className: 'function',
 | |
|     beginKeywords: 'def',
 | |
|     end: /[:={\[(\n;]/,
 | |
|     excludeEnd: true,
 | |
|     contains: [NAME]
 | |
|   };
 | |
| 
 | |
|   return {
 | |
|     name: 'Flix',
 | |
|     keywords: {
 | |
|       literal: 'true false',
 | |
|       keyword: 'case class def else enum if impl import in lat rel index let match namespace switch type yield with'
 | |
|     },
 | |
|     contains: [
 | |
|       hljs.C_LINE_COMMENT_MODE,
 | |
|       hljs.C_BLOCK_COMMENT_MODE,
 | |
|       CHAR,
 | |
|       STRING,
 | |
|       METHOD,
 | |
|       hljs.C_NUMBER_MODE
 | |
|     ]
 | |
|   };
 | |
| }
 | |
| 
 | |
| module.exports = flix;
 |