71 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| Language: Inform 7
 | |
| Author: Bruno Dias <bruno.r.dias@gmail.com>
 | |
| Description: Language definition for Inform 7, a DSL for writing parser interactive fiction.
 | |
| Website: http://inform7.com
 | |
| */
 | |
| 
 | |
| function inform7(hljs) {
 | |
|   const START_BRACKET = '\\[';
 | |
|   const END_BRACKET = '\\]';
 | |
|   return {
 | |
|     name: 'Inform 7',
 | |
|     aliases: ['i7'],
 | |
|     case_insensitive: true,
 | |
|     keywords: {
 | |
|       // Some keywords more or less unique to I7, for relevance.
 | |
|       keyword:
 | |
|         // kind:
 | |
|         'thing room person man woman animal container ' +
 | |
|         'supporter backdrop door ' +
 | |
|         // characteristic:
 | |
|         'scenery open closed locked inside gender ' +
 | |
|         // verb:
 | |
|         'is are say understand ' +
 | |
|         // misc keyword:
 | |
|         'kind of rule'
 | |
|     },
 | |
|     contains: [
 | |
|       {
 | |
|         className: 'string',
 | |
|         begin: '"',
 | |
|         end: '"',
 | |
|         relevance: 0,
 | |
|         contains: [
 | |
|           {
 | |
|             className: 'subst',
 | |
|             begin: START_BRACKET,
 | |
|             end: END_BRACKET
 | |
|           }
 | |
|         ]
 | |
|       },
 | |
|       {
 | |
|         className: 'section',
 | |
|         begin: /^(Volume|Book|Part|Chapter|Section|Table)\b/,
 | |
|         end: '$'
 | |
|       },
 | |
|       {
 | |
|         // Rule definition
 | |
|         // This is here for relevance.
 | |
|         begin: /^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\b/,
 | |
|         end: ':',
 | |
|         contains: [
 | |
|           {
 | |
|             // Rule name
 | |
|             begin: '\\(This',
 | |
|             end: '\\)'
 | |
|           }
 | |
|         ]
 | |
|       },
 | |
|       {
 | |
|         className: 'comment',
 | |
|         begin: START_BRACKET,
 | |
|         end: END_BRACKET,
 | |
|         contains: ['self']
 | |
|       }
 | |
|     ]
 | |
|   };
 | |
| }
 | |
| 
 | |
| module.exports = inform7;
 |