inform7.js 1.5 KB

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