You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
11 KiB

/*!
* monaco-ace-tokenizer
* Version - 0.1.1
* Author - Brijesh Bittu <brijesh@bitwiser.in> (http://bitwiser.in/)
*/
/*!
* For files in src/ace/
*
* Copyright (c) 2010, Ajax.org B.V.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of Ajax.org B.V. nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("monaco-ace-tokenizer")):"function"==typeof define&&define.amd?define(["tokenizer/monaco-tokenizer"],t):"object"==typeof exports?exports.haskellDefinition=t(require("monaco-ace-tokenizer")):(e.MonacoAceTokenizer=e.MonacoAceTokenizer||{},e.MonacoAceTokenizer.haskellDefinition=t(e.MonacoAceTokenizer))}(self,function(e){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var a=t[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(o,a,function(t){return e[t]}.bind(null,a));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(t,n){t.exports=e},,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n(0),a=o.oop,r=o.TextHighlightRules,l=function(){this.$rules={start:[{token:["punctuation.definition.entity.haskell","keyword.operator.function.infix.haskell","punctuation.definition.entity.haskell"],regex:/(`)([a-zA-Z_']*?)(`)/,comment:"In case this regex seems unusual for an infix operator, note that Haskell allows any ordinary function application (elem 4 [1..10]) to be rewritten as an infix expression (4 `elem` [1..10])."},{token:"constant.language.unit.haskell",regex:/\(\)/},{token:"constant.language.empty-list.haskell",regex:/\[\]/},{token:"keyword.other.haskell",regex:/module/,push:[{token:"keyword.other.haskell",regex:/where/,next:"pop"},{include:"#module_name"},{include:"#module_exports"},{token:"invalid",regex:/[a-z]+/},{defaultToken:"meta.declaration.module.haskell"}]},{token:"keyword.other.haskell",regex:/\bclass\b/,push:[{token:"keyword.other.haskell",regex:/\bwhere\b/,next:"pop"},{token:"support.class.prelude.haskell",regex:/\b(?:Monad|Functor|Eq|Ord|Read|Show|Num|(?:Frac|Ra)tional|Enum|Bounded|Real(?:Frac|Float)?|Integral|Floating)\b/},{token:"entity.other.inherited-class.haskell",regex:/[A-Z][A-Za-z_']*/},{token:"variable.other.generic-type.haskell",regex:/\b[a-z][a-zA-Z0-9_']*\b/},{defaultToken:"meta.declaration.class.haskell"}]},{token:"keyword.other.haskell",regex:/\binstance\b/,push:[{token:"keyword.other.haskell",regex:/\bwhere\b|$/,next:"pop"},{include:"#type_signature"},{defaultToken:"meta.declaration.instance.haskell"}]},{token:"keyword.other.haskell",regex:/import/,push:[{token:"meta.import.haskell",regex:/$|;/,next:"pop"},{token:"keyword.other.haskell",regex:/qualified|as|hiding/},{include:"#module_name"},{include:"#module_exports"},{defaultToken:"meta.import.haskell"}]},{token:["keyword.other.haskell","meta.deriving.haskell"],regex:/(deriving)(\s*\()/,push:[{token:"meta.deriving.haskell",regex:/\)/,next:"pop"},{token:"entity.other.inherited-class.haskell",regex:/\b[A-Z][a-zA-Z_']*/},{defaultToken:"meta.deriving.haskell"}]},{token:"keyword.other.haskell",regex:/\b(?:deriving|where|data|type|case|of|let|in|newtype|default)\b/},{token:"keyword.operator.haskell",regex:/\binfix[lr]?\b/},{token:"keyword.control.haskell",regex:/\b(?:do|if|then|else)\b/},{token:"constant.numeric.float.haskell",regex:/\b(?:[0-9]+\.[0-9]+(?:[eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\b/,comment:"Floats are always decimal"},{token:"constant.numeric.haskell",regex:/\b(?:[0-9]+|0(?:[xX][0-9a-fA-F]+|[oO][0-7]+))\b/},{token:["meta.preprocessor.c","punctuation.definition.preprocessor.c","meta.preprocessor.c"],regex:/^(\s*)(#)(\s*\w+)/,comment:'In addition to Haskell\'s "native" syntax, GHC permits the C prepro