{"name":"Opal","scopeName":"source.opal","patterns":[{"name":"comment.line.double-dash.opal","match":"(--)([^\\s])?.*$","captures":{"1":{"name":"punctuation.definition.comment.opal"},"2":{"name":"invalid.illegal.comment.missing-whitespace.opal"}}},{"name":"comment.block.opal","begin":"(/\\*)","end":"(\\*/)","captures":{"1":{"name":"punctuation.definition.comment.block.opal"}}},{"name":"meta.signature-implementation.opal","match":"^\\s*(SIGNATURE|IMPLEMENTATION)\\s+([^A-Z])?(\\w+)\\s*$","captures":{"1":{"name":"keyword.meta.signature-implementation.opal"},"2":{"name":"invalid.illegal.signature-implementation.first-letter-not-uppercase.opal"},"3":{"name":"entity.name.section.module.opal"}}},{"name":"meta.signature-implementation.opal","begin":"^\\s*(SIGNATURE|IMPLEMENTATION)\\s+([^A-Z])?(\\w+)\\s*(\\[)","end":"(\\])","patterns":[{"name":"punctuation.separator.inheritance.opal","match":"\\,"},{"name":"entity.other.inherited-class.opal","match":"(?:[^\\,\\]]+)"}],"beginCaptures":{"1":{"name":"keyword.meta.signature-implementation.opal"},"2":{"name":"invalid.illegal.signature-implementation.first-letter-not-uppercase.opal"},"3":{"name":"entity.name.section.module.opal"},"4":{"name":"punctuation.definition.inheritance.begin.opal"}},"endCaptures":{"1":{"name":"punctuation.definition.inheritance.end.opal"}}},{"name":"keyword.control.import.opal","match":"(^\\s*IMPORT|\\b(ONLY|COMPLETELY))\\b"},{"name":"meta.function.opal","contentName":"meta.function.parameters.opal","begin":"^\\s*(FUN)\\s+([^\\\"():]+)\\s*(\\:)","end":"($)|(?=\\-\\-)|(?=/\\*)","patterns":[{"name":"punctuation.seperator.parameters.opal","match":"\\*\\*|\\-\u003e"},{"name":"storage.type.opal","match":"\\b(\\w+)\\b"}],"beginCaptures":{"1":{"name":"storage.type.function.opal"},"2":{"name":"entity.name.function.opal"},"3":{"name":"punctuation.definition.parameters.begin.opal"}}},{"name":"meta.function.opal","match":"^\\s*(DEF)\\s+([^\\s():]+)\\s+([^\\s():]+)\\s+([^\\s():]+)\\s*(==)","captures":{"1":{"name":"storage.type.function.opal"},"2":{"name":"variable.parameter.opal"},"3":{"name":"entity.name.function.opal"},"4":{"name":"variable.parameter.opal"},"5":{"name":"punctuation.section.function.begin.opal"}}},{"name":"meta.function.opal","begin":"^\\s*(DEF)\\s+([^\\s():]+)\\s*(?:(\\())?","end":"(?:(\\)))?\\s*(==)","patterns":[{"name":"punctuation.seperator.parameters.opal","match":"\\,"},{"name":"variable.parameter.opal","match":"\\w*"}],"beginCaptures":{"1":{"name":"storage.type.function.opal"},"2":{"name":"entity.name.function.opal"},"3":{"name":"punctuation.definition.parameters.begin.opal"}},"endCaptures":{"1":{"name":"punctuation.definition.parameters.end.opal"},"2":{"name":"punctuation.section.function.begin.opal"}}},{"name":"meta.type.sort.opal","begin":"^\\s*(SORT)","end":"$","patterns":[{"name":"entity.name.function.type.sort.opal","match":"\\b[^\\s():]+\\b"}],"beginCaptures":{"1":{"name":"storage.type.sort.opal"}}},{"name":"meta.type.data.opal","begin":"^\\s*(DATA|TYPE)\\s+([^\\s():]+)","end":"(==)","beginCaptures":{"1":{"name":"storage.type.data.opal"},"2":{"name":"entity.name.function.type.data.opal"}},"endCaptures":{"1":{"name":"punctuation.section.type.begin.opal"}}},{"name":"meta.type.constructors.opal","begin":"(\\w+)\\s*\\(\\s*(\\w+)\\s*(:)\\s*(\\w+)","end":"\\)","patterns":[{"name":"punctuation.seperator.parameters.opal","match":"\\,"},{"match":"\\[(\\w*)\\]","captures":{"1":{"name":"storage.type.opal"}}},{"match":"(\\w+)\\s*(:)\\s*(\\w+)","captures":{"1":{"name":"variable.parameter.opal"},"2":{"name":"punctuation.seperator.type.opal"},"3":{"name":"storage.type.opal"}}}],"beginCaptures":{"1":{"name":"entity.name.function.constructor.opal"},"2":{"name":"variable.parameter.opal"},"3":{"name":"punctuation.seperator.type.opal"},"4":{"name":"storage.type.opal"}}},{"include":"#evaluable"},{"name":"support.type.opal","match":"\\b(AcceleratorC|AcceleratorF|AEntry|AEntryNE|AnonPair|AnonQuadruple|AnonTriple|Array|ArrayConv|ArrayFilter|ArrayFold|ArrayMap|ArrayReduce|Arrays|Bag|BagConv|BagFilter|BagFold|BagMap|BagReduce|Bags|BasicIO|Basics|BinFile|BinStream|Bitset|BitsetConv|BitsetFilter|BitsetFold|BitsetMap|BitsetReduce|Bool|BoolConv|BSTree|BSTreeCompare|BSTreeConv|BSTreeFilter|BSTreeIndex|BSTreeMap|BSTreeMapEnv|BSTreeReduce|BSTreeZip|BTUnion|BTUnionConv|Char|CharConv|Com|ComAction|ComAgent|ComAgentConv|ComCheck|ComCheckWin|ComCheckWinData|ComChoice|ComCompose|ComConv|Commands|ComMap|ComPairCompose|Compose|ComposePair|ComposePar|ComposeQuadruple|ComposeTriple|ComSemaphor|ComSeqAction|ComSeqMap|ComSeqReduce|ComService|ComServiceConv|ComState|ComStateWith|ComTimeout|ComTripleCompose|Constant|ConstantPair|Control|Curry|DArray|DArrayConv|DArrayFilter|DArrayFold|DArrayMap|DArrayReduce|Denotation|Distributor|Dotfix|Dyn|DynConv|Env|File|FileConv|FileName|FileSystem|FileSystemConv|FileSystemFun|Flip|Fmt|FmtArray|FmtBasicTypes|FmtDebug|FmtMap|FmtOption|FmtPair|FmtSeq|FmtSet|Funct|FunctConv|Greek|Heap|HeapCompare|HeapConv|HeapFilter|HeapIndex|HeapMap|HeapMapEnv|HeapReduce|HeapZip|Identity|IndexingOfTrees|InducedRel|Int|IntConv|ISeq|ISeqConv|ISeqFilter|ISeqIndex|ISeqMap|ISeqMapEnv|ISeqSort|ISeqUnreduce|ISeqZip|Latin1|LineFormat|Map|MapByBST|MapByBSTCompose|MapByBSTConv|MapByBSTFilter|MapByBSTInvert|MapByBSTMap|MapByBSTReduce|MapByOS|MapByOSCompose|MapByOSConv|MapByOSFilter|MapByOSInvert|MapByOSMap|MapByOSReduce|MapCompose|MapConv|MapEntry|MapEntryNE|MapFilter|MapInvert|MapMap|MapNotForUserPurpose|MapReduce|Maps|MaxStrongComp|Nat|NatConv|NatMap|NatMapConv|NatMapFilter|NatMapMap|NatMapNotForUserPurpose|NatMapReduce|NatMaps|NatSets|Option|OptionCompare|OptionConv|OptionMap|OrderingByInjection|OrderingByLess|Pair|PairCompare|PairConv|PairMap|ParserL|ParserLBasic|ParserLCombinator|ParserLCompose|ParserLMap|Predicate|PrintableChar|Process|ProcessArgs|ProcessComInterrupt|ProcessConnect|ProcessConv|ProcessCtrl|ProcessCtrlConv|ProcessCtrlFun|ProcessInterrupt|ProcessMonitor|Quadruple|QuadrupleConv|QuadrupleMap|Random|ReadLine|Real|RealConv|Rel|RelCmp|RelCmpConv|RelCompose|RelConv|RelFilter|RelHomog|RelInvert|RelMap|RelNotForUserPurpose|RelReduce|Seq|SeqCompare|SeqConv|SeqEntry|SeqEntryNE|SeqFilter|SeqFold|SeqIndex|SeqMap|SeqMapEnv|SeqOfSeq|SeqReduce|Seqs|SeqSort|SeqZip|Set|SetByBST|SetByBSTConstr|SetByBSTConv|SetByBSTFilter|SetByBSTFold|SetByBSTMap|SetByBSTMapEnv|SetByBSTOfSetByBST|SetByBSTReduce|SetByPred|SetByPredConstr|SetByPredConv|SetByPredFilter|SetConstr|SetConv|SetEntry|SetEntryNE|SetFilter|SetFold|SetMap|SetMapEnv|SetOfSet|SetReduce|Sets|SetTopSort|Signal|SignalConv|SmallReal|Stream|String|StringConv|StringFilter|StringFold|StringFormat|StringIndex|StringMap|StringMapSeq|StringReduce|Strings|StringScan|Subrel|SubrelConv|Tcl|Time|TimeConv|Tk|Tree|TreeCompare|TreeConv|TreeFilter|TreeIndex|TreeMap|TreeMapEnv|TreeReduce|TreeZip|Triple|TripleConv|TripleMap|Union2|Union2Conv|Union3|Union3Conv|Union4|Union4Conv|UnixFailures|UserAndGroup|UserAndGroupConv|UserAndGroupFun|Void|VoidConv|Wait|WaitConv|WinAppl|WinButton|WinCanvas|WinCanvasEditor|WinConfig|Windows|WinEmitter|WinEvent|WinFontMetrics|WinImage|WinInternal|WinMenu|WinRegulator|WinScrollbar|WinScroller|WinSelector|WinTag|WinTclTk|WinText|WinTextEditor|WinView|WinWindow)\\b"}],"repository":{"evaluable":{"patterns":[{"name":"meta.function.anonymous.opal","contentName":"meta.definition.parameters.opal","begin":"(\\\\\\\\)","end":"(\\.)","patterns":[{"name":"punctuation.seperator.parameters.opal","match":"\\s*\\,\\s*"},{"name":"meta.definition.parameter.opal","match":"(\\w+)\\s*(:)\\s*(\\w+)","captures":{"1":{"name":"variable.parameter.opal"},"2":{"name":"punctuation.seperator.type.opal"},"3":{"name":"storage.type.opal"}}},{"name":"variable.parameter.opal","match":"\\w+"}],"beginCaptures":{"1":{"name":"storage.type.function.opal"}},"endCaptures":{"1":{"name":"punctuation.section.function.begin.opal"}}},{"name":"constant.numeric.integer.opal","match":"(\\b(0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|64|128|256|512|1024|100|1000|10000|100000|1000000)\\b)|\\\"\\d+\\\"!"},{"name":"invalid.illegal.wrong-number.opal","match":"\\b\\d+\\b"},{"name":"constant.numeric.real.opal","match":"\\\"[+-]?\\d*(\\.\\d*)?(e[+-]?\\d+)?\\\"!"},{"name":"constant.numeric.hexadecimal.opal","match":"\\\"0x[0-9A-Fa-f]+\\\"!"},{"name":"string.quoted.double.opal","begin":"(\\\")","end":"(\\n)|(\\\")","patterns":[{"name":"constant.character.escape.backslash.opal","match":"\\\\\\\\"},{"name":"constant.character.escape.double-quote.opal","match":"\\\\\""},{"name":"constant.character.escape.alarm.opal","match":"\\\\a"},{"name":"constant.character.escape.backspace.opal","match":"\\\\b"},{"name":"constant.character.escape.formfeed.opal","match":"\\\\f"},{"name":"constant.character.escape.newline.opal","match":"\\\\n"},{"name":"constant.character.escape.carriage-return.opal","match":"\\\\r"},{"name":"constant.character.escape.tabulator.opal","match":"\\\\t"},{"name":"constant.character.escape.vertical-tab.opal","match":"\\\\v"},{"name":"constant.character.escape.questionmark.opal","match":"\\\\\\?"},{"name":"invalid.illegal.unknown-escape.opal","match":"\\\\."}],"beginCaptures":{"1":{"name":"punctuation.definition.string.begin.opal"}},"endCaptures":{"1":{"name":"invalid.illegal.unclosed-string.opal"},"2":{"name":"punctuation.definition.string.end.opal"}}},{"name":"support.function.builtin.opal","match":"\\b(map|filter|zip|reduce|sqrt)\\b"},{"name":"support.function.builtin.opal","match":"\u003c\u003e\\?|\u003c\u003e(?!\\?)"},{"name":"keyword.control.opal","match":"\\b(IF|THEN|ELSE|OTHERWISE|FI)\\b"},{"name":"keyword.other.opal","match":"\\b(LET|IN|WHERE)\\b"},{"name":"keyword.operator.comparison.opal","match":"(\u003c=|\u003e=|\u003c|\u003e|\\|=|(?\u003c!=)=(?!=))"},{"name":"keyword.operator.arithmetic.opal","match":"(\\+|\\-|\\*|/|\\bdiv\\b|\\^|\\bpow\\b|%|\\bmod\\b)"},{"name":"keyword.operator.logical.opal","match":"(\\b(and|or|not|)\\b)|~"},{"name":"keyword.operator.sequence.opal","match":"(::)(?!\\?)"}]}}}