mirror of
				https://github.com/JKorf/CryptoExchange.Net
				synced 2025-10-30 18:07:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			107 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| Language: Lisp
 | |
| Description: Generic lisp syntax
 | |
| Author: Vasily Polovnyov <vast@whiteants.net>
 | |
| Category: lisp
 | |
| */
 | |
| 
 | |
| export default function(hljs) {
 | |
|   var LISP_IDENT_RE = '[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*';
 | |
|   var MEC_RE = '\\|[^]*?\\|';
 | |
|   var LISP_SIMPLE_NUMBER_RE = '(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?';
 | |
|   var LITERAL = {
 | |
|     className: 'literal',
 | |
|     begin: '\\b(t{1}|nil)\\b'
 | |
|   };
 | |
|   var NUMBER = {
 | |
|     className: 'number',
 | |
|     variants: [
 | |
|       {begin: LISP_SIMPLE_NUMBER_RE, relevance: 0},
 | |
|       {begin: '#(b|B)[0-1]+(/[0-1]+)?'},
 | |
|       {begin: '#(o|O)[0-7]+(/[0-7]+)?'},
 | |
|       {begin: '#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?'},
 | |
|       {begin: '#(c|C)\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE, end: '\\)'}
 | |
|     ]
 | |
|   };
 | |
|   var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});
 | |
|   var COMMENT = hljs.COMMENT(
 | |
|     ';', '$',
 | |
|     {
 | |
|       relevance: 0
 | |
|     }
 | |
|   );
 | |
|   var VARIABLE = {
 | |
|     begin: '\\*', end: '\\*'
 | |
|   };
 | |
|   var KEYWORD = {
 | |
|     className: 'symbol',
 | |
|     begin: '[:&]' + LISP_IDENT_RE
 | |
|   };
 | |
|   var IDENT = {
 | |
|     begin: LISP_IDENT_RE,
 | |
|     relevance: 0
 | |
|   };
 | |
|   var MEC = {
 | |
|     begin: MEC_RE
 | |
|   };
 | |
|   var QUOTED_LIST = {
 | |
|     begin: '\\(', end: '\\)',
 | |
|     contains: ['self', LITERAL, STRING, NUMBER, IDENT]
 | |
|   };
 | |
|   var QUOTED = {
 | |
|     contains: [NUMBER, STRING, VARIABLE, KEYWORD, QUOTED_LIST, IDENT],
 | |
|     variants: [
 | |
|       {
 | |
|         begin: '[\'`]\\(', end: '\\)'
 | |
|       },
 | |
|       {
 | |
|         begin: '\\(quote ', end: '\\)',
 | |
|         keywords: {name: 'quote'}
 | |
|       },
 | |
|       {
 | |
|         begin: '\'' + MEC_RE
 | |
|       }
 | |
|     ]
 | |
|   };
 | |
|   var QUOTED_ATOM = {
 | |
|     variants: [
 | |
|       {begin: '\'' + LISP_IDENT_RE},
 | |
|       {begin: '#\'' + LISP_IDENT_RE + '(::' + LISP_IDENT_RE + ')*'}
 | |
|     ]
 | |
|   };
 | |
|   var LIST = {
 | |
|     begin: '\\(\\s*', end: '\\)'
 | |
|   };
 | |
|   var BODY = {
 | |
|     endsWithParent: true,
 | |
|     relevance: 0
 | |
|   };
 | |
|   LIST.contains = [
 | |
|     {
 | |
|       className: 'name',
 | |
|       variants: [
 | |
|         {begin: LISP_IDENT_RE},
 | |
|         {begin: MEC_RE}
 | |
|       ]
 | |
|     },
 | |
|     BODY
 | |
|   ];
 | |
|   BODY.contains = [QUOTED, QUOTED_ATOM, LIST, LITERAL, NUMBER, STRING, COMMENT, VARIABLE, KEYWORD, MEC, IDENT];
 | |
| 
 | |
|   return {
 | |
|     name: 'Lisp',
 | |
|     illegal: /\S/,
 | |
|     contains: [
 | |
|       NUMBER,
 | |
|       hljs.SHEBANG(),
 | |
|       LITERAL,
 | |
|       STRING,
 | |
|       COMMENT,
 | |
|       QUOTED,
 | |
|       QUOTED_ATOM,
 | |
|       LIST,
 | |
|       IDENT
 | |
|     ]
 | |
|   };
 | |
| }
 |