diff --git a/README.md b/README.md index e47c88c87..8da1ee3de 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ N | NASM, Newspeak, Nginx configuration file, Nim, Nix O | Objective-C, OCaml, Octave, OpenSCAD, Org Mode P | PacmanConf, Perl, PHP, PHTML, Pig, PkgConfig, PL/pgSQL, plaintext, Pony, PostgreSQL SQL dialect, PostScript, POVRay, PowerShell, Prolog, PromQL, Protocol Buffer, Puppet, Python, Python 3 Q | QBasic -R | R, Racket, Ragel, react, ReasonML, reg, reStructuredText, Rexx, Ruby, Rust +R | R, Racket, Ragel, Raku, react, ReasonML, reg, reStructuredText, Rexx, Ruby, Rust S | SAS, Sass, Scala, Scheme, Scilab, SCSS, Smalltalk, Smarty, Snobol, Solidity, SPARQL, SQL, SquidConf, Standard ML, Stylus, Swift, SYSTEMD, systemverilog T | TableGen, TASM, Tcl, Tcsh, Termcap, Terminfo, Terraform, TeX, Thrift, TOML, TradingView, Transact-SQL, Turing, Turtle, Twig, TypeScript, TypoScript, TypoScriptCssData, TypoScriptHtmlData V | VB.net, verilog, VHDL, VimL, vue @@ -260,7 +260,7 @@ go get -u github.com/alecthomas/chroma/cmd/chroma - Quite a few lexers, for various reasons (pull-requests welcome): - Pygments lexers for complex languages often include custom code to - handle certain aspects, such as Perl6's ability to nest code inside + handle certain aspects, such as Raku's ability to nest code inside regular expressions. These require time and effort to convert. - I mostly only converted languages I had heard of, to reduce the porting cost. - Some more esoteric features of Pygments are omitted for simplicity. diff --git a/lexers/r/raku.go b/lexers/r/raku.go new file mode 100644 index 000000000..71353b8ee --- /dev/null +++ b/lexers/r/raku.go @@ -0,0 +1,1513 @@ +package r + +import ( + "regexp" + "sort" + "strings" + "unicode/utf8" + + . "github.com/alecthomas/chroma" // nolint + "github.com/alecthomas/chroma/lexers/internal" + "github.com/dlclark/regexp2" +) + +// Raku lexer. +var Raku Lexer = internal.Register(MustNewLexer( + &Config{ + Name: "Raku", + Aliases: []string{"perl6", "pl6", "raku"}, + Filenames: []string{ + "*.pl", "*.pm", "*.nqp", "*.p6", "*.6pl", "*.p6l", "*.pl6", "*.6pm", + "*.p6m", "*.pm6", "*.t", "*.raku", "*.rakumod", "*.rakutest", "*.rakudoc", + }, + MimeTypes: []string{ + "text/x-perl6", "application/x-perl6", + "text/x-raku", "application/x-raku", + }, + DotAll: true, + }, + RakuRules, +)) + +// Raku rules +// Empty capture groups are placeholders and will be replaced by bracketsFinder. +// DO NOT REMOVE THEM! +var RakuRules = Rules{ + "root": { + Include("common"), + {`\{|\}|\(|\)|\[|\]`, Punctuation, nil}, + {`.+?`, Text, nil}, + }, + "common": { + {`^#![^\n]*$`, CommentHashbang, nil}, + Include("pod"), + // Multi-line, Embedded comment + { + "#`((" + bracketsPattern + `)(\2)*)`, + CommentMultiline, + bracketsFinder(rakuMultilineComment), + }, + {`#[^\n]*$`, CommentSingle, nil}, + // /regex/ + { + `(?<=(?:^|\(|=|:|~~|\[|,|=>)\s*)(/)(?!\]|\))((?:\\\\|\\/|.)*?)((?>)(\S+?)(<<)`, ByGroups(Operator, UsingSelf("root"), Operator), nil}, + {`(»)(\S+?)(«)`, ByGroups(Operator, UsingSelf("root"), Operator), nil}, + // <> + {`(?>)[^\n])+?[},;] *\n)(?!(?:(?!>>).)+?>>\S+?>>)`, Punctuation, Push("<<")}, + // «quoted words» + {`(? operators | something < onething > something + { + `(?<=[$@%&]?\w[\w':-]* +)(<=?)( *[^ ]+? *)(>=?)(?= *[$@%&]?\w[\w':-]*)`, + ByGroups(Operator, UsingSelf("root"), Operator), + nil, + }, + // + { + `(?])+?)(>)(?!\s*(?:\d+|\.(?:Int|Numeric)|[$@%]\w[\w':-]*[^(]|\[))`, + ByGroups(Punctuation, String, Punctuation), + nil, + }, + {`C?X::['\w:-]+`, NameException, nil}, + Include("metaoperator"), + // Pair | (key) => value + { + `(\([^)]+\))(\s*)(=>)(\s*)([^,\n]+)(,?\n*)`, + ByGroups(UsingSelf("root"), Text, Operator, Text, UsingSelf("root"), Text), + nil, + }, + // Pair | key => value + { + `(\w[\w'-]*)(\s*)(=>)(\s*)([^,\n]+)(,?\n*)`, + ByGroups(String, Text, Operator, Text, UsingSelf("root"), Text), + nil, + }, + Include("colon-pair"), + // Token + { + // Token with adverbs + `(?<=(?:^|\s)(?:regex|token|rule)(\s+))(['\w:-]+)(?=:['\w-]+` + + colonPairOpeningBrackets + `.+?` + colonPairClosingBrackets + `[({])`, + NameFunction, + Push("token", "name-adverb"), + }, + { + // Token without adverbs + `(?<=(?:^|\s)(?:regex|token|rule)(?:\s+))(['\w:-]+)`, + NameFunction, + Push("token"), + }, + // Substitution + {`(?<=^|\b|\s)(? + { + `(?)`, + ByGroups(Punctuation, Operator, Punctuation, UsingSelf("root"), Punctuation), + nil, + }, + // {code} + {`(?>|»|\+|\*\*|\*|\?|=|~|<~~>`, Operator, nil}, + // Anchors + {`\^\^|\^|\$\$|\$`, NameEntity, nil}, + {`\.`, NameEntity, nil}, + {`#[^\n]*\n`, CommentSingle, nil}, + // Lookaround + { + `(?)`, + ByGroups(Punctuation, Operator, OperatorWord, Punctuation), + nil, + }, + // <$variable> + { + `(?)`, + ByGroups(Punctuation, NameVariable, Punctuation), + nil, + }, + // Capture markers + {`(?`, Punctuation, nil}, + {`(?)`, Punctuation, Pop(1)}, + {`(?`, Punctuation, Pop(1)}, + Include("regex-class-builtin"), + Include("variable"), + // | | + { + `(?:(\w[\w-:]*)(=\.?))?(&?\w[\w'-:]+?)(\(.+?\))?(?=>)`, + ByGroups( + NameVariable, Operator, NameFunction, UsingSelf("root"), + ), + nil, + }, + // + { + `(&?\w[\w':-]*?)(:)((?:.*?(?:\$<\w[\w':-]*>)?.*?)*?)(?=>)`, + ByGroups( + NameFunction, Punctuation, UsingSelf("root"), + ), + nil, + }, + Include("colon-pair-attribute"), + {`(?] + { + `\b([RZX]+)\b(\[)([^\s\]]+?)(\])`, + ByGroups(OperatorWord, Punctuation, UsingSelf("root"), Punctuation), + nil, + }, + // Z=> + {`\b([RZX]+)\b([^\s\]]+)`, ByGroups(OperatorWord, UsingSelf("operator")), nil}, + }, + "operator": { + // Word Operator + {wordOperatorsPattern, OperatorWord, nil}, + // Operator + {operatorsPattern, Operator, nil}, + }, + "pod": { + // Single-line pod declaration + {`(#[|=])\s`, Keyword, Push("pod-single")}, + // Multi-line pod declaration + { + "(#[|=])((" + bracketsPattern + `)(\3)*)()()`, + ByGroups( + Keyword, Punctuation, Punctuation, Punctuation, UsingSelf("pod-begin"), + Punctuation, + ), + bracketsFinder(rakuPodDeclaration), + }, + Include("pod-blocks"), + }, + "pod-blocks": { + // =begin code + { + `(?<=^ *)( *)(=begin)( +)(code)([^\n]*)(.*?)(^\1=)(end)( +)(\4)`, + EmitterFunc(podCode), + nil, + }, + // =begin + { + `(?<=^ *)( *)(=begin)( +)(?!code)(\w[\w'-]*)([^\n]*)()()`, + ByGroups( + Comment, Keyword, Comment, Keyword, EmitterFunc(podConfig), + UsingSelf("pod-begin"), Keyword, + ), + bracketsFinder(rakuPod), + }, + // =for ... + { + `(?<=^ *)( *=)(for|defn)( +)(\w[\w'-]*)([^\n]*\n)`, + ByGroups(Keyword, Keyword, StringDoc, Keyword, EmitterFunc(podConfig)), + Push("pod-paragraph"), + }, + // =config + { + `(?<=^ *)( *=)(config)( +)(\w[\w'-]*)([^\n]*\n)`, + ByGroups(Keyword, Keyword, StringDoc, Keyword, EmitterFunc(podConfig)), + nil, + }, + // =alias + { + `(?<=^ *)( *=)(alias)( +)(\w[\w'-]*)([^\n]*\n)`, + ByGroups(Keyword, Keyword, StringDoc, Keyword, StringDoc), + nil, + }, + // =encoding + { + `(?<=^ *)( *=)(encoding)( +)([^\n]+)`, + ByGroups(Keyword, Keyword, StringDoc, Name), + nil, + }, + // =para ... + { + `(?<=^ *)( *=)(para|table|pod)((?, B, ... + { + `([CBIUDTKRPAELZVMSXN])(<+|«)`, + ByGroups(Keyword, Punctuation), + Mutators( + bracketsFinder(rakuPodFormatter), + Push("pod-formatter"), MutatorFunc(podFormatter), + ), + }, + }, + "pod-formatter": { + // Placeholder rule, will be replaced by podFormatter. DO NOT REMOVE! + {`>`, Punctuation, Pop(1)}, + Include("pre-pod-formatter"), + // Placeholder rule, will be replaced by podFormatter. DO NOT REMOVE! + {`.+?`, StringOther, nil}, + }, + "variable": { + {variablePattern, NameVariable, Push("name-adverb")}, + {globalVariablePattern, NameVariableGlobal, Push("name-adverb")}, + {`[$@](?:<.*?>)+`, NameVariable, nil}, + {`\$/`, NameVariable, nil}, + {`\$!`, NameVariable, nil}, + {`[$@%]`, NameVariable, nil}, + }, + "single-quote": { + {`(?>(?!\s*(?:\d+|\.(?:Int|Numeric)|[$@%][\w':-]+|\[))`, Punctuation, Pop(1)}, + Include("ww"), + }, + "«": { + {`»(?!\s*(?:\d+|\.(?:Int|Numeric)|[$@%][\w':-]+|\[))`, Punctuation, Pop(1)}, + Include("ww"), + }, + "ww": { + Include("single-quote"), + Include("qq"), + }, + "qq": { + { + `(?>|<.*?>|«*?»)+`, UsingSelf("root"), nil}, + // Method + { + `(\.)([^(\s]+)(\([^"]*?\))`, + ByGroups(Operator, NameFunction, UsingSelf("root")), + nil, + }, + Default(Pop(1)), + }, + "Q": { + Include("escape-qq"), + {`.+?`, String, nil}, + }, + "Q-closure": { + Include("escape-qq"), + Include("closure"), + {`.+?`, String, nil}, + }, + "Q-variable": { + Include("escape-qq"), + Include("variable"), + {`.+?`, String, nil}, + }, + "closure": { + {`(?>|>|»|\)|\]|\})` +const colonPairPattern = `(:)(\w[\w'-]*)(` + colonPairOpeningBrackets + `)()()` + +const variablePattern = `[$@%&]+[.^:?=!~]?` + namePattern +const globalVariablePattern = `[$@%&]+\*` + namePattern + +var keywords = []string{ + `BEGIN`, `CATCH`, `CHECK`, `CLOSE`, `CONTROL`, `DOC`, `END`, `ENTER`, `FIRST`, `INIT`, + `KEEP`, `LAST`, `LEAVE`, `NEXT`, `POST`, `PRE`, `QUIT`, `UNDO`, `anon`, `augment`, `but`, + `class`, `constant`, `default`, `does`, `else`, `elsif`, `enum`, `for`, `gather`, `given`, + `grammar`, `has`, `if`, `import`, `is`, `of`, `let`, `loop`, `made`, `make`, `method`, + `module`, `multi`, `my`, `need`, `orwith`, `our`, `proceed`, `proto`, `repeat`, `require`, + `where`, `return`, `return-rw`, `returns`, `->`, `-->`, `role`, `state`, `sub`, `no`, + `submethod`, `subset`, `succeed`, `supersede`, `try`, `unit`, `unless`, `until`, + `use`, `when`, `while`, `with`, `without`, `export`, `native`, `repr`, `required`, `rw`, + `symbol`, `default`, `cached`, `DEPRECATED`, `dynamic`, `hidden-from-backtrace`, `nodal`, + `pure`, `raw`, `start`, `react`, `supply`, `whenever`, `also`, `rule`, `token`, `regex`, + `dynamic-scope`, `built`, `temp`, +} + +var keywordsPattern = Words(`(?)`, `(>=)`, `minmax`, `notandthen`, `S`, +} + +var wordOperatorsPattern = Words(`(?<=^|\b|\s)`, `(?=$|\b|\s)`, sortWords(wordOperators)...) + +var operators = []string{ + `++`, `--`, `-`, `**`, `!`, `+`, `~`, `?`, `+^`, `~^`, `?^`, `^`, `*`, `/`, `%`, `%%`, `+&`, + `+<`, `+>`, `~&`, `~<`, `~>`, `?&`, `+|`, `+^`, `~|`, `~^`, `?`, `?|`, `?^`, `&`, `^`, + `<=>`, `^…^`, `^…`, `…^`, `…`, `...`, `...^`, `^...`, `^...^`, `..`, `..^`, `^..`, `^..^`, + `::=`, `:=`, `!=`, `==`, `<=`, `<`, `>=`, `>`, `~~`, `===`, `&&`, `||`, `|`, `^^`, `//`, + `??`, `!!`, `^fff^`, `^ff^`, `<==`, `==>`, `<<==`, `==>>`, `=>`, `=`, `<<`, `«`, `>>`, `»`, + `,`, `>>.`, `».`, `.&`, `.=`, `.^`, `.?`, `.+`, `.*`, `.`, `∘`, `∩`, `⊍`, `∪`, `⊎`, `∖`, + `⊖`, `≠`, `≤`, `≥`, `=:=`, `=~=`, `≅`, `∈`, `∉`, `≡`, `≢`, `∋`, `∌`, `⊂`, `⊄`, `⊆`, `⊈`, + `⊃`, `⊅`, `⊇`, `⊉`, `:`, `!!!`, `???`, `¯`, `×`, `÷`, `−`, `⁺`, `⁻`, +} + +var operatorsPattern = Words(``, ``, sortWords(operators)...) + +var builtinTypes = []string{ + `False`, `True`, `Order`, `More`, `Less`, `Same`, `Any`, `Array`, `Associative`, `AST`, + `atomicint`, `Attribute`, `Backtrace`, `Backtrace::Frame`, `Bag`, `Baggy`, `BagHash`, + `Blob`, `Block`, `Bool`, `Buf`, `Callable`, `CallFrame`, `Cancellation`, `Capture`, + `CArray`, `Channel`, `Code`, `compiler`, `Complex`, `ComplexStr`, `CompUnit`, + `CompUnit::PrecompilationRepository`, `CompUnit::Repository`, `Empty`, + `CompUnit::Repository::FileSystem`, `CompUnit::Repository::Installation`, `Cool`, + `CurrentThreadScheduler`, `CX::Warn`, `CX::Take`, `CX::Succeed`, `CX::Return`, `CX::Redo`, + `CX::Proceed`, `CX::Next`, `CX::Last`, `CX::Emit`, `CX::Done`, `Cursor`, `Date`, `Dateish`, + `DateTime`, `Distribution`, `Distribution::Hash`, `Distribution::Locally`, + `Distribution::Path`, `Distribution::Resource`, `Distro`, `Duration`, `Encoding`, + `Encoding::Registry`, `Endian`, `Enumeration`, `Exception`, `Failure`, `FatRat`, `Grammar`, + `Hash`, `HyperWhatever`, `Instant`, `Int`, `int`, `int16`, `int32`, `int64`, `int8`, `str`, + `IntStr`, `IO`, `IO::ArgFiles`, `IO::CatHandle`, `IO::Handle`, `IO::Notification`, + `IO::Notification::Change`, `IO::Path`, `IO::Path::Cygwin`, `IO::Path::Parts`, + `IO::Path::QNX`, `IO::Path::Unix`, `IO::Path::Win32`, `IO::Pipe`, `IO::Socket`, + `IO::Socket::Async`, `IO::Socket::Async::ListenSocket`, `IO::Socket::INET`, `IO::Spec`, + `IO::Spec::Cygwin`, `IO::Spec::QNX`, `IO::Spec::Unix`, `IO::Spec::Win32`, `IO::Special`, + `Iterable`, `Iterator`, `Junction`, `Kernel`, `Label`, `List`, `Lock`, `Lock::Async`, + `Lock::ConditionVariable`, `long`, `longlong`, `Macro`, `Map`, `Match`, + `Metamodel::AttributeContainer`, `Metamodel::C3MRO`, `Metamodel::ClassHOW`, + `Metamodel::ConcreteRoleHOW`, `Metamodel::CurriedRoleHOW`, `Metamodel::DefiniteHOW`, + `Metamodel::Documenting`, `Metamodel::EnumHOW`, `Metamodel::Finalization`, + `Metamodel::MethodContainer`, `Metamodel::Mixins`, `Metamodel::MROBasedMethodDispatch`, + `Metamodel::MultipleInheritance`, `Metamodel::Naming`, `Metamodel::Primitives`, + `Metamodel::PrivateMethodContainer`, `Metamodel::RoleContainer`, `Metamodel::RolePunning`, + `Metamodel::Stashing`, `Metamodel::Trusting`, `Metamodel::Versioning`, `Method`, `Mix`, + `MixHash`, `Mixy`, `Mu`, `NFC`, `NFD`, `NFKC`, `NFKD`, `Nil`, `Num`, `num32`, `num64`, + `Numeric`, `NumStr`, `ObjAt`, `Order`, `Pair`, `Parameter`, `Perl`, `Pod::Block`, + `Pod::Block::Code`, `Pod::Block::Comment`, `Pod::Block::Declarator`, `Pod::Block::Named`, + `Pod::Block::Para`, `Pod::Block::Table`, `Pod::Heading`, `Pod::Item`, `Pointer`, + `Positional`, `PositionalBindFailover`, `Proc`, `Proc::Async`, `Promise`, `Proxy`, + `PseudoStash`, `QuantHash`, `RaceSeq`, `Raku`, `Range`, `Rat`, `Rational`, `RatStr`, + `Real`, `Regex`, `Routine`, `Routine::WrapHandle`, `Scalar`, `Scheduler`, `Semaphore`, + `Seq`, `Sequence`, `Set`, `SetHash`, `Setty`, `Signature`, `size_t`, `Slip`, `Stash`, + `Str`, `StrDistance`, `Stringy`, `Sub`, `Submethod`, `Supplier`, `Supplier::Preserving`, + `Supply`, `Systemic`, `Tap`, `Telemetry`, `Telemetry::Instrument::Thread`, + `Telemetry::Instrument::ThreadPool`, `Telemetry::Instrument::Usage`, `Telemetry::Period`, + `Telemetry::Sampler`, `Thread`, `Test`, `ThreadPoolScheduler`, `UInt`, `uint16`, `uint32`, + `uint64`, `uint8`, `Uni`, `utf8`, `ValueObjAt`, `Variable`, `Version`, `VM`, `Whatever`, + `WhateverCode`, `WrapHandle`, `NativeCall`, + // Pragmas + `precompilation`, `experimental`, `worries`, `MONKEY-TYPING`, `MONKEY-SEE-NO-EVAL`, + `MONKEY-GUTS`, `fatal`, `lib`, `isms`, `newline`, `nqp`, `soft`, + `strict`, `trace`, `variables`, +} + +var builtinTypesPattern = Words(`(? len([]rune(words[j])) + }) + + return words +} + +// Finds the index of substring in the string starting at position n +func indexAt(str []rune, substr []rune, pos int) int { + var text = string(str[pos:]) + + idx := strings.Index(text, string(substr)) + if idx > -1 { + idx = utf8.RuneCountInString(text[:idx]) + idx += pos + } + + return idx +} + +// Tells if an array of string contains a string +func contains(s []string, e string) bool { + for _, value := range s { + if value == e { + return true + } + } + return false +} + +// Finds opening brackets and their closing counterparts (including pod and heredoc) +// and modifies state groups and position accordingly +func bracketsFinder(tokenClass RakuToken) MutatorFunc { + return func(state *LexerState) error { + var openingChars []rune + var adverbs []rune + switch tokenClass { + case rakuPodDeclaration: + openingChars = []rune(state.Groups[2]) + case rakuPod: + openingChars = []rune(strings.Join(state.Groups[1:5], ``)) + case rakuPodFormatter: + openingChars = []rune(state.Groups[2]) + case rakuMultilineComment: + openingChars = []rune(state.Groups[1]) + case rakuQuote: + adverbs = []rune(state.Groups[4]) + openingChars = []rune(state.Groups[6]) + case rakuSlashRegex: + openingChars = []rune(state.Groups[1]) + case rakuSubstitutionSingleRegex, rakuSubstitutionRegex: + openingChars = []rune(state.Groups[2]) + case rakuMatchRegex: + openingChars = []rune(state.Groups[2]) + case rakuRegexInsideToken: + openingChars = []rune("{") + case rakuNameAttribute: + openingChars = []rune(state.Groups[3]) + case rakuName: + openingChars = []rune(state.Groups[1]) + } + + var openingChar = openingChars[0] + + var nChars = len(openingChars) + + var closingChar rune + var closingCharExists bool + var closingChars []rune + + switch tokenClass { + case rakuPod: + closingChars = []rune(state.Groups[1] + `=end ` + state.Groups[4]) + closingCharExists = true + default: + closingChar, closingCharExists = brackets[openingChar] + } + + switch tokenClass { + case rakuPodFormatter: + var stack, ok = state.Get("pod_formatter_stack").([]RakuFormatterRules) + if !ok { + stack = []RakuFormatterRules{} + } + var popRule = makeRuleAndPushMaybe(RuleMakingConfig{ + delimiter: []rune{closingChar}, + numberOfDelimiterChars: nChars, + tokenType: Punctuation, + mutator: Mutators(Pop(1), MutatorFunc(podFormatterPopper)), + }) + var formatter TokenType = StringOther + switch state.Groups[1] { + case "B": + formatter = GenericStrong + case "I": + formatter = GenericEmph + case "U": + formatter = GenericUnderline + } + var formattingRule = makeRuleAndPushMaybe(RuleMakingConfig{ + pattern: `.+?`, + tokenType: formatter, + mutator: nil, + }) + state.Set("pod_formatter_stack", + append(stack, RakuFormatterRules{popRule, formattingRule})) + + return nil + case rakuSlashRegex, rakuMatchRegex, rakuSubstitutionRegex, + rakuSubstitutionSingleRegex, rakuRegexInsideToken: + // We're inside a regex! + + switch tokenClass { + // If the regex knows its own delimiter and uses `UsingSelf("regex")`, then we only + // put a placeholder rule at the top of "regex" state and return + case rakuSlashRegex, rakuSubstitutionRegex: + makeRuleAndPushMaybe(RuleMakingConfig{ + pattern: `^$`, + rulePosition: topRule, + state: state, + stateName: "regex", + }) + + return nil + default: + // While matching a regex, the closing chars may have been used inside the regex + // so we have to push to regex state and pop on the matched closing chars + // and return + var delimiter []rune + if closingCharExists { + delimiter = []rune{closingChar} + } else { + delimiter = openingChars + } + + makeRuleAndPushMaybe(RuleMakingConfig{ + delimiter: delimiter, + tokenType: Punctuation, + mutator: Pop(1), + rulePosition: topRule, + state: state, + stateName: "regex", + pushToStack: true, + numberOfDelimiterChars: nChars, + }) + + // Remove inner punctuation matches + switch tokenClass { + case rakuMatchRegex, rakuSubstitutionSingleRegex: + state.Groups[3] = "" + state.Groups[4] = "" + } + + return nil + } + } + + var text = state.Text + + var endPos int + + var nonMirroredOpeningCharPosition int + + if !closingCharExists { + // it's not a mirrored character, which means we + // just need to look for the next occurrence + nonMirroredOpeningCharPosition = indexAt(text, openingChars, state.Pos) + endPos = nonMirroredOpeningCharPosition + } else { + if tokenClass != rakuPod { + closingChars = []rune(strings.Repeat(string(closingChar), nChars)) + } + + // we need to look for the corresponding closing character, + // keep nesting in mind + var nestingLevel = 1 + + var searchPos = state.Pos - nChars + + var nextClosePos int + + for nestingLevel > 0 { + var nextOpenPos = indexAt(text, openingChars, searchPos+nChars) + nextClosePos = indexAt(text, closingChars, searchPos+nChars) + + switch { + case nextClosePos == -1: + nextClosePos = len(text) + nestingLevel = 0 + case nextOpenPos != -1 && nextOpenPos < nextClosePos: + nestingLevel++ + nChars = len(openingChars) + searchPos = nextOpenPos + default: // next_close_pos < next_open_pos + nestingLevel-- + nChars = len(closingChars) + searchPos = nextClosePos + } + } + + endPos = nextClosePos + } + + if endPos < 0 { + // if we didn't find a closer, just highlight the + // rest of the text in this class + endPos = len(text) + } + + var adverbre = regexp.MustCompile(`:to\b|:heredoc\b`) + var heredocTerminator []rune + if adverbre.MatchString(string(adverbs)) { + heredocTerminator = text[state.Pos-1+nChars : endPos] + if len(heredocTerminator) > 0 { + var endHeredocPos = indexAt(text[endPos:], heredocTerminator, 0) + nChars = len(heredocTerminator) + endPos += endHeredocPos + } else { + endPos = len(text) + } + } + + var textBetweenBrackets = string(text[state.Pos:endPos]) + switch tokenClass { + case rakuPodDeclaration: + state.Groups[3] = "" + state.Groups[4] = "" + state.Groups[5] = textBetweenBrackets + state.Groups[6] = string(closingChars) + case rakuPod: + state.Groups[6] = textBetweenBrackets + state.Groups[7] = string(closingChars) + case rakuQuote: + state.Groups[7] = "" + state.Groups[8] = "" + if len(heredocTerminator) > 0 { + // Length of heredoc terminator + closing chars + `;` + var heredocFristPunctuationLen = len(heredocTerminator) + len(openingChars) + 1 + + state.Groups[6] = string(openingChars) + + string(text[state.Pos:state.Pos+heredocFristPunctuationLen]) + + state.Groups[9] = + string(text[state.Pos+heredocFristPunctuationLen : endPos]) + + state.Groups[10] = string(heredocTerminator) + } else { + state.Groups[9] = textBetweenBrackets + state.Groups[10] = string(closingChars) + } + case rakuNameAttribute: + state.Groups[4] = textBetweenBrackets + state.Groups[5] = string(closingChars) + default: + state.Groups = []string{state.Groups[0] + string(text[state.Pos:endPos+nChars])} + } + + state.Pos = endPos + nChars + + return nil + } +} + +type RakuFormatterRules struct { + pop, formatter *CompiledRule +} + +// Pop from the pod_formatter_stack and reformat the pod code +func podFormatterPopper(state *LexerState) error { + var stack, ok = state.Get("pod_formatter_stack").([]RakuFormatterRules) + + if ok && len(stack) > 0 { + // Pop from stack + stack = stack[:len(stack)-1] + state.Set("pod_formatter_stack", stack) + // Call podFormatter to use the last formatter rules + err := podFormatter(state) + if err != nil { + panic(err) + } + } + + return nil +} + +// Use the rules from pod_formatter_stack to format the pod code +func podFormatter(state *LexerState) error { + var stack, ok = state.Get("pod_formatter_stack").([]RakuFormatterRules) + if ok && len(stack) > 0 { + var rules = stack[len(stack)-1] + state.Rules["pod-formatter"][0] = rules.pop + state.Rules["pod-formatter"][len(state.Rules["pod-formatter"])-1] = rules.formatter + } + + return nil +} + +type RulePosition int + +const ( + topRule RulePosition = iota + 1000 + bottomRule +) + +type RuleMakingConfig struct { + delimiter []rune + pattern string + tokenType TokenType + mutator Mutator + rulePosition RulePosition + state *LexerState + stateName string + pushToStack bool + numberOfDelimiterChars int +} + +// Makes compiled rules and returns them, If rule position is given, rules are added to the state +// If pushToStack is true, state name will be added to the state stack +func makeRuleAndPushMaybe(config RuleMakingConfig) *CompiledRule { + var rePattern string + if len(config.delimiter) > 0 { + var delimiter = strings.Repeat(string(config.delimiter), config.numberOfDelimiterChars) + rePattern = regexp2.Escape(delimiter) + } else { + rePattern = config.pattern + } + var regex = regexp2.MustCompile(rePattern, regexp2.None) + + var cRule = &CompiledRule{ + Rule: Rule{rePattern, config.tokenType, config.mutator}, + Regexp: regex, + } + var state = config.state + var stateName = config.stateName + switch config.rulePosition { + case topRule: + state.Rules[stateName] = + append([]*CompiledRule{cRule}, state.Rules[stateName][1:]...) + case bottomRule: + state.Rules[stateName] = + append(state.Rules[stateName][:len(state.Rules[stateName])-1], cRule) + } + + // Push state name to stack if asked + if config.pushToStack { + state.Stack = append(state.Stack, config.stateName) + } + + return cRule +} + +// Emitter for colon pairs, changes token state based on key and brackets +func colonPair(tokenClass TokenType) Emitter { + return EmitterFunc(func(groups []string, lexer Lexer) Iterator { + iterators := []Iterator{} + tokens := []Token{ + {Punctuation, groups[1]}, + {Punctuation, groups[3]}, + {Punctuation, groups[5]}, + } + + // Append colon + iterators = append(iterators, Literator(tokens[0])) + + if tokenClass == NameAttribute { + iterators = append(iterators, Literator(Token{NameAttribute, groups[2]})) + } else { + var keyTokenState string + var keyre = regexp.MustCompile(`^\d+$`) + if keyre.MatchString(groups[2]) { + keyTokenState = "common" + } else { + keyTokenState = "Q" + } + + // Use token state to Tokenise key + if keyTokenState != "" { + var iterator, err = lexer.Tokenise( + &TokeniseOptions{ + State: keyTokenState, + Nested: true, + }, groups[2]) + + if err != nil { + panic(err) + } else { + // Append key + iterators = append(iterators, iterator) + } + } + } + + // Append punctuation + iterators = append(iterators, Literator(tokens[1])) + + var valueTokenState string + + switch groups[3] { + case "(", "{", "[": + valueTokenState = "root" + case "<<", "«": + valueTokenState = "ww" + case "<": + valueTokenState = "Q" + } + + // Use token state to Tokenise value + if valueTokenState != "" { + var iterator, err = lexer.Tokenise( + &TokeniseOptions{ + State: valueTokenState, + Nested: true, + }, groups[4]) + + if err != nil { + panic(err) + } else { + // Append value + iterators = append(iterators, iterator) + } + } + iterators = append(iterators, Literator(tokens[2])) + + return Concaterator(iterators...) + }) +} + +// Emitter for quoting constructs, changes token state based on quote name and adverbs +func quote(groups []string, lexer Lexer) Iterator { + iterators := []Iterator{} + tokens := []Token{ + {Keyword, groups[1]}, + {StringAffix, groups[2]}, + {Text, groups[3]}, + {StringAffix, groups[4]}, + {Text, groups[5]}, + {Punctuation, groups[6]}, + {Punctuation, groups[10]}, + } + + var tokenStates []string + + // Set tokenStates based on adverbs + var adverbs = strings.Split(groups[4], ":") + for _, adverb := range adverbs { + switch adverb { + case "c", "closure": + tokenStates = append(tokenStates, "Q-closure") + case "qq": + tokenStates = append(tokenStates, "qq") + case "ww": + tokenStates = append(tokenStates, "ww") + case "s", "scalar", "a", "array", "h", "hash", "f", "function": + tokenStates = append(tokenStates, "Q-variable") + } + } + + // Append all tokens before dealing with the main string + iterators = append(iterators, Literator(tokens[:6]...)) + + var tokenState string + + switch { + case groups[1] == "qq" || contains(tokenStates, "qq"): + tokenState = "qq" + case groups[2] == "ww" || contains(tokenStates, "ww"): + tokenState = "ww" + case contains(tokenStates, "Q-closure") && contains(tokenStates, "Q-variable"): + tokenState = "qq" + case contains(tokenStates, "Q-closure"): + tokenState = "Q-closure" + case contains(tokenStates, "Q-variable"): + tokenState = "Q-variable" + default: + tokenState = "Q" + } + + var iterator, err = lexer.Tokenise( + &TokeniseOptions{ + State: tokenState, + Nested: true, + }, groups[9]) + + if err != nil { + panic(err) + } else { + iterators = append(iterators, iterator) + } + + // Append the last punctuation + iterators = append(iterators, Literator(tokens[6])) + + return Concaterator(iterators...) +} + +// Emitter for pod config, tokenises the properties with "colon-pair-attribute" state +func podConfig(groups []string, lexer Lexer) Iterator { + // Tokenise pod config + var iterator, err = lexer.Tokenise( + &TokeniseOptions{ + State: "colon-pair-attribute", + Nested: true, + }, groups[0]) + + if err != nil { + panic(err) + } else { + return iterator + } +} + +// Emitter for pod code, tokenises the code based on the lang specified +func podCode(groups []string, lexer Lexer) Iterator { + iterators := []Iterator{} + tokens := []Token{ + {Keyword, groups[1]}, + {Keyword, groups[2]}, + {Keyword, groups[3]}, + {Keyword, groups[4]}, + {StringDoc, groups[6]}, + {Keyword, groups[7]}, + {Keyword, groups[8]}, + {Keyword, groups[9]}, + {Keyword, groups[10]}, + } + + // Append all tokens before dealing with the pod config + iterators = append(iterators, Literator(tokens[:4]...)) + + // Tokenise pod config + iterators = append(iterators, podConfig([]string{groups[5]}, lexer)) + + var langMatch = regexp.MustCompile(`:lang\W+(\w+)`).FindStringSubmatch(groups[5]) + var lang string + if len(langMatch) > 1 { + lang = langMatch[1] + } + + // Tokenise code based on lang property + var sublexer = internal.Get(lang) + if sublexer != nil { + var codeIterator, codeIteratorError = sublexer.Tokenise(nil, groups[6]) + + if codeIteratorError != nil { + panic(codeIteratorError) + } else { + iterators = append(iterators, codeIterator) + } + } else { + iterators = append(iterators, Literator(tokens[4])) + } + + // Append the rest of the tokens + iterators = append(iterators, Literator(tokens[5:]...)) + + return Concaterator(iterators...) +} diff --git a/lexers/testdata/raku.actual b/lexers/testdata/raku.actual new file mode 100644 index 000000000..fd1aa98b5 --- /dev/null +++ b/lexers/testdata/raku.actual @@ -0,0 +1,390 @@ +#!/usr/bin/env raku + +=begin pod +=head1 Some test data for B + +=begin code :lang +fmt.Println("Hello from Go") +=end code + +=for defn :numbered + We + Need + Numbers + +=end pod + +say $=pod[0].config; + +#| Fibonacci with Multiple dispatch +multi sub fib (0 --> 0) {} +multi sub fib (1 --> 1) {} +multi sub fib (\n where * > 1) { + fib(n - 1) + fib(n - 2) +} +say fib 10; +# OUTPUT: 55 + +#| C role +role Shape { + method area { ... } + + method print_area { + say "Area of {self.^name} is {self.area}."; + } +} + +class Rectangle does Shape { + has $.width is required; + has $.height is required; + + method area { + $!width * $!height + } +} + +Rectangle.new(width => 5, height => 7).print_area; + +# Inifinite and lazy list +my @fib = 0, 1, * + * ... ∞; +say @fib[^11]; +# OUTPUT: (0 1 1 2 3 5 8 13 21 34 55) + +# Feed operator +@fib[^20] ==> grep(&is-prime) ==> say(); +# OUTPUT: (2 3 5 13 89 233 1597) + +# Function composition +my &reverse_primes = &reverse ∘ &grep.assuming(&is-prime); +say reverse_primes ^20; +# OUTPUT: (19 17 13 11 7 5 3 2) + +my @a = 1..4; +my @b = 'a'..'d'; +# Zip two lists using Z meta operator +say @a Z @b; +# OUTPUT: ((1 a) (2 b) (3 c) (4 d)) +say @a Z=> @b; +# OUTPUT: (1 => a 2 => b 3 => c 4 => d) +say [\R<] 1, 5, 6; + +# Hyper Operators +say @b «~» @a; +# OUTPUT: [a1 b2 c3 d4] + +# Junctions +say 'Find all the words starting with a lowercase vowel'.words.grep: *.starts-with: any ; + +sub MAIN( + Str $file where *.IO.f = 'file.dat', #= an existing file to frobnicate + Int :size(:$length) = 24, #= length/size needed for frobnication + Bool :$verbose, #= required verbosity +) { + say $length if $length.defined; + say $file if $file.defined; + say 'Verbosity ', ($verbose ?? 'on' !! 'off'); +} + +#|「[ +INI Parser +C +=head1 heading +]」 +grammar INIParser { + token TOP {
* } + token section {
} + token header { '[' ~ ']' \w+ \n+ } + token block { [ | ]* } + rule pair { '=' } + token comment { ';' \N* \n+ } + token key { \w+ } + token value { <-[\n ;]>+ } +} + +my $match = INIParser.parse: q:to/END/; +; Comment +key1=value1 +key2 = value2 + +; Section 1 +[section1] +key3=value3 +END + + +say $match[0]; +# OUTPUT: 「value1」 + +say $match
[0][0]; +# OUTPUT: 「value3」 + +# Promise +my $promise = start { + my $i = 0; + for 1 .. 10 { + $i += $_ + } + $i +} +my $result = await $promise; +say $result; +# OUTPUT: 55 + +# Supply +my $bread-supplier = Supplier.new; +my $vegetable-supplier = Supplier.new; + +my $supply = supply { + whenever $bread-supplier.Supply { + emit("We've got bread: " ~ $_); + }; + whenever $vegetable-supplier.Supply { + emit("We've got a vegetable: " ~ $_); + }; +} +$supply.tap(-> $v { say "$v" }); + +$vegetable-supplier.emit("Radish"); +# OUTPUT: «We've got a vegetable: Radish␤» +$bread-supplier.emit("Thick sliced"); +# OUTPUT: «We've got bread: Thick sliced␤» +$vegetable-supplier.emit("Lettuce"); +# OUTPUT: «We've got a vegetable: Lettuce␤» + +say (1, 2, 3) »+« (4, 5, 6); +say (1, 2, 3, 4) »~» ; +say (&sin, &cos, &sqrt)».(0.5); +say (, )».&{ .elems }; +say << '>>' >>; +say "stuff here!!!".subst(:g, /<>; + +say [1,2,3] (&) [2,5,7]; +say [1,2,3] ∩ [2,5,7]; +say 2 =:= 3; +say [1,2,3] Z [4,5,6]; +[1,2,3] RZ[=>] [4,5,6]; + +rx/:i + \w+ # some comment + 'text' + \d ** 2..5 + "double quotes!" + + <:N + alpha>+ + <{1 + 2}> + <:madeup> + '[' \w+ ']' || \S+ \s* '=' \s* \S* + || '[' \w+ ']' + || \S+ \s* '=' \s* \S* + <:Script('Latin')> + <:Block> + if | if <.ws> else $0 + <:Lu+:N> + < f fo foo food > + <:L + :!N> + <[ a .. c 1 2 3 ]>* + @variable + <[\d] - [13579]> + && . + <:Zs + [\x9] - [\xA0]> + ^ raku $ + ^ raku$ + [^raku$|something$]else$ + <[ \x[00C0] .. \x[00C6] ]>* + two<|w>\-<|w>words + <[\c[GREEK SMALL LETTER ALPHA]..\c[GREEK SMALL LETTER GAMMA]]>* + twowords + << br >> + own » + ^^ \d+ + ^^ \d+ > + abc + abc + <:Lu>\S+ + [ ab || cbc ] + (a || b)+ + [a||b] (c) + (\d) ($0) + (\d) {} :my $c = $0; ($c) + :my $counter = 0; ( \V* { ++$counter } ) *%% \n + (a) b {} :my $c2 = $/; + test + (a) {say "Check so far ", ~$/} b :my $c3 = ~$0; + { say 'hi' } + + $ = [ \w+ ] + + $=( [ $=[abc] ]* % '-' ) + $=\w+ '=' $=\w+ + a <( b )> c + <(a <( b )> c)> + '(' ~ ')' + $ = '(' [ $GOAL || ] + ~ ')' \d+ + '(' <-[()]>* ')' || '('[ <-[()]>* <~~> <-[()]>* ]* ')' + @=<.ident> + <.named-regex> + <&named-regex> + + + + <$test> + <@test> + $(1 + 2; $test) + $pattern3.flip # Nil + "$pattern3.flip()" + $([~] $pattern3.comb.reverse) + @(%h.keys) + \d ** 1..3 = 0 }> + $/; + +constant \something:some = 'something'; + +my %hash = %( + query => something, + qq => 'something', + :23year, + m => $test, + :yes, + :!yes, + (Less) => $test, +); + +my %hash2 = %( + :query(something), + :qq, + :m(something), + :23('a'), + :test, + :query1{1 + 2} + :list[1,2,3] +); + +=for comment +some comment + +=table + |col| + |row| + +say Q[「some $text」]; +say qq「「some $regex text」」; +say qww「「some $variable 'some text' text」」; +say q:ww「「some $variable 'some text' text」」; +say q:w「「some $variable 'some text' text」」; +say qq:w「「some $regex 'some text' text」」; +say Q:c「「some $regex 'some text' { 2 + 1 } text」」; +say q:a「「some @array 'some text' { 2 + 1 } text」」; +say Q:a:c「「some @array 'some text' { 2 + 1 } text」」; +Q[some \qq[$variable.method()] testing] +Q:a:c[some \qq[$variable.method()] testing] +say Q:c:h「Testing {'toasting'} %h」; +say Q:c:h「Testing {'toasting'} %h」; +say Q:c:h「Testing {'toasting'} %h<>」; +say Q:c:h「Testing {'toasting'} %h«one»」; +say Q:b[Testing]; +'some \qq[$variable.method()] testing'; +'somes\' testing'; +"some \qq[$variable.method()] testing"; +"some $variable.method() testing"; +"some $variable:some.method() testing"; +"some $variable:some('adverb').method() testing"; +"some func() testing"; +"some func:some() testing"; +say "Something foo(2) $a.succ(2+3, $some_variable) $a.some-method() @more $_.Str(2) $_: { $_ * 2 }"; + +#`[[ +multiline comment] +]] + +my $regex = /'match' \s* <[:-]> \s* \w 'something'/; + +say S/some/a/ given $text; +say s/some/a/; +say S%some%a% given $text; +say $text ~~ s/(some) \d+ $=/a $0/; +say $text ~~ s:Pos(2)/(some)/$0/; +say $text ~~ s%some%a%; +say $text ~~ s%s(.)me%a$0%; +say $text ~~ s:r/some/a/; +say $text ~~ m/^text [:i \d+]$/; +say $text ~~ m:s/^<{2+5}>$/; +say $text ~~ m%^text$%; +say $text ~~ /^text$/; +say $text ~~ tr/abcde/12345/; +s{\w+} = 'test'; + +say 1+1i; + +CATCH { + when X::AdHoc {} + when CX::Warn {} +} + +say Q:heredoc「FINISH」; +some long +text +here. +FINISH + +$*IN.lines.first: { .say and .so with %a{.Int cmp n}} + +#| Grammar C +grammar G { + rule TOP { } + rule function-define { + :my \var = 'something'; + 'sub' + { + say "func " ~ $.made; + make $.made; + } + '(' ')' '{' '}' + { say "end " ~ $/.made; } + } + token identifier { \w+ { make ~$/; } } + token parameter { \w+ { say "param " ~ $/; } } + token token { \w+ { say "param " ~ $/; } } +} + +use Some::Module; +use Some::Module:auth:ver(v1.0.0); + +notes $trip: "Almost there"; + +LABEL: +for { +} + +#|[[ +multiline pod declaration] +]] + +grammar Calculator { + token TOP { } + + proto rule calc-op {*} + proto rule calc-op($a) {*} + rule calc-op:sym { '+' } + rule calc-op:sym { ':' '+' } + rule calc-op:sym($a) { '-' } + + token num { \d+ } +} + +class Calculations { + method TOP ($/) { make $.made; } + method calc-op:sym ($/) { make [+] $; } + method calc-op:sym ($/) { make [-] $; } + method calc-op:sym($/) { make [-] $; } + method calc-op:sym($/) { make [-] $; } + method calc-op:sym { make [-] $; } +} + +say Calculator.parse('2 + 3', actions => Calculations).made; + +=finish +C Date.today.year; +# Output: 2020 +B Date.today.later(:2years).year; \ No newline at end of file diff --git a/lexers/testdata/raku.expected b/lexers/testdata/raku.expected new file mode 100644 index 000000000..e3bcbf578 --- /dev/null +++ b/lexers/testdata/raku.expected @@ -0,0 +1,3204 @@ +[ + {"type":"CommentHashbang","value":"#!/usr/bin/env raku"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"=begin"}, + {"type":"Comment","value":" "}, + {"type":"Keyword","value":"pod"}, + {"type":"LiteralStringDoc","value":"\n"}, + {"type":"Keyword","value":"=head1"}, + {"type":"GenericHeading","value":" Some test data for "}, + {"type":"Keyword","value":"B"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"GenericStrong","value":"Chroma"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"GenericHeading","value":"\n"}, + {"type":"LiteralStringDoc","value":"\n"}, + {"type":"Keyword","value":"=begin code"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"lang"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"go"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":"\n"}, + {"type":"NameOther","value":"fmt"}, + {"type":"Punctuation","value":"."}, + {"type":"NameFunction","value":"Println"}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralString","value":"\"Hello from Go\""}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"=end code"}, + {"type":"LiteralStringDoc","value":"\n\n"}, + {"type":"Keyword","value":"=for"}, + {"type":"LiteralStringDoc","value":" "}, + {"type":"Keyword","value":"defn"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"numbered"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringDoc","value":" We\n Need\n Numbers\n\n"}, + {"type":"Keyword","value":"=end pod"}, + {"type":"Text","value":"\n\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$=pod"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Punctuation","value":"]"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"config"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"numbered"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":";\n\n"}, + {"type":"Keyword","value":"#| "}, + {"type":"LiteralStringDoc","value":"Fibonacci with Multiple dispatch\n"}, + {"type":"Keyword","value":"multi"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"sub"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"fib"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"--\u003e"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{}"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"multi"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"sub"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"fib"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"--\u003e"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{}"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"multi"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"sub"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"fib"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"Text","value":"\\"}, + {"type":"Name","value":"n"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"where"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"*"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u003e"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"NameFunction","value":"fib"}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"n"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"-"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"fib"}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"n"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"-"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"fib"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"10"}, + {"type":"Text","value":";\n"}, + {"type":"CommentSingle","value":"# OUTPUT: 55"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"#| C"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralStringOther","value":"Shape"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringDoc","value":" role\n"}, + {"type":"Keyword","value":"role"}, + {"type":"Text","value":" "}, + {"type":"NameClass","value":"Shape"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"method"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"area"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"..."}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n\n "}, + {"type":"Keyword","value":"method"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"print_area"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"Area of "}, + {"type":"Punctuation","value":"{"}, + {"type":"NameBuiltin","value":"self"}, + {"type":"Operator","value":".^"}, + {"type":"NameBuiltin","value":"name"}, + {"type":"Punctuation","value":"}"}, + {"type":"LiteralStringDouble","value":" is "}, + {"type":"Punctuation","value":"{"}, + {"type":"NameBuiltin","value":"self"}, + {"type":"Operator","value":"."}, + {"type":"NameFunction","value":"area"}, + {"type":"Punctuation","value":"}"}, + {"type":"LiteralStringDouble","value":"."}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":";\n "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"class"}, + {"type":"Text","value":" "}, + {"type":"NameClass","value":"Rectangle"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"does"}, + {"type":"Text","value":" "}, + {"type":"NameClass","value":"Shape"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"has"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$.width"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"is"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"required"}, + {"type":"Text","value":";\n "}, + {"type":"Keyword","value":"has"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$.height"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"is"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"required"}, + {"type":"Text","value":";\n\n "}, + {"type":"Keyword","value":"method"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"area"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"NameVariable","value":"$!width"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"*"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$!height"}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n\n"}, + {"type":"Name","value":"Rectangle"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"new"}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralString","value":"width"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"=\u003e"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"5"}, + {"type":"Text","value":", "}, + {"type":"LiteralString","value":"height"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"=\u003e"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"7"}, + {"type":"Punctuation","value":")"}, + {"type":"Operator","value":"."}, + {"type":"NameFunction","value":"print_area"}, + {"type":"Text","value":";\n\n"}, + {"type":"CommentSingle","value":"# Inifinite and lazy list"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"@fib"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"*"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"*"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"..."}, + {"type":"Text","value":" "}, + {"type":"NameConstant","value":"∞"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"@fib"}, + {"type":"Punctuation","value":"["}, + {"type":"Operator","value":"^"}, + {"type":"LiteralNumberInteger","value":"11"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":";\n"}, + {"type":"CommentSingle","value":"# OUTPUT: (0 1 1 2 3 5 8 13 21 34 55)"}, + {"type":"Text","value":"\n\n"}, + {"type":"CommentSingle","value":"# Feed operator"}, + {"type":"Text","value":"\n"}, + {"type":"NameVariable","value":"@fib"}, + {"type":"Punctuation","value":"["}, + {"type":"Operator","value":"^"}, + {"type":"LiteralNumberInteger","value":"20"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"==\u003e"}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"grep"}, + {"type":"Punctuation","value":"("}, + {"type":"NameVariable","value":"\u0026is-prime"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"==\u003e"}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Punctuation","value":"()"}, + {"type":"Text","value":";\n"}, + {"type":"CommentSingle","value":"# OUTPUT: (2 3 5 13 89 233 1597)"}, + {"type":"Text","value":"\n\n"}, + {"type":"CommentSingle","value":"# Function composition"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"\u0026reverse_primes"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"\u0026reverse"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"∘"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"\u0026grep"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"assuming"}, + {"type":"Punctuation","value":"("}, + {"type":"NameVariable","value":"\u0026is-prime"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"reverse_primes"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"^"}, + {"type":"LiteralNumberInteger","value":"20"}, + {"type":"Text","value":";\n"}, + {"type":"CommentSingle","value":"# OUTPUT: (19 17 13 11 7 5 3 2)"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"@a"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":".."}, + {"type":"LiteralNumberInteger","value":"4"}, + {"type":"Text","value":";\n"}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"@b"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"a"}, + {"type":"Punctuation","value":"'"}, + {"type":"Operator","value":".."}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"d"}, + {"type":"Punctuation","value":"'"}, + {"type":"Text","value":";\n"}, + {"type":"CommentSingle","value":"# Zip two lists using Z meta operator"}, + {"type":"Text","value":"\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"@a"}, + {"type":"Text","value":" "}, + {"type":"OperatorWord","value":"Z"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"@b"}, + {"type":"Text","value":";\n"}, + {"type":"CommentSingle","value":"# OUTPUT: ((1 a) (2 b) (3 c) (4 d))"}, + {"type":"Text","value":"\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"@a"}, + {"type":"Text","value":" "}, + {"type":"OperatorWord","value":"Z"}, + {"type":"Operator","value":"=\u003e"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"@b"}, + {"type":"Text","value":";\n"}, + {"type":"CommentSingle","value":"# OUTPUT: (1 =\u003e a 2 =\u003e b 3 =\u003e c 4 =\u003e d)"}, + {"type":"Text","value":"\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"Text","value":"\\"}, + {"type":"OperatorWord","value":"R"}, + {"type":"Operator","value":"\u003c"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"5"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"6"}, + {"type":"Text","value":";\n\n"}, + {"type":"CommentSingle","value":"# Hyper Operators"}, + {"type":"Text","value":"\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"@b"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"«~»"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"@a"}, + {"type":"Text","value":";\n"}, + {"type":"CommentSingle","value":"# OUTPUT: [a1 b2 c3 d4]"}, + {"type":"Text","value":"\n\n"}, + {"type":"CommentSingle","value":"# Junctions"}, + {"type":"Text","value":"\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"Find all the words starting with a lowercase vowel"}, + {"type":"Punctuation","value":"'"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"words"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"grep"}, + {"type":"Operator","value":":"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"*."}, + {"type":"NameBuiltin","value":"starts-with"}, + {"type":"Operator","value":":"}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"any"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"a e i o u"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":";\n\n"}, + {"type":"Keyword","value":"sub"}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"MAIN"}, + {"type":"Punctuation","value":"("}, + {"type":"Text","value":"\n "}, + {"type":"NameBuiltin","value":"Str"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$file"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"where"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"*."}, + {"type":"NameBuiltin","value":"IO"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"f"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"file.dat"}, + {"type":"Punctuation","value":"'"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"#= "}, + {"type":"LiteralStringDoc","value":"an existing file to frobnicate\n"}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"Int"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":":"}, + {"type":"LiteralString","value":"size"}, + {"type":"Punctuation","value":"("}, + {"type":"Operator","value":":"}, + {"type":"NameVariable","value":"$length"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"24"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"#= "}, + {"type":"LiteralStringDoc","value":"length/size needed for frobnication\n"}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"Bool"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":":"}, + {"type":"NameVariable","value":"$verbose"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"#= "}, + {"type":"LiteralStringDoc","value":"required verbosity\n"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$length"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"if"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$length"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"defined"}, + {"type":"Text","value":";\n "}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$file"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"if"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$file"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"defined"}, + {"type":"Text","value":";\n "}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"Verbosity "}, + {"type":"Punctuation","value":"'"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"NameVariable","value":"$verbose"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"??"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"on"}, + {"type":"Punctuation","value":"'"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"!!"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"off"}, + {"type":"Punctuation","value":"')"}, + {"type":"Text","value":";\n"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"#|"}, + {"type":"Punctuation","value":"「"}, + {"type":"LiteralStringDoc","value":"[\nINI Parser\n"}, + {"type":"Keyword","value":"C"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralStringOther","value":"SomeCode"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringDoc","value":"\n"}, + {"type":"Keyword","value":"=head1"}, + {"type":"GenericHeading","value":" heading\n"}, + {"type":"LiteralStringDoc","value":"]"}, + {"type":"Punctuation","value":"」"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"grammar"}, + {"type":"Text","value":" "}, + {"type":"NameClass","value":"INIParser"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"token"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"TOP"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"block"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"section"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"token"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"section"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"header"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"block"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"token"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"header"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"["}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"~"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"]"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\w"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\n"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"token"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"block"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"[\u003c"}, + {"type":"NameFunction","value":"pair"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"|"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"comment"}, + {"type":"Punctuation","value":"\u003e]"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"rule"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"pair"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"key"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"="}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"value"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"token"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"comment"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":";"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\N"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\n"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"token"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"key"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\w"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"token"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"value"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"-"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringEscape","value":"\\n"}, + {"type":"LiteralStringRegex","value":" ;"}, + {"type":"Punctuation","value":"]\u003e"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$match"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Name","value":"INIParser"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"parse"}, + {"type":"Operator","value":":"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"q"}, + {"type":"LiteralStringAffix","value":":to"}, + {"type":"Punctuation","value":"/END/;"}, + {"type":"LiteralString","value":"\n; Comment\nkey1=value1\nkey2 = value2\n\n; Section 1\n[section1]\nkey3=value3\n"}, + {"type":"Punctuation","value":"END"}, + {"type":"Text","value":"\n\n\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$match"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"block"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Operator","value":"\u003c"}, + {"type":"NameBuiltin","value":"pair"}, + {"type":"Operator","value":"\u003e"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Punctuation","value":"]"}, + {"type":"Operator","value":"\u003c"}, + {"type":"NameBuiltin","value":"value"}, + {"type":"Operator","value":"\u003e"}, + {"type":"Text","value":";\n"}, + {"type":"CommentSingle","value":"# OUTPUT: 「value1」"}, + {"type":"Text","value":"\n\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$match"}, + {"type":"Operator","value":"\u003c"}, + {"type":"Name","value":"section"}, + {"type":"Operator","value":"\u003e"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Punctuation","value":"]"}, + {"type":"Operator","value":"\u003c"}, + {"type":"NameBuiltin","value":"block"}, + {"type":"Operator","value":"\u003e\u003c"}, + {"type":"NameBuiltin","value":"pair"}, + {"type":"Operator","value":"\u003e"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Punctuation","value":"]"}, + {"type":"Operator","value":"\u003c"}, + {"type":"NameBuiltin","value":"value"}, + {"type":"Operator","value":"\u003e"}, + {"type":"Text","value":";\n"}, + {"type":"CommentSingle","value":"# OUTPUT: 「value3」"}, + {"type":"Text","value":"\n\n"}, + {"type":"CommentSingle","value":"# Promise"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$promise"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"start"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$i"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Text","value":";\n "}, + {"type":"Keyword","value":"for"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":".."}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"10"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"NameVariable","value":"$i"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+="}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$_"}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"NameVariable","value":"$i"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$result"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"await"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$promise"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$result"}, + {"type":"Text","value":";\n"}, + {"type":"CommentSingle","value":"# OUTPUT: 55"}, + {"type":"Text","value":"\n\n"}, + {"type":"CommentSingle","value":"# Supply"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$bread-supplier"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"Supplier"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"new"}, + {"type":"Text","value":";\n"}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$vegetable-supplier"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"Supplier"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"new"}, + {"type":"Text","value":";\n\n"}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$supply"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"supply"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"whenever"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$bread-supplier"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"Supply"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"NameBuiltin","value":"emit"}, + {"type":"Punctuation","value":"(\""}, + {"type":"LiteralStringDouble","value":"We've got bread: "}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$_"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":";\n "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":";\n "}, + {"type":"Keyword","value":"whenever"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$vegetable-supplier"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"Supply"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"NameBuiltin","value":"emit"}, + {"type":"Punctuation","value":"(\""}, + {"type":"LiteralStringDouble","value":"We've got a vegetable: "}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$_"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":";\n "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":";\n"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n"}, + {"type":"NameVariable","value":"$supply"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"tap"}, + {"type":"Punctuation","value":"("}, + {"type":"Keyword","value":"-\u003e"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$v"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\""}, + {"type":"NameVariable","value":"$v"}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"})"}, + {"type":"Text","value":";\n\n"}, + {"type":"NameVariable","value":"$vegetable-supplier"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"emit"}, + {"type":"Punctuation","value":"(\""}, + {"type":"LiteralStringDouble","value":"Radish"}, + {"type":"Punctuation","value":"\")"}, + {"type":"Text","value":";\n"}, + {"type":"CommentSingle","value":"# OUTPUT: «We've got a vegetable: Radish␤»"}, + {"type":"Text","value":"\n"}, + {"type":"NameVariable","value":"$bread-supplier"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"emit"}, + {"type":"Punctuation","value":"(\""}, + {"type":"LiteralStringDouble","value":"Thick sliced"}, + {"type":"Punctuation","value":"\")"}, + {"type":"Text","value":";\n"}, + {"type":"CommentSingle","value":"# OUTPUT: «We've got bread: Thick sliced␤»"}, + {"type":"Text","value":"\n"}, + {"type":"NameVariable","value":"$vegetable-supplier"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"emit"}, + {"type":"Punctuation","value":"(\""}, + {"type":"LiteralStringDouble","value":"Lettuce"}, + {"type":"Punctuation","value":"\")"}, + {"type":"Text","value":";\n"}, + {"type":"CommentSingle","value":"# OUTPUT: «We've got a vegetable: Lettuce␤»"}, + {"type":"Text","value":"\n\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"3"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"»+«"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberInteger","value":"4"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"5"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"6"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"3"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"4"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"»~»"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"a b"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"NameVariable","value":"\u0026sin"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"\u0026cos"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"\u0026sqrt"}, + {"type":"Punctuation","value":")"}, + {"type":"Operator","value":"»."}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberFloat","value":"0.5"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"(\u003c"}, + {"type":"LiteralString","value":"a b"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"c d e"}, + {"type":"Punctuation","value":"\u003e)"}, + {"type":"Operator","value":"».\u0026"}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"elems"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\u003c\u003c"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"\u003e\u003e"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"Punctuation","value":"\u003e\u003e"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"stuff here!!!"}, + {"type":"Punctuation","value":"\""}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"subst"}, + {"type":"Punctuation","value":"(:"}, + {"type":"LiteralString","value":"g"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"/"}, + {"type":"Operator","value":"\u003c\u003c"}, + {"type":"Punctuation","value":"/"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"|"}, + {"type":"Punctuation","value":"')"}, + {"type":"Text","value":";\n"}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"@array"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\u003c\u003c"}, + {"type":"LiteralStringDouble","value":"an "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"array of"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"Punctuation","value":"{\""}, + {"type":"LiteralStringDouble","value":"many"}, + {"type":"Punctuation","value":"\"}"}, + {"type":"LiteralStringDouble","value":" items"}, + {"type":"Punctuation","value":"\u003e\u003e"}, + {"type":"Text","value":";\n\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"3"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"OperatorWord","value":"(\u0026)"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"5"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"7"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"3"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"∩"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"5"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"7"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"=:="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"3"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"3"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"OperatorWord","value":"Z"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberInteger","value":"4"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"5"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"6"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":";\n"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"3"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"OperatorWord","value":"RZ"}, + {"type":"Punctuation","value":"["}, + {"type":"Operator","value":"=\u003e"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberInteger","value":"4"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"5"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"6"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":";\n\n"}, + {"type":"Keyword","value":"rx"}, + {"type":"Punctuation","value":"/:"}, + {"type":"NameAttribute","value":"i"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"LiteralStringEscape","value":"\\w"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"CommentSingle","value":"# some comment\n"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"text"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"LiteralStringEscape","value":"\\d"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"**"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Operator","value":".."}, + {"type":"LiteralNumberInteger","value":"5"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"double quotes!"}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameBuiltin","value":"alnum"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c:"}, + {"type":"NameAttribute","value":"N"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"alpha"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c{"}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Punctuation","value":"}\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c:"}, + {"type":"NameAttribute","value":"madeup"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"["}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\w"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"]"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"||"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\S"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\s"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"="}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\s"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\S"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Operator","value":"||"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"["}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\w"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"]"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Operator","value":"||"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\S"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\s"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"="}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\s"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\S"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c:"}, + {"type":"NameAttribute","value":"Script"}, + {"type":"Punctuation","value":"('"}, + {"type":"LiteralStringSingle","value":"Latin"}, + {"type":"Punctuation","value":"')\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c:"}, + {"type":"NameAttribute","value":"Block"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"Basic Latin"}, + {"type":"Punctuation","value":"\u003e\u003e"}, + {"type":"LiteralStringRegex","value":"\n if "}, + {"type":"Operator","value":"|"}, + {"type":"LiteralStringRegex","value":" if "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"."}, + {"type":"OperatorWord","value":"ws"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" else "}, + {"type":"NameVariable","value":"$0"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c:"}, + {"type":"NameAttribute","value":"Lu"}, + {"type":"Operator","value":"+"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"N"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Text","value":" "}, + {"type":"LiteralStringRegex","value":"f"}, + {"type":"Text","value":" "}, + {"type":"LiteralStringRegex","value":"fo"}, + {"type":"Text","value":" "}, + {"type":"LiteralStringRegex","value":"foo"}, + {"type":"Text","value":" "}, + {"type":"LiteralStringRegex","value":"food"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c:"}, + {"type":"NameAttribute","value":"L"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":":!"}, + {"type":"NameAttribute","value":"N"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c["}, + {"type":"LiteralStringRegex","value":" a "}, + {"type":"Operator","value":".."}, + {"type":"LiteralStringRegex","value":" c "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralNumberInteger","value":"3"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"]\u003e"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"NameVariable","value":"@variable"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c["}, + {"type":"LiteralStringEscape","value":"\\d"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"-"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberInteger","value":"13579"}, + {"type":"Punctuation","value":"]\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"?"}, + {"type":"OperatorWord","value":"before"}, + {"type":"LiteralStringRegex","value":" a "}, + {"type":"NameVariable","value":"$0"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"\u0026\u0026"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"NameEntity","value":"."}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c:"}, + {"type":"NameAttribute","value":"Zs"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringEscape","value":"\\x"}, + {"type":"LiteralNumberHex","value":"9"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"-"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringEscape","value":"\\x"}, + {"type":"LiteralNumberHex","value":"A0"}, + {"type":"Punctuation","value":"]\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"NameEntity","value":"^"}, + {"type":"LiteralStringRegex","value":" raku "}, + {"type":"NameEntity","value":"$"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"NameEntity","value":"^"}, + {"type":"LiteralStringRegex","value":" raku"}, + {"type":"NameEntity","value":"$"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"["}, + {"type":"NameEntity","value":"^"}, + {"type":"LiteralStringRegex","value":"raku"}, + {"type":"NameEntity","value":"$"}, + {"type":"Operator","value":"|"}, + {"type":"LiteralStringRegex","value":"something"}, + {"type":"NameEntity","value":"$"}, + {"type":"Punctuation","value":"]"}, + {"type":"LiteralStringRegex","value":"else"}, + {"type":"NameEntity","value":"$"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c["}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\x"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberHex","value":"00C0"}, + {"type":"Punctuation","value":"]"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":".."}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\x"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberHex","value":"00C6"}, + {"type":"Punctuation","value":"]"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"]\u003e"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":"\n two"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"|"}, + {"type":"OperatorWord","value":"w"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\\-"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"|"}, + {"type":"OperatorWord","value":"w"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"words\n "}, + {"type":"Punctuation","value":"\u003c["}, + {"type":"LiteralStringEscape","value":"\\c"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralString","value":"GREEK SMALL LETTER ALPHA"}, + {"type":"Punctuation","value":"]"}, + {"type":"Operator","value":".."}, + {"type":"LiteralStringEscape","value":"\\c"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralString","value":"GREEK SMALL LETTER GAMMA"}, + {"type":"Punctuation","value":"]]\u003e"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":"\n two"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"!|"}, + {"type":"OperatorWord","value":"w"}, + {"type":"Punctuation","value":"\u003e\u003c"}, + {"type":"Operator","value":"!|"}, + {"type":"OperatorWord","value":"w"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"words\n "}, + {"type":"Operator","value":"\u003c\u003c"}, + {"type":"LiteralStringRegex","value":" br "}, + {"type":"Operator","value":"\u003e\u003e"}, + {"type":"LiteralStringRegex","value":"\n own "}, + {"type":"Operator","value":"»"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"NameEntity","value":"^^"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"?"}, + {"type":"NameBuiltin","value":"alnum"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\d"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"NameEntity","value":"^^"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\d"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"!"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"Script"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"Tamil"}, + {"type":"Punctuation","value":"\u003e\u003e"}, + {"type":"LiteralStringRegex","value":"\n abc "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"?"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringRegex","value":" d"}, + {"type":"Operator","value":".."}, + {"type":"LiteralStringRegex","value":"f "}, + {"type":"Punctuation","value":"]\u003e"}, + {"type":"LiteralStringRegex","value":"\n abc "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"?"}, + {"type":"NameVariable","value":"@some-array"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"?"}, + {"type":"OperatorWord","value":"after"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"NameEntity","value":"^^"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"|"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"."}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\s"}, + {"type":"Operator","value":"+"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c:"}, + {"type":"NameAttribute","value":"Lu"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringEscape","value":"\\S"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringRegex","value":" ab "}, + {"type":"Operator","value":"||"}, + {"type":"LiteralStringRegex","value":" cbc "}, + {"type":"Punctuation","value":"]"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralStringRegex","value":"a "}, + {"type":"Operator","value":"||"}, + {"type":"LiteralStringRegex","value":" b"}, + {"type":"Punctuation","value":")"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringRegex","value":"a"}, + {"type":"Operator","value":"||"}, + {"type":"LiteralStringRegex","value":"b"}, + {"type":"Punctuation","value":"]"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralStringRegex","value":"c"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralStringEscape","value":"\\d"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"NameVariable","value":"$0"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralStringEscape","value":"\\d"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"{}"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":":"}, + {"type":"KeywordDeclaration","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$c"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$0"}, + {"type":"Text","value":";"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"NameVariable","value":"$c"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Operator","value":":"}, + {"type":"KeywordDeclaration","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$counter"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Text","value":";"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\V"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"++"}, + {"type":"NameVariable","value":"$counter"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"*"}, + {"type":"NameVariable","value":"%%"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\n"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralStringRegex","value":"a"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringRegex","value":" b "}, + {"type":"Punctuation","value":"{}"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":":"}, + {"type":"KeywordDeclaration","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$c2"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$/"}, + {"type":"Text","value":";"}, + {"type":"LiteralStringRegex","value":"\n test\n "}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralStringRegex","value":"a"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"Check so far "}, + {"type":"Punctuation","value":"\""}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~"}, + {"type":"NameVariable","value":"$/"}, + {"type":"Punctuation","value":"}"}, + {"type":"LiteralStringRegex","value":" b "}, + {"type":"Operator","value":":"}, + {"type":"KeywordDeclaration","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$c3"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~"}, + {"type":"NameVariable","value":"$0"}, + {"type":"Text","value":";"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"hi"}, + {"type":"Punctuation","value":"'"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"LiteralStringRegex","value":"\n\n "}, + {"type":"NameVariable","value":"$\u003cmyname\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"="}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\w"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"]"}, + {"type":"LiteralStringRegex","value":"\n\n "}, + {"type":"NameVariable","value":"$\u003cstring\u003e"}, + {"type":"Operator","value":"="}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"NameVariable","value":"$\u003cpart\u003e"}, + {"type":"Operator","value":"="}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringRegex","value":"abc"}, + {"type":"Punctuation","value":"]"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"]"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"NameVariable","value":"%"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"-"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"NameVariable","value":"$\u003cvariable\u003e"}, + {"type":"Operator","value":"="}, + {"type":"LiteralStringEscape","value":"\\w"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"="}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"NameVariable","value":"$\u003cvalue\u003e"}, + {"type":"Operator","value":"="}, + {"type":"LiteralStringEscape","value":"\\w"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":"\n a "}, + {"type":"Punctuation","value":"\u003c("}, + {"type":"LiteralStringRegex","value":" b "}, + {"type":"Punctuation","value":")\u003e"}, + {"type":"LiteralStringRegex","value":" c\n "}, + {"type":"Punctuation","value":"\u003c("}, + {"type":"LiteralStringRegex","value":"a "}, + {"type":"Punctuation","value":"\u003c("}, + {"type":"LiteralStringRegex","value":" b "}, + {"type":"Punctuation","value":")\u003e"}, + {"type":"LiteralStringRegex","value":" c"}, + {"type":"Punctuation","value":")\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"("}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"~"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":")"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"expression"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"NameVariable","value":"$\u003cOPEN\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"="}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"("}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"SETGOAL"}, + {"type":"Punctuation","value":":"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":")"}, + {"type":"Punctuation","value":"'\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"some-expression"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"NameVariable","value":"$GOAL"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"||"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"FAILGOAL"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"]"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"?"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"~"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":")"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\d"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"("}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"-"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringRegex","value":"()"}, + {"type":"Punctuation","value":"]\u003e"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":")"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"||"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"("}, + {"type":"Punctuation","value":"'["}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"-"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringRegex","value":"()"}, + {"type":"Punctuation","value":"]\u003e"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"\u003c~~\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"-"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringRegex","value":"()"}, + {"type":"Punctuation","value":"]\u003e"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"]"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":")"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"NameVariable","value":"@\u003cnamed-regex\u003e"}, + {"type":"Operator","value":"="}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"ident"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"."}, + {"type":"NameFunction","value":"named-regex"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameVariable","value":"\u0026named-regex"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"someregex"}, + {"type":"Punctuation","value":"('"}, + {"type":"LiteralStringSingle","value":"a"}, + {"type":"Punctuation","value":"')\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameVariable","value":"capture-name"}, + {"type":"Operator","value":"="}, + {"type":"NameFunction","value":"named-regex"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameVariable","value":"capture-name"}, + {"type":"Operator","value":"="}, + {"type":"NameFunction","value":"named-regex"}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Punctuation","value":")\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameVariable","value":"$test"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameVariable","value":"@test"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"NameVariable","value":"$"}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"LiteralStringRegex","value":"; "}, + {"type":"NameVariable","value":"$test"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"NameVariable","value":"$pattern3"}, + {"type":"NameEntity","value":"."}, + {"type":"LiteralStringRegex","value":"flip "}, + {"type":"CommentSingle","value":"# Nil\n"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\""}, + {"type":"NameVariable","value":"$pattern3"}, + {"type":"Operator","value":"."}, + {"type":"NameFunction","value":"flip"}, + {"type":"Punctuation","value":"()\""}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"NameVariable","value":"$"}, + {"type":"Punctuation","value":"(["}, + {"type":"Operator","value":"~"}, + {"type":"Punctuation","value":"]"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"NameVariable","value":"$pattern3"}, + {"type":"NameEntity","value":"."}, + {"type":"LiteralStringRegex","value":"comb"}, + {"type":"NameEntity","value":"."}, + {"type":"LiteralStringRegex","value":"reverse"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"NameVariable","value":"@"}, + {"type":"Punctuation","value":"("}, + {"type":"NameVariable","value":"%h"}, + {"type":"NameEntity","value":"."}, + {"type":"LiteralStringRegex","value":"keys"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"LiteralStringEscape","value":"\\d"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Operator","value":"**"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":".."}, + {"type":"LiteralNumberInteger","value":"3"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"Operator","value":"?"}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$/"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"Int"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u003c="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"255"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u0026\u0026"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$/"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"Int"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u003e="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"}\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"NameEntity","value":"$"}, + {"type":"Punctuation","value":"/"}, + {"type":"Text","value":";\n\n"}, + {"type":"Keyword","value":"constant"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"\\something"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"some"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"adverb"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"something"}, + {"type":"Punctuation","value":"'"}, + {"type":"Text","value":";\n\n"}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"%hash"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"%"}, + {"type":"Punctuation","value":"("}, + {"type":"Text","value":"\n "}, + {"type":"LiteralString","value":"query"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"=\u003e"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"something"}, + {"type":"Text","value":",\n "}, + {"type":"LiteralString","value":"qq"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"=\u003e"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"something"}, + {"type":"Punctuation","value":"'"}, + {"type":"Text","value":",\n "}, + {"type":"Punctuation","value":":"}, + {"type":"LiteralString","value":"23year"}, + {"type":"Operator","value":","}, + {"type":"Text","value":"\n "}, + {"type":"LiteralString","value":"m"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"=\u003e"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$test"}, + {"type":"Text","value":",\n "}, + {"type":"Punctuation","value":":"}, + {"type":"LiteralString","value":"yes"}, + {"type":"Operator","value":","}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":":!"}, + {"type":"LiteralString","value":"yes"}, + {"type":"Operator","value":","}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":"("}, + {"type":"NameBuiltin","value":"Less"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"=\u003e"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$test"}, + {"type":"Text","value":",\n"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":";\n\n"}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"%hash2"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"%"}, + {"type":"Punctuation","value":"("}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":":"}, + {"type":"LiteralString","value":"query"}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"something"}, + {"type":"Punctuation","value":")"}, + {"type":"Operator","value":","}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":":"}, + {"type":"LiteralString","value":"qq"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"something"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Operator","value":","}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":":"}, + {"type":"LiteralString","value":"m"}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"something"}, + {"type":"Punctuation","value":")"}, + {"type":"Operator","value":","}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":":"}, + {"type":"LiteralNumberInteger","value":"23"}, + {"type":"Punctuation","value":"('"}, + {"type":"LiteralStringSingle","value":"a"}, + {"type":"Punctuation","value":"')"}, + {"type":"Operator","value":","}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":":"}, + {"type":"LiteralString","value":"test"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"something"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Operator","value":","}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":":"}, + {"type":"LiteralString","value":"query1"}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Punctuation","value":":"}, + {"type":"LiteralString","value":"list"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Operator","value":","}, + {"type":"LiteralNumberInteger","value":"3"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":";\n\n"}, + {"type":"Keyword","value":"=for"}, + {"type":"LiteralStringDoc","value":" "}, + {"type":"Keyword","value":"comment"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringDoc","value":"some comment\n\n"}, + {"type":"Keyword","value":"=table"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringDoc","value":" |col|\n |row|\n\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"Q"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralString","value":"「some $text」"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"qq"}, + {"type":"Punctuation","value":"「「"}, + {"type":"LiteralStringDouble","value":"some "}, + {"type":"NameVariable","value":"$regex"}, + {"type":"LiteralStringDouble","value":" text"}, + {"type":"Punctuation","value":"」」"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"q"}, + {"type":"LiteralStringAffix","value":"ww"}, + {"type":"Punctuation","value":"「「"}, + {"type":"LiteralStringDouble","value":"some "}, + {"type":"NameVariable","value":"$variable"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"some text"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringDouble","value":" text"}, + {"type":"Punctuation","value":"」」"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"q"}, + {"type":"LiteralStringAffix","value":":ww"}, + {"type":"Punctuation","value":"「「"}, + {"type":"LiteralStringDouble","value":"some "}, + {"type":"NameVariable","value":"$variable"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"some text"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringDouble","value":" text"}, + {"type":"Punctuation","value":"」」"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"q"}, + {"type":"LiteralStringAffix","value":":w"}, + {"type":"Punctuation","value":"「「"}, + {"type":"LiteralString","value":"some $variable 'some text' text"}, + {"type":"Punctuation","value":"」」"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"qq"}, + {"type":"LiteralStringAffix","value":":w"}, + {"type":"Punctuation","value":"「「"}, + {"type":"LiteralStringDouble","value":"some "}, + {"type":"NameVariable","value":"$regex"}, + {"type":"LiteralStringDouble","value":" 'some text' text"}, + {"type":"Punctuation","value":"」」"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"Q"}, + {"type":"LiteralStringAffix","value":":c"}, + {"type":"Punctuation","value":"「「"}, + {"type":"LiteralString","value":"some $regex 'some text' "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"LiteralString","value":" text"}, + {"type":"Punctuation","value":"」」"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"q"}, + {"type":"LiteralStringAffix","value":":a"}, + {"type":"Punctuation","value":"「「"}, + {"type":"LiteralString","value":"some "}, + {"type":"NameVariable","value":"@array"}, + {"type":"LiteralString","value":" 'some text' { 2 + 1 } text"}, + {"type":"Punctuation","value":"」」"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"Q"}, + {"type":"LiteralStringAffix","value":":a:c"}, + {"type":"Punctuation","value":"「「"}, + {"type":"LiteralStringDouble","value":"some "}, + {"type":"NameVariable","value":"@array"}, + {"type":"LiteralStringDouble","value":" 'some text' "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"+"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"LiteralStringDouble","value":" text"}, + {"type":"Punctuation","value":"」」"}, + {"type":"Text","value":";\n"}, + {"type":"Keyword","value":"Q"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralString","value":"some "}, + {"type":"LiteralStringEscape","value":"\\qq"}, + {"type":"Punctuation","value":"["}, + {"type":"NameVariable","value":"$variable"}, + {"type":"Operator","value":"."}, + {"type":"NameFunction","value":"method"}, + {"type":"Punctuation","value":"()]"}, + {"type":"LiteralString","value":" testing"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"Q"}, + {"type":"LiteralStringAffix","value":":a:c"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringDouble","value":"some "}, + {"type":"LiteralStringEscape","value":"\\qq"}, + {"type":"Punctuation","value":"["}, + {"type":"NameVariable","value":"$variable"}, + {"type":"Operator","value":"."}, + {"type":"NameFunction","value":"method"}, + {"type":"Punctuation","value":"()]"}, + {"type":"LiteralStringDouble","value":" testing"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":"\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"Q"}, + {"type":"LiteralStringAffix","value":":c:h"}, + {"type":"Punctuation","value":"「"}, + {"type":"LiteralStringDouble","value":"Testing "}, + {"type":"Punctuation","value":"{'"}, + {"type":"LiteralStringSingle","value":"toasting"}, + {"type":"Punctuation","value":"'}"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"NameVariable","value":"%h"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"one"}, + {"type":"Punctuation","value":"\u003e」"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"Q"}, + {"type":"LiteralStringAffix","value":":c:h"}, + {"type":"Punctuation","value":"「"}, + {"type":"LiteralStringDouble","value":"Testing "}, + {"type":"Punctuation","value":"{'"}, + {"type":"LiteralStringSingle","value":"toasting"}, + {"type":"Punctuation","value":"'}"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"NameVariable","value":"%h"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"one"}, + {"type":"Punctuation","value":"\u003e\u003c"}, + {"type":"LiteralString","value":"two"}, + {"type":"Punctuation","value":"\u003e」"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"Q"}, + {"type":"LiteralStringAffix","value":":c:h"}, + {"type":"Punctuation","value":"「"}, + {"type":"LiteralStringDouble","value":"Testing "}, + {"type":"Punctuation","value":"{'"}, + {"type":"LiteralStringSingle","value":"toasting"}, + {"type":"Punctuation","value":"'}"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"NameVariable","value":"%h"}, + {"type":"Punctuation","value":"\u003c\u003c"}, + {"type":"LiteralStringDouble","value":"one"}, + {"type":"Punctuation","value":"\u003e\u003e」"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"Q"}, + {"type":"LiteralStringAffix","value":":c:h"}, + {"type":"Punctuation","value":"「"}, + {"type":"LiteralStringDouble","value":"Testing "}, + {"type":"Punctuation","value":"{'"}, + {"type":"LiteralStringSingle","value":"toasting"}, + {"type":"Punctuation","value":"'}"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"NameVariable","value":"%h"}, + {"type":"LiteralStringDouble","value":"«one»"}, + {"type":"Punctuation","value":"」"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"Q"}, + {"type":"LiteralStringAffix","value":":b"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralString","value":"Testing"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":";\n"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"some "}, + {"type":"LiteralStringEscape","value":"\\qq"}, + {"type":"Punctuation","value":"["}, + {"type":"NameVariable","value":"$variable"}, + {"type":"Operator","value":"."}, + {"type":"NameFunction","value":"method"}, + {"type":"Punctuation","value":"()]"}, + {"type":"LiteralStringSingle","value":" testing"}, + {"type":"Punctuation","value":"'"}, + {"type":"Text","value":";\n"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"somes\\' testing"}, + {"type":"Punctuation","value":"'"}, + {"type":"Text","value":";\n"}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"some "}, + {"type":"LiteralStringEscape","value":"\\qq"}, + {"type":"Punctuation","value":"["}, + {"type":"NameVariable","value":"$variable"}, + {"type":"Operator","value":"."}, + {"type":"NameFunction","value":"method"}, + {"type":"Punctuation","value":"()]"}, + {"type":"LiteralStringDouble","value":" testing"}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":";\n"}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"some "}, + {"type":"NameVariable","value":"$variable"}, + {"type":"Operator","value":"."}, + {"type":"NameFunction","value":"method"}, + {"type":"Punctuation","value":"()"}, + {"type":"LiteralStringDouble","value":" testing"}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":";\n"}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"some "}, + {"type":"NameVariable","value":"$variable"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"some"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"adverb"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Operator","value":"."}, + {"type":"NameFunction","value":"method"}, + {"type":"Punctuation","value":"()"}, + {"type":"LiteralStringDouble","value":" testing"}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":";\n"}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"some "}, + {"type":"NameVariable","value":"$variable"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"some"}, + {"type":"Punctuation","value":"('"}, + {"type":"LiteralStringSingle","value":"adverb"}, + {"type":"Punctuation","value":"')"}, + {"type":"Operator","value":"."}, + {"type":"NameFunction","value":"method"}, + {"type":"Punctuation","value":"()"}, + {"type":"LiteralStringDouble","value":" testing"}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":";\n"}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"some "}, + {"type":"NameFunction","value":"func"}, + {"type":"Punctuation","value":"()"}, + {"type":"LiteralStringDouble","value":" testing"}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":";\n"}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"some "}, + {"type":"NameFunction","value":"func"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"some"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"adverb"}, + {"type":"Punctuation","value":"\u003e()"}, + {"type":"LiteralStringDouble","value":" testing"}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"Something "}, + {"type":"NameFunction","value":"foo"}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"NameVariable","value":"$a"}, + {"type":"Operator","value":"."}, + {"type":"NameFunction","value":"succ"}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralNumberInteger","value":"3"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$some_variable"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"NameVariable","value":"$a"}, + {"type":"Operator","value":"."}, + {"type":"NameFunction","value":"some-method"}, + {"type":"Punctuation","value":"()"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"NameVariable","value":"@more"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"NameVariable","value":"$_"}, + {"type":"Operator","value":"."}, + {"type":"NameFunction","value":"Str"}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"NameVariable","value":"$_:"}, + {"type":"LiteralStringDouble","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$_"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"*"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"}\""}, + {"type":"Text","value":";\n\n"}, + {"type":"CommentMultiline","value":"#`[[\nmultiline comment]\n]]"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"my"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$regex"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"/'"}, + {"type":"LiteralStringSingle","value":"match"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\s"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c["}, + {"type":"LiteralStringRegex","value":":-"}, + {"type":"Punctuation","value":"]\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\s"}, + {"type":"Operator","value":"*"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\w"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"something"}, + {"type":"Punctuation","value":"'/"}, + {"type":"Text","value":";\n\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"S"}, + {"type":"Punctuation","value":"/"}, + {"type":"LiteralStringRegex","value":"some"}, + {"type":"Punctuation","value":"/"}, + {"type":"LiteralStringDouble","value":"a"}, + {"type":"Punctuation","value":"/"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"given"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$text"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"s"}, + {"type":"Punctuation","value":"/"}, + {"type":"LiteralStringRegex","value":"some"}, + {"type":"Punctuation","value":"/"}, + {"type":"LiteralStringDouble","value":"a"}, + {"type":"Punctuation","value":"/"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"S"}, + {"type":"Punctuation","value":"%"}, + {"type":"LiteralStringRegex","value":"some"}, + {"type":"Punctuation","value":"%"}, + {"type":"LiteralStringDouble","value":"a"}, + {"type":"Punctuation","value":"%"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"given"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$text"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$text"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~~"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"s"}, + {"type":"Punctuation","value":"/("}, + {"type":"LiteralStringRegex","value":"some"}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\d"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"NameVariable","value":"$\u003cvar\u003e"}, + {"type":"Operator","value":"="}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameBuiltin","value":"alnum"}, + {"type":"Punctuation","value":"\u003e/"}, + {"type":"LiteralStringDouble","value":"a "}, + {"type":"NameVariable","value":"$0"}, + {"type":"Punctuation","value":"/"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$text"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~~"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"s"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"Pos"}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Punctuation","value":")/("}, + {"type":"LiteralStringRegex","value":"some"}, + {"type":"Punctuation","value":")/"}, + {"type":"NameVariable","value":"$0"}, + {"type":"Punctuation","value":"/"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$text"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~~"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"s"}, + {"type":"Punctuation","value":"%"}, + {"type":"LiteralStringRegex","value":"some"}, + {"type":"Punctuation","value":"%"}, + {"type":"LiteralStringDouble","value":"a"}, + {"type":"Punctuation","value":"%"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$text"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~~"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"s"}, + {"type":"Punctuation","value":"%"}, + {"type":"LiteralStringRegex","value":"s"}, + {"type":"Punctuation","value":"("}, + {"type":"NameEntity","value":"."}, + {"type":"Punctuation","value":")"}, + {"type":"LiteralStringRegex","value":"me"}, + {"type":"Punctuation","value":"%"}, + {"type":"LiteralStringDouble","value":"a"}, + {"type":"NameVariable","value":"$0"}, + {"type":"Punctuation","value":"%"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$text"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~~"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"s"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"r"}, + {"type":"Punctuation","value":"/"}, + {"type":"LiteralStringRegex","value":"some"}, + {"type":"Punctuation","value":"/"}, + {"type":"LiteralStringDouble","value":"a"}, + {"type":"Punctuation","value":"/"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$text"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~~"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"m"}, + {"type":"Punctuation","value":"/"}, + {"type":"NameEntity","value":"^"}, + {"type":"LiteralStringRegex","value":"text "}, + {"type":"Punctuation","value":"[:"}, + {"type":"NameAttribute","value":"i"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\d"}, + {"type":"Operator","value":"+"}, + {"type":"Punctuation","value":"]"}, + {"type":"NameEntity","value":"$"}, + {"type":"Punctuation","value":"/"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$text"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~~"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"m"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"s"}, + {"type":"Punctuation","value":"/"}, + {"type":"NameEntity","value":"^"}, + {"type":"Punctuation","value":"\u003c{"}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralNumberInteger","value":"5"}, + {"type":"Punctuation","value":"}\u003e"}, + {"type":"NameEntity","value":"$"}, + {"type":"Punctuation","value":"/"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$text"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~~"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"m"}, + {"type":"Punctuation","value":"%"}, + {"type":"NameEntity","value":"^"}, + {"type":"LiteralStringRegex","value":"text"}, + {"type":"NameEntity","value":"$"}, + {"type":"Punctuation","value":"%"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$text"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~~"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"/"}, + {"type":"NameEntity","value":"^"}, + {"type":"LiteralStringRegex","value":"text"}, + {"type":"NameEntity","value":"$"}, + {"type":"Punctuation","value":"/"}, + {"type":"Text","value":";\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$text"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~~"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"tr"}, + {"type":"Punctuation","value":"/"}, + {"type":"LiteralStringRegex","value":"abcde"}, + {"type":"Punctuation","value":"/"}, + {"type":"LiteralStringDouble","value":"12345"}, + {"type":"Punctuation","value":"/"}, + {"type":"Text","value":";\n"}, + {"type":"Keyword","value":"s"}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringEscape","value":"\\w"}, + {"type":"Operator","value":"+"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"test"}, + {"type":"Punctuation","value":"'"}, + {"type":"Text","value":";\n\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"NameConstant","value":"i"}, + {"type":"Text","value":";\n\n"}, + {"type":"Keyword","value":"CATCH"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"when"}, + {"type":"Text","value":" "}, + {"type":"NameException","value":"X::AdHoc"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"when"}, + {"type":"Text","value":" "}, + {"type":"NameException","value":"CX::Warn"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{}"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"Q"}, + {"type":"LiteralStringAffix","value":":heredoc"}, + {"type":"Punctuation","value":"「FINISH」;"}, + {"type":"LiteralString","value":"\nsome long\ntext\nhere.\n"}, + {"type":"Punctuation","value":"FINISH"}, + {"type":"Text","value":"\n\n"}, + {"type":"NameVariableGlobal","value":"$*IN"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"lines"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"first"}, + {"type":"Operator","value":":"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"OperatorWord","value":"and"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"so"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"with"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"%a"}, + {"type":"Punctuation","value":"{"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"Int"}, + {"type":"Text","value":" "}, + {"type":"OperatorWord","value":"cmp"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"n"}, + {"type":"Punctuation","value":"}}"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"#| "}, + {"type":"LiteralStringDoc","value":"Grammar "}, + {"type":"Keyword","value":"C"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralStringOther","value":"G"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringDoc","value":"\n"}, + {"type":"Keyword","value":"grammar"}, + {"type":"Text","value":" "}, + {"type":"NameClass","value":"G"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"rule"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"TOP"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"function-define"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"rule"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"function-define"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Operator","value":":"}, + {"type":"KeywordDeclaration","value":"my"}, + {"type":"Text","value":" \\"}, + {"type":"Name","value":"var"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"something"}, + {"type":"Punctuation","value":"'"}, + {"type":"Text","value":";"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"sub"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"identifier"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"func "}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$\u003cidentifier\u003e"}, + {"type":"Operator","value":"."}, + {"type":"Keyword","value":"made"}, + {"type":"Text","value":";\n "}, + {"type":"Keyword","value":"make"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$\u003cidentifier\u003e"}, + {"type":"Operator","value":"."}, + {"type":"Keyword","value":"made"}, + {"type":"Text","value":";\n "}, + {"type":"Punctuation","value":"}"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"("}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"parameter"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":")"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"{"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"}"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"end "}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$/"}, + {"type":"Operator","value":"."}, + {"type":"Keyword","value":"made"}, + {"type":"Text","value":"; "}, + {"type":"Punctuation","value":"}"}, + {"type":"LiteralStringRegex","value":"\n "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"token"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"identifier"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\w"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"make"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~"}, + {"type":"NameVariable","value":"$/"}, + {"type":"Text","value":"; "}, + {"type":"Punctuation","value":"}"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"token"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"parameter"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\w"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"param "}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$/"}, + {"type":"Text","value":"; "}, + {"type":"Punctuation","value":"}"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"token"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"token"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\w"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"param "}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"~"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$/"}, + {"type":"Text","value":"; "}, + {"type":"Punctuation","value":"}"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"use"}, + {"type":"Text","value":" "}, + {"type":"NameNamespace","value":"Some::Module"}, + {"type":"Text","value":";\n"}, + {"type":"Keyword","value":"use"}, + {"type":"Text","value":" "}, + {"type":"NameNamespace","value":"Some::Module"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"auth"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"author"}, + {"type":"Punctuation","value":"\u003e:"}, + {"type":"NameAttribute","value":"ver"}, + {"type":"Punctuation","value":"("}, + {"type":"Keyword","value":"v"}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"NameEntity","value":".0.0"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":";\n\n"}, + {"type":"NameFunction","value":"notes"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$trip:"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\""}, + {"type":"LiteralStringDouble","value":"Almost there"}, + {"type":"Punctuation","value":"\""}, + {"type":"Text","value":";\n\n"}, + {"type":"NameLabel","value":"LABEL"}, + {"type":"Operator","value":":"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"for"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"a b c"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"#|"}, + {"type":"Punctuation","value":"[["}, + {"type":"LiteralStringDoc","value":"\nmultiline pod declaration]\n"}, + {"type":"Punctuation","value":"]]"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"grammar"}, + {"type":"Text","value":" "}, + {"type":"NameClass","value":"Calculator"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"token"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"TOP"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"calc-op"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n\n "}, + {"type":"Keyword","value":"proto"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"rule"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"calc-op"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Operator","value":"*"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"proto"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"rule"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"calc-op"}, + {"type":"Punctuation","value":"("}, + {"type":"NameVariable","value":"$a"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Operator","value":"*"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"rule"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"calc-op"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"sym"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"add"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"num"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"+"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"num"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"rule"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"calc-op"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"sym"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"add"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"num"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":":"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"+"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"num"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"rule"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"calc-op"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"sym"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"sub"}, + {"type":"Punctuation","value":"\u003e("}, + {"type":"NameVariable","value":"$a"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"num"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringSingle","value":"-"}, + {"type":"Punctuation","value":"'"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"NameFunction","value":"num"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n\n "}, + {"type":"Keyword","value":"token"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"num"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"LiteralStringEscape","value":"\\d"}, + {"type":"Operator","value":"+"}, + {"type":"LiteralStringRegex","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"class"}, + {"type":"Text","value":" "}, + {"type":"NameClass","value":"Calculations"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"method"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"TOP"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"NameVariable","value":"$/"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"make"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$\u003ccalc-op\u003e"}, + {"type":"Operator","value":"."}, + {"type":"Keyword","value":"made"}, + {"type":"Text","value":"; "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"method"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"calc-op"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"sym"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"add"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"NameVariable","value":"$/"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"make"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"Operator","value":"+"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$\u003cnum\u003e"}, + {"type":"Text","value":"; "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"method"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"calc-op"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"sym"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"sub"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"("}, + {"type":"NameVariable","value":"$/"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"make"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"Operator","value":"-"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$\u003cnum\u003e"}, + {"type":"Text","value":"; "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"method"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"calc-op"}, + {"type":"Punctuation","value":":"}, + {"type":"NameAttribute","value":"sym"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"sub"}, + {"type":"Punctuation","value":"\u003e("}, + {"type":"NameVariable","value":"$/"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"make"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"Operator","value":"-"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$\u003cnum\u003e"}, + {"type":"Text","value":"; "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"method"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"calc-op:sym"}, + {"type":"Punctuation","value":"("}, + {"type":"NameVariable","value":"$/"}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"make"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"Operator","value":"-"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$\u003cnum\u003e"}, + {"type":"Text","value":"; "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"method"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"calc-op:sym"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralString","value":"sub"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"make"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"Operator","value":"-"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"$\u003cnum\u003e"}, + {"type":"Text","value":"; "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n"}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n\n"}, + {"type":"NameBuiltin","value":"say"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"Calculator"}, + {"type":"Operator","value":"."}, + {"type":"NameBuiltin","value":"parse"}, + {"type":"Punctuation","value":"('"}, + {"type":"LiteralStringSingle","value":"2 + 3"}, + {"type":"Punctuation","value":"'"}, + {"type":"Operator","value":","}, + {"type":"Text","value":" "}, + {"type":"LiteralString","value":"actions"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"=\u003e"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"Calculations"}, + {"type":"Punctuation","value":")"}, + {"type":"Operator","value":"."}, + {"type":"Keyword","value":"made"}, + {"type":"Text","value":";\n\n"}, + {"type":"Keyword","value":"=finish"}, + {"type":"LiteralStringDoc","value":"\n"}, + {"type":"Keyword","value":"C"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"LiteralStringOther","value":"say"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringDoc","value":" Date.today.year;\n# Output: 2020\n"}, + {"type":"Keyword","value":"B"}, + {"type":"Punctuation","value":"\u003c"}, + {"type":"GenericStrong","value":"say"}, + {"type":"Punctuation","value":"\u003e"}, + {"type":"LiteralStringDoc","value":" Date.today.later(:2years).year;"} +] diff --git a/pygments-lexers.txt b/pygments-lexers.txt index 9c9ced2ee..bf4d9de17 100644 --- a/pygments-lexers.txt +++ b/pygments-lexers.txt @@ -2,9 +2,6 @@ Generated with: g 'class.*RegexLexer' | pawk --strict -F: '"pygments.lexers.%s.%s" % (f[0].split(".")[0], f[2].split()[1].split("(")[0])' > lexers.txt -perl6: - Requires a bunch of helpers that I do not have the time to convert. - kotlin: invalid unicode escape sequences FIXED: Have to disable wide Unicode characters in unistring.py