inform7.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*
  2. Language: Inform 7
  3. Author: Bruno Dias <bruno.r.dias@gmail.com>
  4. Description: Language definition for Inform 7, a DSL for writing parser interactive fiction.
  5. Website: http://inform7.com
  6. */
  7. function inform7(hljs) {
  8. var START_BRACKET = '\\[';
  9. var END_BRACKET = '\\]';
  10. return {
  11. name: 'Inform 7',
  12. aliases: ['i7'],
  13. case_insensitive: true,
  14. keywords: {
  15. // Some keywords more or less unique to I7, for relevance.
  16. keyword:
  17. // kind:
  18. 'thing room person man woman animal container ' +
  19. 'supporter backdrop door ' +
  20. // characteristic:
  21. 'scenery open closed locked inside gender ' +
  22. // verb:
  23. 'is are say understand ' +
  24. // misc keyword:
  25. 'kind of rule'
  26. },
  27. contains: [
  28. {
  29. className: 'string',
  30. begin: '"', end: '"',
  31. relevance: 0,
  32. contains: [
  33. {
  34. className: 'subst',
  35. begin: START_BRACKET, end: END_BRACKET
  36. }
  37. ]
  38. },
  39. {
  40. className: 'section',
  41. begin: /^(Volume|Book|Part|Chapter|Section|Table)\b/,
  42. end: '$'
  43. },
  44. {
  45. // Rule definition
  46. // This is here for relevance.
  47. begin: /^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\b/,
  48. end: ':',
  49. contains: [
  50. {
  51. //Rule name
  52. begin: '\\(This', end: '\\)'
  53. }
  54. ]
  55. },
  56. {
  57. className: 'comment',
  58. begin: START_BRACKET, end: END_BRACKET,
  59. contains: ['self']
  60. }
  61. ]
  62. };
  63. }
  64. module.exports = inform7;