You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.6 KiB
70 lines
1.6 KiB
/* |
|
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;
|
|
|