diff --git a/lexers/j/julia.go b/lexers/j/julia.go index 6c9fc28..6ea954e 100644 --- a/lexers/j/julia.go +++ b/lexers/j/julia.go @@ -23,36 +23,44 @@ func juliaRules() Rules { {`[^\S\n]+`, Text, nil}, {`#=`, CommentMultiline, Push("blockcomment")}, {`#.*$`, Comment, nil}, - {`[\[\]{}(),;]`, Punctuation, nil}, - {`in\b`, KeywordPseudo, nil}, - {`isa\b`, KeywordPseudo, nil}, - {`(true|false)\b`, KeywordConstant, nil}, - {`(local|global|const)\b`, KeywordDeclaration, nil}, - {Words(``, `\b`, `function`, `abstract type`, `primitive type`, `baremodule`, `begin`, `bitstype`, `break`, `catch`, `ccall`, `continue`, `do`, `else`, `elseif`, `end`, `export`, `finally`, `for`, `if`, `import`, `let`, `macro`, `module`, `mutable`, `quote`, `return`, `struct`, `try`, `using`, `while`), Keyword, nil}, - {Words(``, `\b`, `ASCIIString`, `AbstractArray`, `AbstractChannel`, `AbstractDict`, `AbstractFloat`, `AbstractMatrix`, `AbstractRNG`, `AbstractSparseArray`, `AbstractSparseMatrix`, `AbstractSparseVector`, `AbstractString`, `AbstractVecOrMat`, `AbstractVector`, `Any`, `ArgumentError`, `Array`, `AssertionError`, `Base64DecodePipe`, `Base64EncodePipe`, `Bidiagonal`, `BigFloat`, `BigInt`, `BitArray`, `BitMatrix`, `BitVector`, `Bool`, `BoundsError`, `Box`, `BufferStream`, `CapturedException`, `CartesianIndex`, `CartesianRange`, `Cchar`, `Cdouble`, `Cfloat`, `Channel`, `Char`, `Cint`, `Cintmax_t`, `Clong`, `Clonglong`, `ClusterManager`, `Cmd`, `Coff_t`, `Colon`, `Complex`, `Complex128`, `Complex32`, `Complex64`, `CompositeException`, `Condition`, `Cptrdiff_t`, `Cshort`, `Csize_t`, `Cssize_t`, `Cstring`, `Cuchar`, `Cuint`, `Cuintmax_t`, `Culong`, `Culonglong`, `Cushort`, `Cwchar_t`, `Cwstring`, `DataType`, `Date`, `DateTime`, `DenseArray`, `DenseMatrix`, `DenseVecOrMat`, `DenseVector`, `Diagonal`, `Dict`, `DimensionMismatch`, `Dims`, `DirectIndexString`, `Display`, `DivideError`, `DomainError`, `EOFError`, `EachLine`, `Enum`, `Enumerate`, `ErrorException`, `Exception`, `Expr`, `Factorization`, `FileMonitor`, `FileOffset`, `Filter`, `Float16`, `Float32`, `Float64`, `FloatRange`, `Function`, `GenSym`, `GlobalRef`, `GotoNode`, `HTML`, `Hermitian`, `IO`, `IOBuffer`, `IOStream`, `IPv4`, `IPv6`, `InexactError`, `InitError`, `Int`, `Int128`, `Int16`, `Int32`, `Int64`, `Int8`, `IntSet`, `Integer`, `InterruptException`, `IntrinsicFunction`, `InvalidStateException`, `Irrational`, `KeyError`, `LabelNode`, `LambdaStaticData`, `LinSpace`, `LineNumberNode`, `LoadError`, `LocalProcess`, `LowerTriangular`, `MIME`, `Matrix`, `MersenneTwister`, `Method`, `MethodError`, `MethodTable`, `Module`, `NTuple`, `NewvarNode`, `NullException`, `Nullable`, `Number`, `ObjectIdDict`, `OrdinalRange`, `OutOfMemoryError`, `OverflowError`, `Pair`, `ParseError`, `PartialQuickSort`, `Pipe`, `PollingFileWatcher`, `ProcessExitedException`, `ProcessGroup`, `Ptr`, `QuoteNode`, `RandomDevice`, `Range`, `Rational`, `RawFD`, `ReadOnlyMemoryError`, `Real`, `ReentrantLock`, `Ref`, `Regex`, `RegexMatch`, `RemoteException`, `RemoteRef`, `RepString`, `RevString`, `RopeString`, `RoundingMode`, `SegmentationFault`, `SerializationState`, `Set`, `SharedArray`, `SharedMatrix`, `SharedVector`, `Signed`, `SimpleVector`, `SparseMatrixCSC`, `StackOverflowError`, `StatStruct`, `StepRange`, `StridedArray`, `StridedMatrix`, `StridedVecOrMat`, `StridedVector`, `SubArray`, `SubString`, `SymTridiagonal`, `Symbol`, `SymbolNode`, `Symmetric`, `SystemError`, `TCPSocket`, `Task`, `Text`, `TextDisplay`, `Timer`, `TopNode`, `Tridiagonal`, `Tuple`, `Type`, `TypeConstructor`, `TypeError`, `TypeName`, `TypeVar`, `UDPSocket`, `UInt`, `UInt128`, `UInt16`, `UInt32`, `UInt64`, `UInt8`, `UTF16String`, `UTF32String`, `UTF8String`, `UndefRefError`, `UndefVarError`, `UnicodeError`, `UniformScaling`, `Union`, `UnitRange`, `Unsigned`, `UpperTriangular`, `Val`, `Vararg`, `VecOrMat`, `Vector`, `VersionNumber`, `Void`, `WString`, `WeakKeyDict`, `WeakRef`, `WorkerConfig`, `Zip`), KeywordType, nil}, - {Words(``, `\b`, `ARGS`, `CPU_CORES`, `C_NULL`, `DevNull`, `ENDIAN_BOM`, `ENV`, `I`, `Inf`, `Inf16`, `Inf32`, `Inf64`, `InsertionSort`, `JULIA_HOME`, `LOAD_PATH`, `MergeSort`, `NaN`, `NaN16`, `NaN32`, `NaN64`, `OS_NAME`, `QuickSort`, `RoundDown`, `RoundFromZero`, `RoundNearest`, `RoundNearestTiesAway`, `RoundNearestTiesUp`, `RoundToZero`, `RoundUp`, `STDERR`, `STDIN`, `STDOUT`, `VERSION`, `WORD_SIZE`, `catalan`, `e`, `eu`, `eulergamma`, `golden`, `im`, `nothing`, `pi`, `γ`, `π`, `φ`), NameBuiltin, nil}, - {Words(``, ``, `=`, `:=`, `+=`, `-=`, `*=`, `/=`, `//=`, `.//=`, `.*=`, `./=`, `\=`, `.\=`, `^=`, `.^=`, `÷=`, `.÷=`, `%=`, `.%=`, `|=`, `&=`, `$=`, `=>`, `<<=`, `>>=`, `>>>=`, `~`, `.+=`, `.-=`, `?`, `--`, `-->`, `||`, `&&`, `>`, `<`, `>=`, `≥`, `<=`, `≤`, `==`, `===`, `≡`, `!=`, `≠`, `!==`, `≢`, `.>`, `.<`, `.>=`, `.≥`, `.<=`, `.≤`, `.==`, `.!=`, `.≠`, `.=`, `.!`, `<:`, `>:`, `∈`, `∉`, `∋`, `∌`, `⊆`, `⊈`, `⊂`, `⊄`, `⊊`, `|>`, `<|`, `:`, `+`, `-`, `.+`, `.-`, `|`, `∪`, `$`, `<<`, `>>`, `>>>`, `.<<`, `.>>`, `.>>>`, `*`, `/`, `./`, `÷`, `.÷`, `%`, `⋅`, `.%`, `.*`, `\`, `.\`, `&`, `∩`, `//`, `.//`, `^`, `.^`, `::`, `.`, `+`, `-`, `!`, `√`, `∛`, `∜`), Operator, nil}, + {`[\[\](),;]`, Punctuation, nil}, + {`((?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*))(\s*)(:)((?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*))`, ByGroups(Name, Text, Operator, Name), nil}, + {`(?\d.])(:(?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*))`, LiteralStringSymbol, nil}, + {`(?<=::)(\s*)((?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*))\b(?![(\[])`, ByGroups(Text, KeywordType), nil}, + {`((?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*))(\s*)([<>]:)(\s*)((?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*))\b(?![(\[])`, ByGroups(KeywordType, Text, Operator, Text, KeywordType), nil}, + {`([<>]:)(\s*)((?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*))\b(?![(\[])`, ByGroups(Operator, Text, KeywordType), nil}, + {`\b((?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*))(\s*)([<>]:)`, ByGroups(KeywordType, Text, Operator), nil}, + {Words(``, `[²³¹ʰʲʳʷʸˡˢˣᴬᴮᴰᴱᴳᴴᴵᴶᴷᴸᴹᴺᴼᴾᴿᵀᵁᵂᵃᵇᵈᵉᵍᵏᵐᵒᵖᵗᵘᵛᵝᵞᵟᵠᵡᵢᵣᵤᵥᵦᵧᵨᵩᵪᶜᶠᶥᶦᶫᶰᶸᶻᶿ′″‴‵‶‷⁗⁰ⁱ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ₐₑₒₓₕₖₗₘₙₚₛₜⱼⱽ]*`, `->`, `:=`, `$=`, `?`, `||`, `&&`, `:`, `$`, `::`, `=`, `+=`, `-=`, `*=`, `/=`, `//=`, `\=`, `^=`, `÷=`, `%=`, `<<=`, `>>=`, `>>>=`, `|=`, `&=`, `⊻=`, `≔`, `⩴`, `≕'`, `~`, `=>`, `→`, `↔`, `↚`, `↛`, `↞`, `↠`, `↢`, `↣`, `↦`, `↤`, `↮`, `⇎`, `⇍`, `⇏`, `⇐`, `⇒`, `⇔`, `⇴`, `⇶`, `⇷`, `⇸`, `⇹`, `⇺`, `⇻`, `⇼`, `⇽`, `⇾`, `⇿`, `⟵`, `⟶`, `⟷`, `⟹`, `⟺`, `⟻`, `⟼`, `⟽`, `⟾`, `⟿`, `⤀`, `⤁`, `⤂`, `⤃`, `⤄`, `⤅`, `⤆`, `⤇`, `⤌`, `⤍`, `⤎`, `⤏`, `⤐`, `⤑`, `⤔`, `⤕`, `⤖`, `⤗`, `⤘`, `⤝`, `⤞`, `⤟`, `⤠`, `⥄`, `⥅`, `⥆`, `⥇`, `⥈`, `⥊`, `⥋`, `⥎`, `⥐`, `⥒`, `⥓`, `⥖`, `⥗`, `⥚`, `⥛`, `⥞`, `⥟`, `⥢`, `⥤`, `⥦`, `⥧`, `⥨`, `⥩`, `⥪`, `⥫`, `⥬`, `⥭`, `⥰`, `⧴`, `⬱`, `⬰`, `⬲`, `⬳`, `⬴`, `⬵`, `⬶`, `⬷`, `⬸`, `⬹`, `⬺`, `⬻`, `⬼`, `⬽`, `⬾`, `⬿`, `⭀`, `⭁`, `⭂`, `⭃`, `⭄`, `⭇`, `⭈`, `⭉`, `⭊`, `⭋`, `⭌`, `←`, `→`, `⇜`, `⇝`, `↜`, `↝`, `↩`, `↪`, `↫`, `↬`, `↼`, `↽`, `⇀`, `⇁`, `⇄`, `⇆`, `⇇`, `⇉`, `⇋`, `⇌`, `⇚`, `⇛`, `⇠`, `⇢`, `↷`, `↶`, `↺`, `↻`, `-->`, `<--`, `<-->`, `>`, `<`, `>=`, `≥`, `<=`, `≤`, `==`, `===`, `≡`, `!=`, `≠`, `!==`, `≢`, `∈`, `∉`, `∋`, `∌`, `⊆`, `⊈`, `⊂`, `⊄`, `⊊`, `∝`, `∊`, `∍`, `∥`, `∦`, `∷`, `∺`, `∻`, `∽`, `∾`, `≁`, `≃`, `≂`, `≄`, `≅`, `≆`, `≇`, `≈`, `≉`, `≊`, `≋`, `≌`, `≍`, `≎`, `≐`, `≑`, `≒`, `≓`, `≖`, `≗`, `≘`, `≙`, `≚`, `≛`, `≜`, `≝`, `≞`, `≟`, `≣`, `≦`, `≧`, `≨`, `≩`, `≪`, `≫`, `≬`, `≭`, `≮`, `≯`, `≰`, `≱`, `≲`, `≳`, `≴`, `≵`, `≶`, `≷`, `≸`, `≹`, `≺`, `≻`, `≼`, `≽`, `≾`, `≿`, `⊀`, `⊁`, `⊃`, `⊅`, `⊇`, `⊉`, `⊋`, `⊏`, `⊐`, `⊑`, `⊒`, `⊜`, `⊩`, `⊬`, `⊮`, `⊰`, `⊱`, `⊲`, `⊳`, `⊴`, `⊵`, `⊶`, `⊷`, `⋍`, `⋐`, `⋑`, `⋕`, `⋖`, `⋗`, `⋘`, `⋙`, `⋚`, `⋛`, `⋜`, `⋝`, `⋞`, `⋟`, `⋠`, `⋡`, `⋢`, `⋣`, `⋤`, `⋥`, `⋦`, `⋧`, `⋨`, `⋩`, `⋪`, `⋫`, `⋬`, `⋭`, `⋲`, `⋳`, `⋴`, `⋵`, `⋶`, `⋷`, `⋸`, `⋹`, `⋺`, `⋻`, `⋼`, `⋽`, `⋾`, `⋿`, `⟈`, `⟉`, `⟒`, `⦷`, `⧀`, `⧁`, `⧡`, `⧣`, `⧤`, `⧥`, `⩦`, `⩧`, `⩪`, `⩫`, `⩬`, `⩭`, `⩮`, `⩯`, `⩰`, `⩱`, `⩲`, `⩳`, `⩵`, `⩶`, `⩷`, `⩸`, `⩹`, `⩺`, `⩻`, `⩼`, `⩽`, `⩾`, `⩿`, `⪀`, `⪁`, `⪂`, `⪃`, `⪄`, `⪅`, `⪆`, `⪇`, `⪈`, `⪉`, `⪊`, `⪋`, `⪌`, `⪍`, `⪎`, `⪏`, `⪐`, `⪑`, `⪒`, `⪓`, `⪔`, `⪕`, `⪖`, `⪗`, `⪘`, `⪙`, `⪚`, `⪛`, `⪜`, `⪝`, `⪞`, `⪟`, `⪠`, `⪡`, `⪢`, `⪣`, `⪤`, `⪥`, `⪦`, `⪧`, `⪨`, `⪩`, `⪪`, `⪫`, `⪬`, `⪭`, `⪮`, `⪯`, `⪰`, `⪱`, `⪲`, `⪳`, `⪴`, `⪵`, `⪶`, `⪷`, `⪸`, `⪹`, `⪺`, `⪻`, `⪼`, `⪽`, `⪾`, `⪿`, `⫀`, `⫁`, `⫂`, `⫃`, `⫄`, `⫅`, `⫆`, `⫇`, `⫈`, `⫉`, `⫊`, `⫋`, `⫌`, `⫍`, `⫎`, `⫏`, `⫐`, `⫑`, `⫒`, `⫓`, `⫔`, `⫕`, `⫖`, `⫗`, `⫘`, `⫙`, `⫷`, `⫸`, `⫹`, `⫺`, `⊢`, `⊣`, `⟂`, `<:`, `>:`, `<|`, `|>`, `…`, `⁝`, `⋮`, `⋱`, `⋰`, `⋯`, `+`, `-`, `¦`, `|`, `⊕`, `⊖`, `⊞`, `⊟`, `++`, `∪`, `∨`, `⊔`, `±`, `∓`, `∔`, `∸`, `≏`, `⊎`, `⊻`, `⊽`, `⋎`, `⋓`, `⧺`, `⧻`, `⨈`, `⨢`, `⨣`, `⨤`, `⨥`, `⨦`, `⨧`, `⨨`, `⨩`, `⨪`, `⨫`, `⨬`, `⨭`, `⨮`, `⨹`, `⨺`, `⩁`, `⩂`, `⩅`, `⩊`, `⩌`, `⩏`, `⩐`, `⩒`, `⩔`, `⩖`, `⩗`, `⩛`, `⩝`, `⩡`, `⩢`, `⩣`, `*`, `/`, `⌿`, `÷`, `%`, `&`, `⋅`, `∘`, `×`, `\`, `∩`, `∧`, `⊗`, `⊘`, `⊙`, `⊚`, `⊛`, `⊠`, `⊡`, `⊓`, `∗`, `∙`, `∤`, `⅋`, `≀`, `⊼`, `⋄`, `⋆`, `⋇`, `⋉`, `⋊`, `⋋`, `⋌`, `⋏`, `⋒`, `⟑`, `⦸`, `⦼`, `⦾`, `⦿`, `⧶`, `⧷`, `⨇`, `⨰`, `⨱`, `⨲`, `⨳`, `⨴`, `⨵`, `⨶`, `⨷`, `⨸`, `⨻`, `⨼`, `⨽`, `⩀`, `⩃`, `⩄`, `⩋`, `⩍`, `⩎`, `⩑`, `⩓`, `⩕`, `⩘`, `⩚`, `⩜`, `⩞`, `⩟`, `⩠`, `⫛`, `⊍`, `▷`, `⨝`, `⟕`, `⟖`, `⟗`, `⨟`, `//`, `>>`, `<<`, `>>>`, `^`, `↑`, `↓`, `⇵`, `⟰`, `⟱`, `⤈`, `⤉`, `⤊`, `⤋`, `⤒`, `⤓`, `⥉`, `⥌`, `⥍`, `⥏`, `⥑`, `⥔`, `⥕`, `⥘`, `⥙`, `⥜`, `⥝`, `⥠`, `⥡`, `⥣`, `⥥`, `⥮`, `⥯`, `↑`, `↓`, `!`, `¬`, `√`, `∛`, `∜`), Operator, nil}, + {Words(``, `[²³¹ʰʲʳʷʸˡˢˣᴬᴮᴰᴱᴳᴴᴵᴶᴷᴸᴹᴺᴼᴾᴿᵀᵁᵂᵃᵇᵈᵉᵍᵏᵐᵒᵖᵗᵘᵛᵝᵞᵟᵠᵡᵢᵣᵤᵥᵦᵧᵨᵩᵪᶜᶠᶥᶦᶫᶰᶸᶻᶿ′″‴‵‶‷⁗⁰ⁱ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ₐₑₒₓₕₖₗₘₙₚₛₜⱼⱽ]*`, `.=`, `.+=`, `.-=`, `.*=`, `./=`, `.//=`, `.\=`, `.^=`, `.÷=`, `.%=`, `.<<=`, `.>>=`, `.>>>=`, `.|=`, `.&=`, `.⊻=`, `.≔`, `.⩴`, `.≕'`, `.~`, `.=>`, `.→`, `.↔`, `.↚`, `.↛`, `.↞`, `.↠`, `.↢`, `.↣`, `.↦`, `.↤`, `.↮`, `.⇎`, `.⇍`, `.⇏`, `.⇐`, `.⇒`, `.⇔`, `.⇴`, `.⇶`, `.⇷`, `.⇸`, `.⇹`, `.⇺`, `.⇻`, `.⇼`, `.⇽`, `.⇾`, `.⇿`, `.⟵`, `.⟶`, `.⟷`, `.⟹`, `.⟺`, `.⟻`, `.⟼`, `.⟽`, `.⟾`, `.⟿`, `.⤀`, `.⤁`, `.⤂`, `.⤃`, `.⤄`, `.⤅`, `.⤆`, `.⤇`, `.⤌`, `.⤍`, `.⤎`, `.⤏`, `.⤐`, `.⤑`, `.⤔`, `.⤕`, `.⤖`, `.⤗`, `.⤘`, `.⤝`, `.⤞`, `.⤟`, `.⤠`, `.⥄`, `.⥅`, `.⥆`, `.⥇`, `.⥈`, `.⥊`, `.⥋`, `.⥎`, `.⥐`, `.⥒`, `.⥓`, `.⥖`, `.⥗`, `.⥚`, `.⥛`, `.⥞`, `.⥟`, `.⥢`, `.⥤`, `.⥦`, `.⥧`, `.⥨`, `.⥩`, `.⥪`, `.⥫`, `.⥬`, `.⥭`, `.⥰`, `.⧴`, `.⬱`, `.⬰`, `.⬲`, `.⬳`, `.⬴`, `.⬵`, `.⬶`, `.⬷`, `.⬸`, `.⬹`, `.⬺`, `.⬻`, `.⬼`, `.⬽`, `.⬾`, `.⬿`, `.⭀`, `.⭁`, `.⭂`, `.⭃`, `.⭄`, `.⭇`, `.⭈`, `.⭉`, `.⭊`, `.⭋`, `.⭌`, `.←`, `.→`, `.⇜`, `.⇝`, `.↜`, `.↝`, `.↩`, `.↪`, `.↫`, `.↬`, `.↼`, `.↽`, `.⇀`, `.⇁`, `.⇄`, `.⇆`, `.⇇`, `.⇉`, `.⇋`, `.⇌`, `.⇚`, `.⇛`, `.⇠`, `.⇢`, `.↷`, `.↶`, `.↺`, `.↻`, `.-->`, `.<--`, `.<-->`, `.>`, `.<`, `.>=`, `.≥`, `.<=`, `.≤`, `.==`, `.===`, `.≡`, `.!=`, `.≠`, `.!==`, `.≢`, `.∈`, `.∉`, `.∋`, `.∌`, `.⊆`, `.⊈`, `.⊂`, `.⊄`, `.⊊`, `.∝`, `.∊`, `.∍`, `.∥`, `.∦`, `.∷`, `.∺`, `.∻`, `.∽`, `.∾`, `.≁`, `.≃`, `.≂`, `.≄`, `.≅`, `.≆`, `.≇`, `.≈`, `.≉`, `.≊`, `.≋`, `.≌`, `.≍`, `.≎`, `.≐`, `.≑`, `.≒`, `.≓`, `.≖`, `.≗`, `.≘`, `.≙`, `.≚`, `.≛`, `.≜`, `.≝`, `.≞`, `.≟`, `.≣`, `.≦`, `.≧`, `.≨`, `.≩`, `.≪`, `.≫`, `.≬`, `.≭`, `.≮`, `.≯`, `.≰`, `.≱`, `.≲`, `.≳`, `.≴`, `.≵`, `.≶`, `.≷`, `.≸`, `.≹`, `.≺`, `.≻`, `.≼`, `.≽`, `.≾`, `.≿`, `.⊀`, `.⊁`, `.⊃`, `.⊅`, `.⊇`, `.⊉`, `.⊋`, `.⊏`, `.⊐`, `.⊑`, `.⊒`, `.⊜`, `.⊩`, `.⊬`, `.⊮`, `.⊰`, `.⊱`, `.⊲`, `.⊳`, `.⊴`, `.⊵`, `.⊶`, `.⊷`, `.⋍`, `.⋐`, `.⋑`, `.⋕`, `.⋖`, `.⋗`, `.⋘`, `.⋙`, `.⋚`, `.⋛`, `.⋜`, `.⋝`, `.⋞`, `.⋟`, `.⋠`, `.⋡`, `.⋢`, `.⋣`, `.⋤`, `.⋥`, `.⋦`, `.⋧`, `.⋨`, `.⋩`, `.⋪`, `.⋫`, `.⋬`, `.⋭`, `.⋲`, `.⋳`, `.⋴`, `.⋵`, `.⋶`, `.⋷`, `.⋸`, `.⋹`, `.⋺`, `.⋻`, `.⋼`, `.⋽`, `.⋾`, `.⋿`, `.⟈`, `.⟉`, `.⟒`, `.⦷`, `.⧀`, `.⧁`, `.⧡`, `.⧣`, `.⧤`, `.⧥`, `.⩦`, `.⩧`, `.⩪`, `.⩫`, `.⩬`, `.⩭`, `.⩮`, `.⩯`, `.⩰`, `.⩱`, `.⩲`, `.⩳`, `.⩵`, `.⩶`, `.⩷`, `.⩸`, `.⩹`, `.⩺`, `.⩻`, `.⩼`, `.⩽`, `.⩾`, `.⩿`, `.⪀`, `.⪁`, `.⪂`, `.⪃`, `.⪄`, `.⪅`, `.⪆`, `.⪇`, `.⪈`, `.⪉`, `.⪊`, `.⪋`, `.⪌`, `.⪍`, `.⪎`, `.⪏`, `.⪐`, `.⪑`, `.⪒`, `.⪓`, `.⪔`, `.⪕`, `.⪖`, `.⪗`, `.⪘`, `.⪙`, `.⪚`, `.⪛`, `.⪜`, `.⪝`, `.⪞`, `.⪟`, `.⪠`, `.⪡`, `.⪢`, `.⪣`, `.⪤`, `.⪥`, `.⪦`, `.⪧`, `.⪨`, `.⪩`, `.⪪`, `.⪫`, `.⪬`, `.⪭`, `.⪮`, `.⪯`, `.⪰`, `.⪱`, `.⪲`, `.⪳`, `.⪴`, `.⪵`, `.⪶`, `.⪷`, `.⪸`, `.⪹`, `.⪺`, `.⪻`, `.⪼`, `.⪽`, `.⪾`, `.⪿`, `.⫀`, `.⫁`, `.⫂`, `.⫃`, `.⫄`, `.⫅`, `.⫆`, `.⫇`, `.⫈`, `.⫉`, `.⫊`, `.⫋`, `.⫌`, `.⫍`, `.⫎`, `.⫏`, `.⫐`, `.⫑`, `.⫒`, `.⫓`, `.⫔`, `.⫕`, `.⫖`, `.⫗`, `.⫘`, `.⫙`, `.⫷`, `.⫸`, `.⫹`, `.⫺`, `.⊢`, `.⊣`, `.⟂`, `.<:`, `.>:`, `.<|`, `.|>`, `.…`, `.⁝`, `.⋮`, `.⋱`, `.⋰`, `.⋯`, `.+`, `.-`, `.¦`, `.|`, `.⊕`, `.⊖`, `.⊞`, `.⊟`, `.++`, `.∪`, `.∨`, `.⊔`, `.±`, `.∓`, `.∔`, `.∸`, `.≏`, `.⊎`, `.⊻`, `.⊽`, `.⋎`, `.⋓`, `.⧺`, `.⧻`, `.⨈`, `.⨢`, `.⨣`, `.⨤`, `.⨥`, `.⨦`, `.⨧`, `.⨨`, `.⨩`, `.⨪`, `.⨫`, `.⨬`, `.⨭`, `.⨮`, `.⨹`, `.⨺`, `.⩁`, `.⩂`, `.⩅`, `.⩊`, `.⩌`, `.⩏`, `.⩐`, `.⩒`, `.⩔`, `.⩖`, `.⩗`, `.⩛`, `.⩝`, `.⩡`, `.⩢`, `.⩣`, `.*`, `./`, `.⌿`, `.÷`, `.%`, `.&`, `.⋅`, `.∘`, `.×`, `.\`, `.∩`, `.∧`, `.⊗`, `.⊘`, `.⊙`, `.⊚`, `.⊛`, `.⊠`, `.⊡`, `.⊓`, `.∗`, `.∙`, `.∤`, `.⅋`, `.≀`, `.⊼`, `.⋄`, `.⋆`, `.⋇`, `.⋉`, `.⋊`, `.⋋`, `.⋌`, `.⋏`, `.⋒`, `.⟑`, `.⦸`, `.⦼`, `.⦾`, `.⦿`, `.⧶`, `.⧷`, `.⨇`, `.⨰`, `.⨱`, `.⨲`, `.⨳`, `.⨴`, `.⨵`, `.⨶`, `.⨷`, `.⨸`, `.⨻`, `.⨼`, `.⨽`, `.⩀`, `.⩃`, `.⩄`, `.⩋`, `.⩍`, `.⩎`, `.⩑`, `.⩓`, `.⩕`, `.⩘`, `.⩚`, `.⩜`, `.⩞`, `.⩟`, `.⩠`, `.⫛`, `.⊍`, `.▷`, `.⨝`, `.⟕`, `.⟖`, `.⟗`, `.⨟`, `.//`, `.>>`, `.<<`, `.>>>`, `.^`, `.↑`, `.↓`, `.⇵`, `.⟰`, `.⟱`, `.⤈`, `.⤉`, `.⤊`, `.⤋`, `.⤒`, `.⤓`, `.⥉`, `.⥌`, `.⥍`, `.⥏`, `.⥑`, `.⥔`, `.⥕`, `.⥘`, `.⥙`, `.⥜`, `.⥝`, `.⥠`, `.⥡`, `.⥣`, `.⥥`, `.⥮`, `.⥯`, `.↑`, `.↓`, `.!`, `.¬`, `.√`, `.∛`, `.∜`), Operator, nil}, + {Words(``, ``, `...`, `..`), Operator, nil}, {`'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,3}|\\u[a-fA-F0-9]{1,4}|\\U[a-fA-F0-9]{1,6}|[^\\\'\n])'`, LiteralStringChar, nil}, - {`(?<=[.\w)\]])\'+`, Operator, nil}, - {`"""`, LiteralString, Push("tqstring")}, - {`"`, LiteralString, Push("string")}, - {`r"""`, LiteralStringRegex, Push("tqregex")}, - {`r"`, LiteralStringRegex, Push("regex")}, - {"`", LiteralStringBacktick, Push("command")}, - {`((?:[a-zA-Z_¡-￿]|[𐀀-􏿿])(?:[a-zA-Z_0-9¡-￿]|[𐀀-􏿿])*!*)(')?`, ByGroups(Name, Operator), nil}, - {`(@(?:[a-zA-Z_¡-￿]|[𐀀-􏿿])(?:[a-zA-Z_0-9¡-￿]|[𐀀-􏿿])*!*)(')?`, ByGroups(NameDecorator, Operator), nil}, - {`(\d+(_\d+)+\.\d*|\d*\.\d+(_\d+)+)([eEf][+-]?[0-9]+)?`, LiteralNumberFloat, nil}, - {`(\d+\.\d*|\d*\.\d+)([eEf][+-]?[0-9]+)?`, LiteralNumberFloat, nil}, - {`\d+(_\d+)+[eEf][+-]?[0-9]+`, LiteralNumberFloat, nil}, - {`\d+[eEf][+-]?[0-9]+`, LiteralNumberFloat, nil}, - {`0b[01]+(_[01]+)+`, LiteralNumberBin, nil}, - {`0b[01]+`, LiteralNumberBin, nil}, - {`0o[0-7]+(_[0-7]+)+`, LiteralNumberOct, nil}, - {`0o[0-7]+`, LiteralNumberOct, nil}, - {`0x[a-fA-F0-9]+(_[a-fA-F0-9]+)+`, LiteralNumberHex, nil}, - {`0x[a-fA-F0-9]+`, LiteralNumberHex, nil}, - {`\d+(_\d+)+`, LiteralNumberInteger, nil}, - {`\d+`, LiteralNumberInteger, nil}, + {`(?<=[.\w)\]])(\'[²³¹ʰʲʳʷʸˡˢˣᴬᴮᴰᴱᴳᴴᴵᴶᴷᴸᴹᴺᴼᴾᴿᵀᵁᵂᵃᵇᵈᵉᵍᵏᵐᵒᵖᵗᵘᵛᵝᵞᵟᵠᵡᵢᵣᵤᵥᵦᵧᵨᵩᵪᶜᶠᶥᶦᶫᶰᶸᶻᶿ′″‴‵‶‷⁗⁰ⁱ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ₐₑₒₓₕₖₗₘₙₚₛₜⱼⱽ]*)+`, Operator, nil}, + {`(raw)(""")`, ByGroups(LiteralStringAffix, LiteralString), Push("tqrawstring")}, + {`(raw)(")`, ByGroups(LiteralStringAffix, LiteralString), Push("rawstring")}, + {`(r)(""")`, ByGroups(LiteralStringAffix, LiteralStringRegex), Push("tqregex")}, + {`(r)(")`, ByGroups(LiteralStringAffix, LiteralStringRegex), Push("regex")}, + {`((?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*))?(""")`, ByGroups(LiteralStringAffix, LiteralString), Push("tqstring")}, + {`((?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*))?(")`, ByGroups(LiteralStringAffix, LiteralString), Push("string")}, + {"((?:[a-zA-Z_\u00a1-\U0010ffff][a-zA-Z_0-9!\u00a1-\U0010ffff]*))?(```)", ByGroups(LiteralStringAffix, LiteralStringBacktick), Push("tqcommand")}, + {"((?:[a-zA-Z_\u00a1-\U0010ffff][a-zA-Z_0-9!\u00a1-\U0010ffff]*))?(`)", ByGroups(LiteralStringAffix, LiteralStringBacktick), Push("command")}, + {`((?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*))(\{)`, ByGroups(KeywordType, Punctuation), Push("curly")}, + {`(where)(\s+)((?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*))`, ByGroups(Keyword, Text, KeywordType), nil}, + {`(\{)`, Punctuation, Push("curly")}, + {`(abstract[ \t]+type|primitive[ \t]+type|mutable[ \t]+struct|struct)([\s()]+)((?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*))`, ByGroups(Keyword, Text, KeywordType), nil}, + {`@(?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*)`, NameDecorator, nil}, + {Words(`@`, `[²³¹ʰʲʳʷʸˡˢˣᴬᴮᴰᴱᴳᴴᴵᴶᴷᴸᴹᴺᴼᴾᴿᵀᵁᵂᵃᵇᵈᵉᵍᵏᵐᵒᵖᵗᵘᵛᵝᵞᵟᵠᵡᵢᵣᵤᵥᵦᵧᵨᵩᵪᶜᶠᶥᶦᶫᶰᶸᶻᶿ′″‴‵‶‷⁗⁰ⁱ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ₐₑₒₓₕₖₗₘₙₚₛₜⱼⱽ]*`, `->`, `:=`, `$=`, `?`, `||`, `&&`, `:`, `$`, `::`, `..`, `.`, `=`, `+=`, `-=`, `*=`, `/=`, `//=`, `\=`, `^=`, `÷=`, `%=`, `<<=`, `>>=`, `>>>=`, `|=`, `&=`, `⊻=`, `≔`, `⩴`, `≕'`, `~`, `=>`, `→`, `↔`, `↚`, `↛`, `↞`, `↠`, `↢`, `↣`, `↦`, `↤`, `↮`, `⇎`, `⇍`, `⇏`, `⇐`, `⇒`, `⇔`, `⇴`, `⇶`, `⇷`, `⇸`, `⇹`, `⇺`, `⇻`, `⇼`, `⇽`, `⇾`, `⇿`, `⟵`, `⟶`, `⟷`, `⟹`, `⟺`, `⟻`, `⟼`, `⟽`, `⟾`, `⟿`, `⤀`, `⤁`, `⤂`, `⤃`, `⤄`, `⤅`, `⤆`, `⤇`, `⤌`, `⤍`, `⤎`, `⤏`, `⤐`, `⤑`, `⤔`, `⤕`, `⤖`, `⤗`, `⤘`, `⤝`, `⤞`, `⤟`, `⤠`, `⥄`, `⥅`, `⥆`, `⥇`, `⥈`, `⥊`, `⥋`, `⥎`, `⥐`, `⥒`, `⥓`, `⥖`, `⥗`, `⥚`, `⥛`, `⥞`, `⥟`, `⥢`, `⥤`, `⥦`, `⥧`, `⥨`, `⥩`, `⥪`, `⥫`, `⥬`, `⥭`, `⥰`, `⧴`, `⬱`, `⬰`, `⬲`, `⬳`, `⬴`, `⬵`, `⬶`, `⬷`, `⬸`, `⬹`, `⬺`, `⬻`, `⬼`, `⬽`, `⬾`, `⬿`, `⭀`, `⭁`, `⭂`, `⭃`, `⭄`, `⭇`, `⭈`, `⭉`, `⭊`, `⭋`, `⭌`, `←`, `→`, `⇜`, `⇝`, `↜`, `↝`, `↩`, `↪`, `↫`, `↬`, `↼`, `↽`, `⇀`, `⇁`, `⇄`, `⇆`, `⇇`, `⇉`, `⇋`, `⇌`, `⇚`, `⇛`, `⇠`, `⇢`, `↷`, `↶`, `↺`, `↻`, `-->`, `<--`, `<-->`, `>`, `<`, `>=`, `≥`, `<=`, `≤`, `==`, `===`, `≡`, `!=`, `≠`, `!==`, `≢`, `∈`, `∉`, `∋`, `∌`, `⊆`, `⊈`, `⊂`, `⊄`, `⊊`, `∝`, `∊`, `∍`, `∥`, `∦`, `∷`, `∺`, `∻`, `∽`, `∾`, `≁`, `≃`, `≂`, `≄`, `≅`, `≆`, `≇`, `≈`, `≉`, `≊`, `≋`, `≌`, `≍`, `≎`, `≐`, `≑`, `≒`, `≓`, `≖`, `≗`, `≘`, `≙`, `≚`, `≛`, `≜`, `≝`, `≞`, `≟`, `≣`, `≦`, `≧`, `≨`, `≩`, `≪`, `≫`, `≬`, `≭`, `≮`, `≯`, `≰`, `≱`, `≲`, `≳`, `≴`, `≵`, `≶`, `≷`, `≸`, `≹`, `≺`, `≻`, `≼`, `≽`, `≾`, `≿`, `⊀`, `⊁`, `⊃`, `⊅`, `⊇`, `⊉`, `⊋`, `⊏`, `⊐`, `⊑`, `⊒`, `⊜`, `⊩`, `⊬`, `⊮`, `⊰`, `⊱`, `⊲`, `⊳`, `⊴`, `⊵`, `⊶`, `⊷`, `⋍`, `⋐`, `⋑`, `⋕`, `⋖`, `⋗`, `⋘`, `⋙`, `⋚`, `⋛`, `⋜`, `⋝`, `⋞`, `⋟`, `⋠`, `⋡`, `⋢`, `⋣`, `⋤`, `⋥`, `⋦`, `⋧`, `⋨`, `⋩`, `⋪`, `⋫`, `⋬`, `⋭`, `⋲`, `⋳`, `⋴`, `⋵`, `⋶`, `⋷`, `⋸`, `⋹`, `⋺`, `⋻`, `⋼`, `⋽`, `⋾`, `⋿`, `⟈`, `⟉`, `⟒`, `⦷`, `⧀`, `⧁`, `⧡`, `⧣`, `⧤`, `⧥`, `⩦`, `⩧`, `⩪`, `⩫`, `⩬`, `⩭`, `⩮`, `⩯`, `⩰`, `⩱`, `⩲`, `⩳`, `⩵`, `⩶`, `⩷`, `⩸`, `⩹`, `⩺`, `⩻`, `⩼`, `⩽`, `⩾`, `⩿`, `⪀`, `⪁`, `⪂`, `⪃`, `⪄`, `⪅`, `⪆`, `⪇`, `⪈`, `⪉`, `⪊`, `⪋`, `⪌`, `⪍`, `⪎`, `⪏`, `⪐`, `⪑`, `⪒`, `⪓`, `⪔`, `⪕`, `⪖`, `⪗`, `⪘`, `⪙`, `⪚`, `⪛`, `⪜`, `⪝`, `⪞`, `⪟`, `⪠`, `⪡`, `⪢`, `⪣`, `⪤`, `⪥`, `⪦`, `⪧`, `⪨`, `⪩`, `⪪`, `⪫`, `⪬`, `⪭`, `⪮`, `⪯`, `⪰`, `⪱`, `⪲`, `⪳`, `⪴`, `⪵`, `⪶`, `⪷`, `⪸`, `⪹`, `⪺`, `⪻`, `⪼`, `⪽`, `⪾`, `⪿`, `⫀`, `⫁`, `⫂`, `⫃`, `⫄`, `⫅`, `⫆`, `⫇`, `⫈`, `⫉`, `⫊`, `⫋`, `⫌`, `⫍`, `⫎`, `⫏`, `⫐`, `⫑`, `⫒`, `⫓`, `⫔`, `⫕`, `⫖`, `⫗`, `⫘`, `⫙`, `⫷`, `⫸`, `⫹`, `⫺`, `⊢`, `⊣`, `⟂`, `<:`, `>:`, `<|`, `|>`, `…`, `⁝`, `⋮`, `⋱`, `⋰`, `⋯`, `+`, `-`, `¦`, `|`, `⊕`, `⊖`, `⊞`, `⊟`, `++`, `∪`, `∨`, `⊔`, `±`, `∓`, `∔`, `∸`, `≏`, `⊎`, `⊻`, `⊽`, `⋎`, `⋓`, `⧺`, `⧻`, `⨈`, `⨢`, `⨣`, `⨤`, `⨥`, `⨦`, `⨧`, `⨨`, `⨩`, `⨪`, `⨫`, `⨬`, `⨭`, `⨮`, `⨹`, `⨺`, `⩁`, `⩂`, `⩅`, `⩊`, `⩌`, `⩏`, `⩐`, `⩒`, `⩔`, `⩖`, `⩗`, `⩛`, `⩝`, `⩡`, `⩢`, `⩣`, `*`, `/`, `⌿`, `÷`, `%`, `&`, `⋅`, `∘`, `×`, `\`, `∩`, `∧`, `⊗`, `⊘`, `⊙`, `⊚`, `⊛`, `⊠`, `⊡`, `⊓`, `∗`, `∙`, `∤`, `⅋`, `≀`, `⊼`, `⋄`, `⋆`, `⋇`, `⋉`, `⋊`, `⋋`, `⋌`, `⋏`, `⋒`, `⟑`, `⦸`, `⦼`, `⦾`, `⦿`, `⧶`, `⧷`, `⨇`, `⨰`, `⨱`, `⨲`, `⨳`, `⨴`, `⨵`, `⨶`, `⨷`, `⨸`, `⨻`, `⨼`, `⨽`, `⩀`, `⩃`, `⩄`, `⩋`, `⩍`, `⩎`, `⩑`, `⩓`, `⩕`, `⩘`, `⩚`, `⩜`, `⩞`, `⩟`, `⩠`, `⫛`, `⊍`, `▷`, `⨝`, `⟕`, `⟖`, `⟗`, `⨟`, `//`, `>>`, `<<`, `>>>`, `^`, `↑`, `↓`, `⇵`, `⟰`, `⟱`, `⤈`, `⤉`, `⤊`, `⤋`, `⤒`, `⤓`, `⥉`, `⥌`, `⥍`, `⥏`, `⥑`, `⥔`, `⥕`, `⥘`, `⥙`, `⥜`, `⥝`, `⥠`, `⥡`, `⥣`, `⥥`, `⥮`, `⥯`, `↑`, `↓`, `!`, `¬`, `√`, `∛`, `∜`), NameDecorator, nil}, + {Words(``, `\b`, `baremodule`, `begin`, `break`, `catch`, `ccall`, `const`, `continue`, `do`, `else`, `elseif`, `end`, `export`, `finally`, `for`, `function`, `global`, `if`, `import`, `in`, `isa`, `let`, `local`, `macro`, `module`, `quote`, `return`, `try`, `using`, `where`, `while`), Keyword, nil}, + {Words(``, `\b`, `AbstractArray`, `AbstractChannel`, `AbstractChar`, `AbstractDict`, `AbstractDisplay`, `AbstractFloat`, `AbstractIrrational`, `AbstractMatch`, `AbstractMatrix`, `AbstractPattern`, `AbstractRange`, `AbstractSet`, `AbstractString`, `AbstractUnitRange`, `AbstractVecOrMat`, `AbstractVector`, `Any`, `ArgumentError`, `Array`, `AssertionError`, `BigFloat`, `BigInt`, `BitArray`, `BitMatrix`, `BitSet`, `BitVector`, `Bool`, `BoundsError`, `CapturedException`, `CartesianIndex`, `CartesianIndices`, `Cchar`, `Cdouble`, `Cfloat`, `Channel`, `Char`, `Cint`, `Cintmax_t`, `Clong`, `Clonglong`, `Cmd`, `Colon`, `Complex`, `ComplexF16`, `ComplexF32`, `ComplexF64`, `ComposedFunction`, `CompositeException`, `Condition`, `Cptrdiff_t`, `Cshort`, `Csize_t`, `Cssize_t`, `Cstring`, `Cuchar`, `Cuint`, `Cuintmax_t`, `Culong`, `Culonglong`, `Cushort`, `Cvoid`, `Cwchar_t`, `Cwstring`, `DataType`, `DenseArray`, `DenseMatrix`, `DenseVecOrMat`, `DenseVector`, `Dict`, `DimensionMismatch`, `Dims`, `DivideError`, `DomainError`, `EOFError`, `Enum`, `ErrorException`, `Exception`, `ExponentialBackOff`, `Expr`, `Float16`, `Float32`, `Float64`, `Function`, `GlobalRef`, `HTML`, `IO`, `IOBuffer`, `IOContext`, `IOStream`, `IdDict`, `IndexCartesian`, `IndexLinear`, `IndexStyle`, `InexactError`, `InitError`, `Int`, `Int128`, `Int16`, `Int32`, `Int64`, `Int8`, `Integer`, `InterruptException`, `InvalidStateException`, `Irrational`, `KeyError`, `LinRange`, `LineNumberNode`, `LinearIndices`, `LoadError`, `MIME`, `Matrix`, `Method`, `MethodError`, `Missing`, `MissingException`, `Module`, `NTuple`, `NamedTuple`, `Nothing`, `Number`, `OrdinalRange`, `OutOfMemoryError`, `OverflowError`, `Pair`, `PartialQuickSort`, `PermutedDimsArray`, `Pipe`, `ProcessFailedException`, `Ptr`, `QuoteNode`, `Rational`, `RawFD`, `ReadOnlyMemoryError`, `Real`, `ReentrantLock`, `Ref`, `Regex`, `RegexMatch`, `RoundingMode`, `SegmentationFault`, `Set`, `Signed`, `Some`, `StackOverflowError`, `StepRange`, `StepRangeLen`, `StridedArray`, `StridedMatrix`, `StridedVecOrMat`, `StridedVector`, `String`, `StringIndexError`, `SubArray`, `SubString`, `SubstitutionString`, `Symbol`, `SystemError`, `Task`, `TaskFailedException`, `Text`, `TextDisplay`, `Timer`, `Tuple`, `Type`, `TypeError`, `TypeVar`, `UInt`, `UInt128`, `UInt16`, `UInt32`, `UInt64`, `UInt8`, `UndefInitializer`, `UndefKeywordError`, `UndefRefError`, `UndefVarError`, `Union`, `UnionAll`, `UnitRange`, `Unsigned`, `Val`, `Vararg`, `VecElement`, `VecOrMat`, `Vector`, `VersionNumber`, `WeakKeyDict`, `WeakRef`), KeywordType, nil}, + {Words(``, `\b`, `ARGS`, `C_NULL`, `DEPOT_PATH`, `ENDIAN_BOM`, `ENV`, `Inf`, `Inf16`, `Inf32`, `Inf64`, `InsertionSort`, `LOAD_PATH`, `MergeSort`, `NaN`, `NaN16`, `NaN32`, `NaN64`, `PROGRAM_FILE`, `QuickSort`, `RoundDown`, `RoundFromZero`, `RoundNearest`, `RoundNearestTiesAway`, `RoundNearestTiesUp`, `RoundToZero`, `RoundUp`, `VERSION`, `devnull`, `false`, `im`, `missing`, `nothing`, `pi`, `stderr`, `stdin`, `stdout`, `true`, `undef`, `π`, `ℯ`), NameBuiltin, nil}, + {`(?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*)`, Name, nil}, + {`(\d+((_\d+)+)?\.(?!\.)(\d+((_\d+)+)?)?|\.\d+((_\d+)+)?)([eEf][+-]?[0-9]+)?`, LiteralNumberFloat, nil}, + {`\d+((_\d+)+)?[eEf][+-]?[0-9]+`, LiteralNumberFloat, nil}, + {`0x[a-fA-F0-9]+((_[a-fA-F0-9]+)+)?(\.([a-fA-F0-9]+((_[a-fA-F0-9]+)+)?)?)?p[+-]?\d+`, LiteralNumberFloat, nil}, + {`0b[01]+((_[01]+)+)?`, LiteralNumberBin, nil}, + {`0o[0-7]+((_[0-7]+)+)?`, LiteralNumberOct, nil}, + {`0x[a-fA-F0-9]+((_[a-fA-F0-9]+)+)?`, LiteralNumberHex, nil}, + {`\d+((_\d+)+)?`, LiteralNumberInteger, nil}, + {Words(``, ``, `.`), Operator, nil}, }, "blockcomment": { {`[^=#]`, CommentMultiline, nil}, @@ -60,40 +68,67 @@ func juliaRules() Rules { {`=#`, CommentMultiline, Pop(1)}, {`[=#]`, CommentMultiline, nil}, }, - "string": { - {`"`, LiteralString, Pop(1)}, - {`\\([\\"\'$nrbtfav]|(x|u|U)[a-fA-F0-9]+|\d+)`, LiteralStringEscape, nil}, - {`\$(?:[a-zA-Z_¡-￿]|[𐀀-􏿿])(?:[a-zA-Z_0-9¡-￿]|[𐀀-􏿿])*!*`, LiteralStringInterpol, nil}, - {`(\$)(\()`, ByGroups(LiteralStringInterpol, Punctuation), Push("in-intp")}, - {`%[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?[hlL]?[E-GXc-giorsux%]`, LiteralStringInterpol, nil}, - {`.|\s`, LiteralString, nil}, + "curly": { + {`\{`, Punctuation, Push()}, + {`\}`, Punctuation, Pop(1)}, + {`(?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*)`, KeywordType, nil}, + Include("root"), }, - "tqstring": { + "tqrawstring": { {`"""`, LiteralString, Pop(1)}, - {`\\([\\"\'$nrbtfav]|(x|u|U)[a-fA-F0-9]+|\d+)`, LiteralStringEscape, nil}, - {`\$(?:[a-zA-Z_¡-￿]|[𐀀-􏿿])(?:[a-zA-Z_0-9¡-￿]|[𐀀-􏿿])*!*`, LiteralStringInterpol, nil}, + {`([^"]|"[^"][^"])+`, LiteralString, nil}, + }, + "rawstring": { + {`"`, LiteralString, Pop(1)}, + {`\\"`, LiteralStringEscape, nil}, + {`([^"\\]|\\[^"])+`, LiteralString, nil}, + }, + "interp": { + {`\$(?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*)`, LiteralStringInterpol, nil}, {`(\$)(\()`, ByGroups(LiteralStringInterpol, Punctuation), Push("in-intp")}, - {`.|\s`, LiteralString, nil}, - }, - "regex": { - {`"`, LiteralStringRegex, Pop(1)}, - {`\\"`, LiteralStringRegex, nil}, - {`.|\s`, LiteralStringRegex, nil}, - }, - "tqregex": { - {`"""`, LiteralStringRegex, Pop(1)}, - {`.|\s`, LiteralStringRegex, nil}, - }, - "command": { - {"`", LiteralStringBacktick, Pop(1)}, - {`\$(?:[a-zA-Z_¡-￿]|[𐀀-􏿿])(?:[a-zA-Z_0-9¡-￿]|[𐀀-􏿿])*!*`, LiteralStringInterpol, nil}, - {`(\$)(\()`, ByGroups(LiteralStringInterpol, Punctuation), Push("in-intp")}, - {`.|\s`, LiteralStringBacktick, nil}, }, "in-intp": { {`\(`, Punctuation, Push()}, {`\)`, Punctuation, Pop(1)}, Include("root"), }, + "string": { + {`(")((?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*)|\d+)?`, ByGroups(LiteralString, LiteralStringAffix), Pop(1)}, + {`\\([\\"\'$nrbtfav]|(x|u|U)[a-fA-F0-9]+|\d+)`, LiteralStringEscape, nil}, + Include("interp"), + {`%[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?[hlL]?[E-GXc-giorsux%]`, LiteralStringInterpol, nil}, + {`[^"$%\\]+`, LiteralString, nil}, + {`.`, LiteralString, nil}, + }, + "tqstring": { + {`(""")((?:[a-zA-Z_¡-􏿿][a-zA-Z_0-9!¡-􏿿]*)|\d+)?`, ByGroups(LiteralString, LiteralStringAffix), Pop(1)}, + {`\\([\\"\'$nrbtfav]|(x|u|U)[a-fA-F0-9]+|\d+)`, LiteralStringEscape, nil}, + Include("interp"), + {`[^"$%\\]+`, LiteralString, nil}, + {`.`, LiteralString, nil}, + }, + "regex": { + {`(")([imsxa]*)?`, ByGroups(LiteralStringRegex, LiteralStringAffix), Pop(1)}, + {`\\"`, LiteralStringRegex, nil}, + {`[^\\"]+`, LiteralStringRegex, nil}, + }, + "tqregex": { + {`(""")([imsxa]*)?`, ByGroups(LiteralStringRegex, LiteralStringAffix), Pop(1)}, + {`[^"]+`, LiteralStringRegex, nil}, + }, + "command": { + {"(`)((?:[a-zA-Z_\u00a1-\U0010ffff][a-zA-Z_0-9!\u00a1-\U0010ffff]*)|\\d+)?", ByGroups(LiteralStringBacktick, LiteralStringAffix), Pop(1)}, + {"\\\\[`$]", LiteralStringEscape, nil}, + Include("interp"), + {"[^\\\\`$]+", LiteralStringBacktick, nil}, + {`.`, LiteralStringBacktick, nil}, + }, + "tqcommand": { + {"(```)((?:[a-zA-Z_\u00a1-\U0010ffff][a-zA-Z_0-9!\u00a1-\U0010ffff]*)|\\d+)?", ByGroups(LiteralStringBacktick, LiteralStringAffix), Pop(1)}, + {`\\\$`, LiteralStringEscape, nil}, + Include("interp"), + {"[^\\\\`$]+", LiteralStringBacktick, nil}, + {`.`, LiteralStringBacktick, nil}, + }, } } diff --git a/lexers/testdata/julia.actual b/lexers/testdata/julia.actual index 1af5f30..079000f 100644 --- a/lexers/testdata/julia.actual +++ b/lexers/testdata/julia.actual @@ -1,18 +1,179 @@ -% Defining basic types +## Test keywords are identified -struct Value - v::Int -end -const r = 33 +mutable struct MutableType end +struct ImmutableType end +abstract type AbstractMyType end +primitive type MyPrimitive 32 end +(abstract, mutable, type) = true, π, missing -A = zeros(3,3) -B = rand(4,3) +abstract type AbstractMyType end +primitive type MyPrimitive 32 end +mutable struct MutableType end -type = typeof(B) -C = A * B' -res = C' .+ r +## Test that macros are parsed, including ones which are defined as symbols -const abstract = 33 -abstract type K end +@generated function +@. a + b +@~ a + b +@± a + b +@mymacro(a, b) +@+¹ᵀ a -primitive type MyFloat32 32 end +## Test that the range of Julia variable names are correctly identified + +a # single character variable +a_simple_name +_leading_underscore +5implicit_mul +6_more_mul +nums1 +nums_2 +nameswith! +multiple!! +embedded!_inthemiddle +embed!1 +prime_suffix′ +for_each # starts with keyword substring + +# variables with characters > \u00A1 +ð # category Ll +Aʺ # category Lm -- \U02BA (MODIFIER LETTER DOUBLE PRIME), not \U2033 (DOUBLE PRIME) +א # category Lo +Ð # category Lu +A̅ # category Mn -- \U0305 (COMBINING OVERLINE) +ⅿ # category Nl -- \U217F (SMALL ROMAN NUMERAL ONE THOUSAND) +A₁ # category No +A² # category No +€ # category Sc +© # category So + +# number-like names +𝟙 # category Nd +𝟏 # category Nd + +## Tests identification of number forms + +# floats + 1e1 1e+1 1e-1 +1.1e1 1.1e+1 1.1e-1 .1e1 .1_1e1 1_1.1e1 1.1_1e1 1.1_11e1 +1.1E1 1.1E+1 1.1E-1 .1E1 .1_1E1 1_1.1E1 1.1_1E1 1.1_11E1 +1.1f1 1.1f+1 1.1f-1 .1f1 .1_1f1 1_1.1f1 1.1_1f1 1.1_11f1 +1E1 1E+1 1E-1 +1f1 1f+1 1f-1 +.1 1. 1.1 1.1_1 1.1_11 .1_1 .1_11 1_1.1_1 +# hex floats +0x1p1 0xa_bp10 0x01_ap11 0x01_abp1 +0x1.1p1 0xA.Bp10 0x0.1_Ap9 0x0_1.Ap1 0x0_1.A_Bp9 + +# integers +1 01 10_1 10_11 + +# non-decimal +0xf 0xf_0 0xfff_000 +0o7 0o7_0 0o777_000 +0b1 0b1_0 0b111_000 + +# invalid in Julia - out of range values +0xg 0o8 0b2 0x1pA +# invalid in Julia - no trailing underscores +1_ 1.1_ 0xf_ 0o7_ 0b1_ 0xF_p1 +# parsed as juxtaposed numeral + variable in Julia (no underscores in exponents) +1e1_1 1E1_1 1f1_1 0xfp1_1 + +# not floats -- range-like expression parts +1..1 ..1 1.. + +## Test that operators --- dotted and unicode --- are identified correctly. + +a += b.c +a .÷= .~b.c +a = !b ⋆ c! +a = b ? c : d ⊕ e +a = √(5) +a -> (a...) .+ 1 +a \ b +1..2 +a = a === b +a <: T +a >: T +a::T +[adjoint]' +(identity)'' +adjoint''' +transpose'ᵀ +suffixed +¹ operator +suffixed +¹²³ operator + +%% Test string forms + +"global function" +"An $interpolated variable" +"An $(a + 1) expression" +"""a""" +""" +global function +de e f +"inner string" +""" +raw"\\ a \" $interp $(1 + 1) \"" +raw""" +"inner string" +$interp +$(1 + 1) +""" +# commented "string" + +@sprintf "%0.2f" var +v"1.0" +var"#nonstandard#" + +r"^[abs]+$"m +arbi"trary"suff +arbi"trary"1234 + +`global function` +`abc \` \$ $interpolated` +`abc $(a + 1)` +```a``` +``` +global function +"thing" ` \$ +`now` $(now()) +``` +# commented `command` + +arbi`trary`suff +arbi`trary`1234 + +## Tests that symbols are parsed as special literals + +:abc_123 +:abc_def +:α +Val{:mysymbol} + +# non-symbols +a:b +1:b +1.:b +a::T +a<:T +a>:T +UInt(1):UInt(2) + +## Tests identifying names which must be types from context + +Union{} +MyType{Nothing, Any} +f(::Union{T,S}) where S where T = 1 +f(::T) where {T} = 1 +f(::Type{<:T}) = 1 +f(::AT) where AT <: AbstractArray{MyType,1} = 1 +f(::Val{:named}) = 1 +f(::typeof(sin)) = 1 +MyInt <: Integer +Number >: MyInt +AT{T,1} <: B +B>:AT{T,1} +A <: f(B) +g(C) <: T diff --git a/lexers/testdata/julia.expected b/lexers/testdata/julia.expected index 227b000..0f03ba0 100644 --- a/lexers/testdata/julia.expected +++ b/lexers/testdata/julia.expected @@ -1,103 +1,847 @@ [ - {"type":"Operator","value":"%"}, - {"type":"Text","value":" "}, - {"type":"Name","value":"Defining"}, - {"type":"Text","value":" "}, - {"type":"Name","value":"basic"}, - {"type":"Text","value":" "}, - {"type":"Name","value":"types"}, + {"type":"Comment","value":"## Test keywords are identified"}, {"type":"Text","value":"\n\n"}, - {"type":"Keyword","value":"struct"}, + {"type":"Keyword","value":"mutable struct"}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"MutableType"}, {"type":"Text","value":" "}, - {"type":"Name","value":"Value"}, - {"type":"Text","value":"\n "}, - {"type":"Name","value":"v"}, - {"type":"Operator","value":"::"}, - {"type":"KeywordType","value":"Int"}, - {"type":"Text","value":"\n"}, {"type":"Keyword","value":"end"}, {"type":"Text","value":"\n"}, - {"type":"KeywordDeclaration","value":"const"}, + {"type":"Keyword","value":"struct"}, {"type":"Text","value":" "}, - {"type":"Name","value":"r"}, + {"type":"KeywordType","value":"ImmutableType"}, {"type":"Text","value":" "}, - {"type":"Operator","value":"="}, - {"type":"Text","value":" "}, - {"type":"LiteralNumberInteger","value":"33"}, - {"type":"Text","value":"\n\n"}, - {"type":"Name","value":"A"}, - {"type":"Text","value":" "}, - {"type":"Operator","value":"="}, - {"type":"Text","value":" "}, - {"type":"Name","value":"zeros"}, - {"type":"Punctuation","value":"("}, - {"type":"LiteralNumberInteger","value":"3"}, - {"type":"Punctuation","value":","}, - {"type":"LiteralNumberInteger","value":"3"}, - {"type":"Punctuation","value":")"}, - {"type":"Text","value":"\n"}, - {"type":"Name","value":"B"}, - {"type":"Text","value":" "}, - {"type":"Operator","value":"="}, - {"type":"Text","value":" "}, - {"type":"Name","value":"rand"}, - {"type":"Punctuation","value":"("}, - {"type":"LiteralNumberInteger","value":"4"}, - {"type":"Punctuation","value":","}, - {"type":"LiteralNumberInteger","value":"3"}, - {"type":"Punctuation","value":")"}, - {"type":"Text","value":"\n\n"}, - {"type":"Name","value":"type"}, - {"type":"Text","value":" "}, - {"type":"Operator","value":"="}, - {"type":"Text","value":" "}, - {"type":"Name","value":"typeof"}, - {"type":"Punctuation","value":"("}, - {"type":"Name","value":"B"}, - {"type":"Punctuation","value":")"}, - {"type":"Text","value":"\n"}, - {"type":"Name","value":"C"}, - {"type":"Text","value":" "}, - {"type":"Operator","value":"="}, - {"type":"Text","value":" "}, - {"type":"Name","value":"A"}, - {"type":"Text","value":" "}, - {"type":"Operator","value":"*"}, - {"type":"Text","value":" "}, - {"type":"Name","value":"B"}, - {"type":"Operator","value":"'"}, - {"type":"Text","value":"\n"}, - {"type":"Name","value":"res"}, - {"type":"Text","value":" "}, - {"type":"Operator","value":"="}, - {"type":"Text","value":" "}, - {"type":"Name","value":"C"}, - {"type":"Operator","value":"'"}, - {"type":"Text","value":" "}, - {"type":"Operator","value":".+"}, - {"type":"Text","value":" "}, - {"type":"Name","value":"r"}, - {"type":"Text","value":"\n\n"}, - {"type":"KeywordDeclaration","value":"const"}, - {"type":"Text","value":" "}, - {"type":"Name","value":"abstract"}, - {"type":"Text","value":" "}, - {"type":"Operator","value":"="}, - {"type":"Text","value":" "}, - {"type":"LiteralNumberInteger","value":"33"}, + {"type":"Keyword","value":"end"}, {"type":"Text","value":"\n"}, {"type":"Keyword","value":"abstract type"}, {"type":"Text","value":" "}, - {"type":"Name","value":"K"}, + {"type":"KeywordType","value":"AbstractMyType"}, {"type":"Text","value":" "}, {"type":"Keyword","value":"end"}, - {"type":"Text","value":"\n\n"}, + {"type":"Text","value":"\n"}, {"type":"Keyword","value":"primitive type"}, {"type":"Text","value":" "}, - {"type":"Name","value":"MyFloat32"}, + {"type":"KeywordType","value":"MyPrimitive"}, {"type":"Text","value":" "}, {"type":"LiteralNumberInteger","value":"32"}, {"type":"Text","value":" "}, {"type":"Keyword","value":"end"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"abstract"}, + {"type":"Punctuation","value":","}, + {"type":"Text","value":" "}, + {"type":"Name","value":"mutable"}, + {"type":"Punctuation","value":","}, + {"type":"Text","value":" "}, + {"type":"Name","value":"type"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"true"}, + {"type":"Punctuation","value":","}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"π"}, + {"type":"Punctuation","value":","}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"missing"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"abstract type"}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"AbstractMyType"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"end"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"primitive type"}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"MyPrimitive"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"32"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"end"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"mutable struct"}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"MutableType"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"end"}, + {"type":"Text","value":"\n\n"}, + {"type":"Comment","value":"## Test that macros are parsed, including ones which are defined as symbols"}, + {"type":"Text","value":"\n\n"}, + {"type":"NameDecorator","value":"@generated"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"function"}, + {"type":"Text","value":"\n"}, + {"type":"NameDecorator","value":"@."}, + {"type":"Text","value":" "}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"b"}, + {"type":"Text","value":"\n"}, + {"type":"NameDecorator","value":"@~"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"b"}, + {"type":"Text","value":"\n"}, + {"type":"NameDecorator","value":"@±"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"b"}, + {"type":"Text","value":"\n"}, + {"type":"NameDecorator","value":"@mymacro"}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"a"}, + {"type":"Punctuation","value":","}, + {"type":"Text","value":" "}, + {"type":"Name","value":"b"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":"\n"}, + {"type":"NameDecorator","value":"@+¹ᵀ"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"a"}, + {"type":"Text","value":"\n\n"}, + {"type":"Comment","value":"## Test that the range of Julia variable names are correctly identified"}, + {"type":"Text","value":"\n\n"}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Comment","value":"# single character variable"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"a_simple_name"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"_leading_underscore"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"5"}, + {"type":"Name","value":"implicit_mul"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"6"}, + {"type":"Name","value":"_more_mul"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"nums1"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"nums_2"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"nameswith!"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"multiple!!"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"embedded!_inthemiddle"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"embed!1"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"prime_suffix′"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"for_each"}, + {"type":"Text","value":" "}, + {"type":"Comment","value":"# starts with keyword substring"}, + {"type":"Text","value":"\n\n"}, + {"type":"Comment","value":"# variables with characters \u003e \\u00A1"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"ð"}, + {"type":"Text","value":" "}, + {"type":"Comment","value":"# category Ll"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"Aʺ"}, + {"type":"Text","value":" "}, + {"type":"Comment","value":"# category Lm -- \\U02BA (MODIFIER LETTER DOUBLE PRIME), not \\U2033 (DOUBLE PRIME)"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"א"}, + {"type":"Text","value":" "}, + {"type":"Comment","value":"# category Lo"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"Ð"}, + {"type":"Text","value":" "}, + {"type":"Comment","value":"# category Lu"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"A̅"}, + {"type":"Text","value":" "}, + {"type":"Comment","value":"# category Mn -- \\U0305 (COMBINING OVERLINE)"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"ⅿ"}, + {"type":"Text","value":" "}, + {"type":"Comment","value":"# category Nl -- \\U217F (SMALL ROMAN NUMERAL ONE THOUSAND)"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"A₁"}, + {"type":"Text","value":" "}, + {"type":"Comment","value":"# category No"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"A²"}, + {"type":"Text","value":" "}, + {"type":"Comment","value":"# category No"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"€"}, + {"type":"Text","value":" "}, + {"type":"Comment","value":"# category Sc"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"©"}, + {"type":"Text","value":" "}, + {"type":"Comment","value":"# category So"}, + {"type":"Text","value":"\n\n"}, + {"type":"Comment","value":"# number-like names"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"𝟙"}, + {"type":"Text","value":" "}, + {"type":"Comment","value":"# category Nd"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"𝟏"}, + {"type":"Text","value":" "}, + {"type":"Comment","value":"# category Nd"}, + {"type":"Text","value":"\n\n"}, + {"type":"Comment","value":"## Tests identification of number forms"}, + {"type":"Text","value":"\n\n"}, + {"type":"Comment","value":"# floats"}, + {"type":"Text","value":"\n "}, + {"type":"LiteralNumberFloat","value":"1e1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1e+1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1e-1"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberFloat","value":"1.1e1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1e+1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1e-1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":".1e1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":".1_1e1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1_1.1e1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1_1e1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1_11e1"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberFloat","value":"1.1E1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1E+1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1E-1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":".1E1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":".1_1E1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1_1.1E1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1_1E1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1_11E1"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberFloat","value":"1.1f1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1f+1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1f-1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":".1f1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":".1_1f1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1_1.1f1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1_1f1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1_11f1"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberFloat","value":"1E1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1E+1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1E-1"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberFloat","value":"1f1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1f+1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1f-1"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberFloat","value":".1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1."}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1_1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1_11"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":".1_1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":".1_11"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1_1.1_1"}, + {"type":"Text","value":"\n"}, + {"type":"Comment","value":"# hex floats"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberFloat","value":"0x1p1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"0xa_bp10"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"0x01_ap11"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"0x01_abp1"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberFloat","value":"0x1.1p1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"0xA.Bp10"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"0x0.1_Ap9"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"0x0_1.Ap1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"0x0_1.A_Bp9"}, + {"type":"Text","value":"\n\n"}, + {"type":"Comment","value":"# integers"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"01"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"10_1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"10_11"}, + {"type":"Text","value":"\n\n"}, + {"type":"Comment","value":"# non-decimal"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberHex","value":"0xf"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberHex","value":"0xf_0"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberHex","value":"0xfff_000"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberOct","value":"0o7"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberOct","value":"0o7_0"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberOct","value":"0o777_000"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberBin","value":"0b1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberBin","value":"0b1_0"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberBin","value":"0b111_000"}, + {"type":"Text","value":"\n\n"}, + {"type":"Comment","value":"# invalid in Julia - out of range values"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Name","value":"xg"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Name","value":"o8"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Name","value":"b2"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberHex","value":"0x1"}, + {"type":"Name","value":"pA"}, + {"type":"Text","value":"\n"}, + {"type":"Comment","value":"# invalid in Julia - no trailing underscores"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Name","value":"_"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1.1"}, + {"type":"Name","value":"_"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberHex","value":"0xf"}, + {"type":"Name","value":"_"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberOct","value":"0o7"}, + {"type":"Name","value":"_"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberBin","value":"0b1"}, + {"type":"Name","value":"_"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberHex","value":"0xF"}, + {"type":"Name","value":"_p1"}, + {"type":"Text","value":"\n"}, + {"type":"Comment","value":"# parsed as juxtaposed numeral + variable in Julia (no underscores in exponents)"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberFloat","value":"1e1"}, + {"type":"Name","value":"_1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1E1"}, + {"type":"Name","value":"_1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"1f1"}, + {"type":"Name","value":"_1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"0xfp1"}, + {"type":"Name","value":"_1"}, + {"type":"Text","value":"\n\n"}, + {"type":"Comment","value":"# not floats -- range-like expression parts"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":".."}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":".."}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":".."}, + {"type":"Text","value":"\n\n"}, + {"type":"Comment","value":"## Test that operators --- dotted and unicode --- are identified correctly."}, + {"type":"Text","value":"\n\n"}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+="}, + {"type":"Text","value":" "}, + {"type":"Name","value":"b"}, + {"type":"Operator","value":"."}, + {"type":"Name","value":"c"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":".÷="}, + {"type":"Text","value":" "}, + {"type":"Operator","value":".~"}, + {"type":"Name","value":"b"}, + {"type":"Operator","value":"."}, + {"type":"Name","value":"c"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"!"}, + {"type":"Name","value":"b"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"⋆"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"c!"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Name","value":"b"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"?"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"c"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":":"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"d"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"⊕"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"e"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"√"}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberInteger","value":"5"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"-\u003e"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"a"}, + {"type":"Operator","value":"..."}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":".+"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\\"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"b"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":".."}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"==="}, + {"type":"Text","value":" "}, + {"type":"Name","value":"b"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordType","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u003c:"}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"T"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordType","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u003e:"}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"T"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"a"}, + {"type":"Operator","value":"::"}, + {"type":"KeywordType","value":"T"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"["}, + {"type":"Name","value":"adjoint"}, + {"type":"Punctuation","value":"]"}, + {"type":"Operator","value":"'"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"identity"}, + {"type":"Punctuation","value":")"}, + {"type":"Operator","value":"''"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"adjoint"}, + {"type":"Operator","value":"'''"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"transpose"}, + {"type":"Operator","value":"'ᵀ"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"suffixed"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+¹"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"operator"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"suffixed"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+¹²³"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"operator"}, + {"type":"Text","value":"\n\n"}, + {"type":"Operator","value":"%%"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"Test"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"string"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"forms"}, + {"type":"Text","value":"\n\n"}, + {"type":"LiteralString","value":"\"global function\""}, + {"type":"Text","value":"\n"}, + {"type":"LiteralString","value":"\"An "}, + {"type":"LiteralStringInterpol","value":"$interpolated"}, + {"type":"LiteralString","value":" variable\""}, + {"type":"Text","value":"\n"}, + {"type":"LiteralString","value":"\"An "}, + {"type":"LiteralStringInterpol","value":"$"}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralString","value":" expression\""}, + {"type":"Text","value":"\n"}, + {"type":"LiteralString","value":"\"\"\"a\"\"\""}, + {"type":"Text","value":"\n"}, + {"type":"LiteralString","value":"\"\"\"\nglobal function\nde e f\n\"inner string\"\n\"\"\""}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringAffix","value":"raw"}, + {"type":"LiteralString","value":"\"\\\\ a "}, + {"type":"LiteralStringEscape","value":"\\\""}, + {"type":"LiteralString","value":" $interp $(1 + 1) "}, + {"type":"LiteralStringEscape","value":"\\\""}, + {"type":"LiteralString","value":"\""}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringAffix","value":"raw"}, + {"type":"LiteralString","value":"\"\"\"\n\"inner string\"\n$interp\n$(1 + 1)\n\"\"\""}, + {"type":"Text","value":"\n"}, + {"type":"Comment","value":"# commented \"string\""}, + {"type":"Text","value":"\n\n"}, + {"type":"NameDecorator","value":"@sprintf"}, + {"type":"Text","value":" "}, + {"type":"LiteralString","value":"\""}, + {"type":"LiteralStringInterpol","value":"%0.2f"}, + {"type":"LiteralString","value":"\""}, + {"type":"Text","value":" "}, + {"type":"Name","value":"var"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringAffix","value":"v"}, + {"type":"LiteralString","value":"\"1.0\""}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringAffix","value":"var"}, + {"type":"LiteralString","value":"\"#nonstandard#\""}, + {"type":"Text","value":"\n\n"}, + {"type":"LiteralStringAffix","value":"r"}, + {"type":"LiteralStringRegex","value":"\"^[abs]+$\""}, + {"type":"LiteralStringAffix","value":"m"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringAffix","value":"arbi"}, + {"type":"LiteralString","value":"\"trary\""}, + {"type":"LiteralStringAffix","value":"suff"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringAffix","value":"arbi"}, + {"type":"LiteralString","value":"\"trary\""}, + {"type":"LiteralStringAffix","value":"1234"}, + {"type":"Text","value":"\n\n"}, + {"type":"LiteralStringBacktick","value":"`global function`"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringBacktick","value":"`abc "}, + {"type":"LiteralStringEscape","value":"\\`"}, + {"type":"LiteralStringBacktick","value":" "}, + {"type":"LiteralStringEscape","value":"\\$"}, + {"type":"LiteralStringBacktick","value":" "}, + {"type":"LiteralStringInterpol","value":"$interpolated"}, + {"type":"LiteralStringBacktick","value":"`"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringBacktick","value":"`abc "}, + {"type":"LiteralStringInterpol","value":"$"}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringBacktick","value":"`"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringBacktick","value":"```a```"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringBacktick","value":"```\nglobal function\n\"thing\" ` "}, + {"type":"LiteralStringEscape","value":"\\$"}, + {"type":"LiteralStringBacktick","value":"\n`now` "}, + {"type":"LiteralStringInterpol","value":"$"}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"now"}, + {"type":"Punctuation","value":"())"}, + {"type":"LiteralStringBacktick","value":"\n```"}, + {"type":"Text","value":"\n"}, + {"type":"Comment","value":"# commented `command`"}, + {"type":"Text","value":"\n\n"}, + {"type":"LiteralStringAffix","value":"arbi"}, + {"type":"LiteralStringBacktick","value":"`trary`"}, + {"type":"LiteralStringAffix","value":"suff"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringAffix","value":"arbi"}, + {"type":"LiteralStringBacktick","value":"`trary`"}, + {"type":"LiteralStringAffix","value":"1234"}, + {"type":"Text","value":"\n\n"}, + {"type":"Comment","value":"## Tests that symbols are parsed as special literals"}, + {"type":"Text","value":"\n\n"}, + {"type":"LiteralStringSymbol","value":":abc_123"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringSymbol","value":":abc_def"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringSymbol","value":":α"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordType","value":"Val"}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringSymbol","value":":mysymbol"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n\n"}, + {"type":"Comment","value":"# non-symbols"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"a"}, + {"type":"Operator","value":":"}, + {"type":"Name","value":"b"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":":"}, + {"type":"Name","value":"b"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberFloat","value":"1."}, + {"type":"Operator","value":":"}, + {"type":"Name","value":"b"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"a"}, + {"type":"Operator","value":"::"}, + {"type":"KeywordType","value":"T"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordType","value":"a"}, + {"type":"Operator","value":"\u003c:"}, + {"type":"KeywordType","value":"T"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordType","value":"a"}, + {"type":"Operator","value":"\u003e:"}, + {"type":"KeywordType","value":"T"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordType","value":"UInt"}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Punctuation","value":")"}, + {"type":"Operator","value":":"}, + {"type":"KeywordType","value":"UInt"}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":"\n\n"}, + {"type":"Comment","value":"## Tests identifying names which must be types from context"}, + {"type":"Text","value":"\n\n"}, + {"type":"KeywordType","value":"Union"}, + {"type":"Punctuation","value":"{}"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordType","value":"MyType"}, + {"type":"Punctuation","value":"{"}, + {"type":"KeywordType","value":"Nothing"}, + {"type":"Punctuation","value":","}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"Any"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"f"}, + {"type":"Punctuation","value":"("}, + {"type":"Operator","value":"::"}, + {"type":"KeywordType","value":"Union"}, + {"type":"Punctuation","value":"{"}, + {"type":"KeywordType","value":"T"}, + {"type":"Punctuation","value":","}, + {"type":"KeywordType","value":"S"}, + {"type":"Punctuation","value":"})"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"where"}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"S"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"where"}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"T"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"f"}, + {"type":"Punctuation","value":"("}, + {"type":"Operator","value":"::"}, + {"type":"KeywordType","value":"T"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"where"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"KeywordType","value":"T"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"f"}, + {"type":"Punctuation","value":"("}, + {"type":"Operator","value":"::"}, + {"type":"KeywordType","value":"Type"}, + {"type":"Punctuation","value":"{"}, + {"type":"Operator","value":"\u003c:"}, + {"type":"KeywordType","value":"T"}, + {"type":"Punctuation","value":"})"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"f"}, + {"type":"Punctuation","value":"("}, + {"type":"Operator","value":"::"}, + {"type":"KeywordType","value":"AT"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"where"}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"AT"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u003c:"}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"AbstractArray"}, + {"type":"Punctuation","value":"{"}, + {"type":"KeywordType","value":"MyType"}, + {"type":"Punctuation","value":","}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"f"}, + {"type":"Punctuation","value":"("}, + {"type":"Operator","value":"::"}, + {"type":"KeywordType","value":"Val"}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringSymbol","value":":named"}, + {"type":"Punctuation","value":"})"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"f"}, + {"type":"Punctuation","value":"("}, + {"type":"Operator","value":"::"}, + {"type":"Name","value":"typeof"}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"sin"}, + {"type":"Punctuation","value":"))"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordType","value":"MyInt"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u003c:"}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"Integer"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordType","value":"Number"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u003e:"}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"MyInt"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordType","value":"AT"}, + {"type":"Punctuation","value":"{"}, + {"type":"KeywordType","value":"T"}, + {"type":"Punctuation","value":","}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u003c:"}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"B"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordType","value":"B"}, + {"type":"Operator","value":"\u003e:"}, + {"type":"KeywordType","value":"AT"}, + {"type":"Punctuation","value":"{"}, + {"type":"KeywordType","value":"T"}, + {"type":"Punctuation","value":","}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordType","value":"A"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u003c:"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"f"}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"B"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"g"}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"C"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u003c:"}, + {"type":"Text","value":" "}, + {"type":"KeywordType","value":"T"}, {"type":"Text","value":"\n"} ]