ebnf.js 770 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. Language: Extended Backus-Naur Form
  3. Author: Alex McKibben <[email protected]>
  4. */
  5. function(hljs) {
  6. var commentMode = hljs.COMMENT(/\(\*/, /\*\)/);
  7. var nonTerminalMode = {
  8. className: "attribute",
  9. begin: /^[ ]*[a-zA-Z][a-zA-Z-]*([\s-]+[a-zA-Z][a-zA-Z]*)*/
  10. };
  11. var specialSequenceMode = {
  12. className: "meta",
  13. begin: /\?.*\?/
  14. };
  15. var ruleBodyMode = {
  16. begin: /=/, end: /;/,
  17. contains: [
  18. commentMode,
  19. specialSequenceMode,
  20. // terminals
  21. hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE
  22. ]
  23. };
  24. return {
  25. illegal: /\S/,
  26. contains: [
  27. commentMode,
  28. nonTerminalMode,
  29. ruleBodyMode
  30. ]
  31. };
  32. }