ebnf.js 701 B

1234567891011121314151617181920212223242526272829303132
  1. module.exports = function(hljs) {
  2. var commentMode = hljs.COMMENT(/\(\*/, /\*\)/);
  3. var nonTerminalMode = {
  4. className: "attribute",
  5. begin: /^[ ]*[a-zA-Z][a-zA-Z-]*([\s-]+[a-zA-Z][a-zA-Z]*)*/
  6. };
  7. var specialSequenceMode = {
  8. className: "meta",
  9. begin: /\?.*\?/
  10. };
  11. var ruleBodyMode = {
  12. begin: /=/, end: /;/,
  13. contains: [
  14. commentMode,
  15. specialSequenceMode,
  16. // terminals
  17. hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE
  18. ]
  19. };
  20. return {
  21. illegal: /\S/,
  22. contains: [
  23. commentMode,
  24. nonTerminalMode,
  25. ruleBodyMode
  26. ]
  27. };
  28. };