vhdl_highlight_rules.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /* ***** BEGIN LICENSE BLOCK *****
  2. * Distributed under the BSD license:
  3. *
  4. * Copyright (c) 2013, Ajax.org B.V.
  5. * All rights reserved.
  6. *
  7. * Redistribution and use in source and binary forms, with or without
  8. * modification, are permitted provided that the following conditions are met:
  9. * * Redistributions of source code must retain the above copyright
  10. * notice, this list of conditions and the following disclaimer.
  11. * * Redistributions in binary form must reproduce the above copyright
  12. * notice, this list of conditions and the following disclaimer in the
  13. * documentation and/or other materials provided with the distribution.
  14. * * Neither the name of Ajax.org B.V. nor the
  15. * names of its contributors may be used to endorse or promote products
  16. * derived from this software without specific prior written permission.
  17. *
  18. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  19. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  20. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  21. * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
  22. * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  23. * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  24. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  25. * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  26. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  27. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  28. *
  29. * ***** END LICENSE BLOCK ***** */
  30. define(function(require, exports, module) {
  31. "use strict";
  32. var oop = require("../lib/oop");
  33. var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
  34. var VHDLHighlightRules = function() {
  35. var keywords = "access|after|ailas|all|architecture|assert|attribute|"+
  36. "begin|block|buffer|bus|case|component|configuration|"+
  37. "disconnect|downto|else|elsif|end|entity|file|for|function|"+
  38. "generate|generic|guarded|if|impure|in|inertial|inout|is|"+
  39. "label|linkage|literal|loop|mapnew|next|of|on|open|"+
  40. "others|out|port|process|pure|range|record|reject|"+
  41. "report|return|select|shared|subtype|then|to|transport|"+
  42. "type|unaffected|united|until|wait|when|while|with";
  43. var storageType = "bit|bit_vector|boolean|character|integer|line|natural|"+
  44. "positive|real|register|severity|signal|signed|"+
  45. "std_logic|std_logic_vector|string||text|time|unsigned|"+
  46. "variable";
  47. var storageModifiers = "array|constant";
  48. var keywordOperators = "abs|and|mod|nand|nor|not|rem|rol|ror|sla|sll|sra"+
  49. "srl|xnor|xor";
  50. var builtinConstants = (
  51. "true|false|null"
  52. );
  53. var keywordMapper = this.createKeywordMapper({
  54. "keyword.operator": keywordOperators,
  55. "keyword": keywords,
  56. "constant.language": builtinConstants,
  57. "storage.modifier": storageModifiers,
  58. "storage.type": storageType
  59. }, "identifier", true);
  60. this.$rules = {
  61. "start" : [ {
  62. token : "comment",
  63. regex : "--.*$"
  64. }, {
  65. token : "string", // " string
  66. regex : '".*?"'
  67. }, {
  68. token : "string", // ' string
  69. regex : "'.*?'"
  70. }, {
  71. token : "constant.numeric", // float
  72. regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
  73. }, {
  74. token : "keyword", // pre-compiler directives
  75. regex : "\\s*(?:library|package|use)\\b",
  76. }, {
  77. token : keywordMapper,
  78. regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
  79. }, {
  80. token : "keyword.operator",
  81. regex : "&|\\*|\\+|\\-|\\/|<|=|>|\\||=>|\\*\\*|:=|\\/=|>=|<=|<>"
  82. }, {
  83. token : "punctuation.operator",
  84. regex : "\\'|\\:|\\,|\\;|\\."
  85. },{
  86. token : "paren.lparen",
  87. regex : "[[(]"
  88. }, {
  89. token : "paren.rparen",
  90. regex : "[\\])]"
  91. }, {
  92. token : "text",
  93. regex : "\\s+"
  94. } ],
  95. };
  96. };
  97. oop.inherits(VHDLHighlightRules, TextHighlightRules);
  98. exports.VHDLHighlightRules = VHDLHighlightRules;
  99. });