step21.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. Language: STEP Part 21
  3. Contributors: Adam Joseph Cook <[email protected]>
  4. Description: Syntax highlighter for STEP Part 21 files (ISO 10303-21).
  5. */
  6. function(hljs) {
  7. var STEP21_IDENT_RE = '[A-Z_][A-Z0-9_.]*';
  8. var STEP21_KEYWORDS = {
  9. keyword: 'HEADER ENDSEC DATA'
  10. };
  11. var STEP21_START = {
  12. className: 'meta',
  13. begin: 'ISO-10303-21;',
  14. relevance: 10
  15. };
  16. var STEP21_CLOSE = {
  17. className: 'meta',
  18. begin: 'END-ISO-10303-21;',
  19. relevance: 10
  20. };
  21. return {
  22. aliases: ['p21', 'step', 'stp'],
  23. case_insensitive: true, // STEP 21 is case insensitive in theory, in practice all non-comments are capitalized.
  24. lexemes: STEP21_IDENT_RE,
  25. keywords: STEP21_KEYWORDS,
  26. contains: [
  27. STEP21_START,
  28. STEP21_CLOSE,
  29. hljs.C_LINE_COMMENT_MODE,
  30. hljs.C_BLOCK_COMMENT_MODE,
  31. hljs.COMMENT('/\\*\\*!', '\\*/'),
  32. hljs.C_NUMBER_MODE,
  33. hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),
  34. hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),
  35. {
  36. className: 'string',
  37. begin: "'", end: "'"
  38. },
  39. {
  40. className: 'symbol',
  41. variants: [
  42. {
  43. begin: '#', end: '\\d+',
  44. illegal: '\\W'
  45. }
  46. ]
  47. }
  48. ]
  49. };
  50. }