{"name":"JFlex","scopeName":"source.jflex","patterns":[{"name":"meta.package.jflex","begin":"\\A","end":"^%(?=%)","patterns":[{"name":"meta.package.java","match":"^\\s*(package)\\b(?:\\s*([^ ;$]+)\\s*(;)?)?","captures":{"1":{"name":"keyword.other.package.java"},"2":{"name":"storage.modifier.package.java"},"3":{"name":"punctuation.terminator.java"}}},{"name":"meta.import.java","contentName":"storage.modifier.import.java","begin":"(import static)\\b\\s*","end":"\\s*(?:$|(;))","patterns":[{"name":"punctuation.separator.java","match":"\\."},{"name":"invalid.illegal.character_not_allowed_here.java","match":"\\s"}],"captures":{"1":{"name":"keyword.other.import.java"},"2":{"name":"storage.modifier.import.java"},"3":{"name":"punctuation.terminator.java"}},"beginCaptures":{"1":{"name":"keyword.other.import.static.java"}},"endCaptures":{"1":{"name":"punctuation.terminator.java"}}},{"name":"meta.import.java","contentName":"storage.modifier.import.java","begin":"(import)\\b\\s*","end":"\\s*(?:$|(;))","patterns":[{"name":"punctuation.separator.java","match":"\\."},{"name":"invalid.illegal.character_not_allowed_here.java","match":"\\s"}],"captures":{"1":{"name":"keyword.other.import.java"},"2":{"name":"storage.modifier.import.java"},"3":{"name":"punctuation.terminator.java"}},"beginCaptures":{"1":{"name":"keyword.other.import.java"}},"endCaptures":{"1":{"name":"punctuation.terminator.java"}}},{"include":"source.java#code"}],"endCaptures":{"0":{"name":"markup.heading.jflex"}}},{"name":"meta.macros.jflex","begin":"%","end":"^%%","patterns":[{"name":"keyword.other.jflex","match":"^%unicode(\\s+[1-9][0-9]*(\\.[0-9]+){0,2})?"},{"name":"keyword.other.jflex","match":"^%buffer\\s+[1-9][0-9]*"},{"name":"keyword.other.jflex","match":"^%(eofclose|inputstreamctor)(\\s+(true|false))?"},{"name":"meta.somearg.jflex","match":"^(%(?:class|extends|type|ctorarg|implements|include|initthrow|eofthrow|yylexthrow|throws|scanerror|warn|no-warn|suppress|token_size_limit))\\s+(.+)","captures":{"1":{"name":"keyword.other.jflex"},"2":{"name":"storage.type.jflex"}}},{"name":"meta.funarg.jflex","match":"^(%function)\\s+(\\w+)","captures":{"1":{"name":"keyword.other.jflex"},"2":{"name":"storage.type.jflex"}}},{"name":"meta.cupsym.jflex","match":"^(%cupsym)\\s+(\\w+(\\.w+)*)","captures":{"1":{"name":"keyword.other.jflex"},"2":{"name":"storage.type.jflex"}}},{"name":"meta.states.jflex","begin":"^%state","end":"$","patterns":[{"name":"storage.modifier.jflex","match":"\\w+"},{"name":"punctuation.separator.jflex","match":","},{"name":"meta.whitespace.jflex","match":"\\s+"},{"include":"source.java#comments"},{"name":"invalid.illegal.characater.jflex","match":"\\S"}],"beginCaptures":{"0":{"name":"keyword.other.jflex"}}},{"name":"keyword.other.jflex","match":"^%(char|line|column|byaccj|cup2|cup(debug)?|integer|int(wrap)?|yyeof|notunix|7bit|full|8bit|16bit|caseless|ignorecase|public|apiprivate|final|abstract|debug|standalone|pack|no_suppress_warnings)"},{"name":"meta.classcode.jflex","begin":"^%(|init|initthrow|eof|eofthrow|yylexthrow|eofval){","end":"^%(|init|initthrow|eof|eofthrow|yylexthrow|eofval)}","patterns":[{"include":"source.java#code"}],"beginCaptures":{"0":{"name":"keyword.other.jflex"}},"endCaptures":{"0":{"name":"keyword.other.jflex"}}},{"name":"meta.macro.jflex","begin":"(\\w+)\\s*(=)","end":"(?=^%|\\w+\\s*=)","patterns":[{"include":"#regexp"}],"beginCaptures":{"1":{"name":"variable.other.jflex"},"2":{"name":"keyword.operator.jflex"}}},{"name":"invalid.illegal.directive.jflex","match":"^%\\S*"},{"include":"source.java#comments"}],"beginCaptures":{"0":{"name":"markup.heading.jflex"}},"endCaptures":{"0":{"name":"markup.heading.jflex"}}},{"contentName":"meta.rules.jflex","end":"\\z","patterns":[{"include":"#rules"}]}],"repository":{"charclass":{"patterns":[{"name":"keyword.operator.jflex","match":"\\[:(jletter|jletterdigit|letter|uppercase|lowercase|digit):\\]"},{"name":"keyword.operator.jflex","match":"\\\\(d|D|s|S|w|W|p{[^}]*}|P{[^}]*})"}]},"class":{"patterns":[{"name":"meta.class.jflex","begin":"\\[","end":"\\]","patterns":[{"include":"#classcontent"}],"beginCaptures":{"0":{"name":"keyword.operator.jflex"}},"endCaptures":{"0":{"name":"keyword.operator.jflex"}}}]},"classcontent":{"patterns":[{"name":"keyword.operator.jflex","match":"\\^|\\-|\\\u0026\\\u0026|\\|\\|"},{"include":"#charclass"},{"include":"#numeric"},{"include":"#escape"},{"name":"variable.other.macro.jflex","match":"({)(\\w+)(})"},{"include":"#string"},{"include":"#class"}]},"escape":{"patterns":[{"name":"keyword.operator.jflex","match":"\\\\(b|n|t|f|r|R)"},{"name":"constant.character.escape.jflex","match":"\\\\."}]},"macro":{"name":"variable.other.macro.jflex","match":"({)(\\s*\\w+\\s*)(})"},"numeric":{"patterns":[{"name":"constant.numeric.jflex","match":"\\\\x[0-9a-fA-F]{2}"},{"name":"constant.numeric.jflex","match":"\\\\[0-3]?[0-7]{1,2}"},{"name":"constant.numeric.jflex","match":"\\\\U[0-9a-fA-F]{6}"},{"name":"constant.numeric.jflex","match":"\\\\u[0-9a-fA-F]{4}"},{"name":"constant.numeric.jflex","match":"\\\\u{[0-9a-fA-F]{1,6}}"}]},"regexp":{"patterns":[{"include":"#repeat"},{"include":"#macro"},{"include":"#charclass"},{"include":"#class"},{"include":"#numeric"},{"include":"#escape"},{"include":"#string"},{"include":"source.java#comments"},{"name":"keyword.operator.jflex","match":"\\.|\\+|\\*|\\(|\\)|\\?|\\||~|!|\\$|\\^|\\\\R|/"}]},"repeat":{"patterns":[{"name":"keyword.operator.jflex","match":"{\\s*\\d+\\s*(\\s*,\\s*\\d+\\s*)?}"}]},"rules":{"patterns":[{"name":"meta.states.jflex","begin":"(\\\u003c\\s*\\w+\\s*(?:,\\s*\\w+\\s*)*\\\u003e)\\s*({)(?!\\s*\\w+\\s*})","end":"}","patterns":[{"include":"#rules"}],"beginCaptures":{"1":{"name":"variable.parameter.jflex"},"2":{"name":"keyword.operator.jflex"}},"endCaptures":{"0":{"name":"keyword.operator.jflex"}}},{"name":"variable.parameter.jflex","match":"\\\u003c\\s*\\w+\\s*(,\\s*\\w+\\s*)*\\\u003e"},{"include":"#regexp"},{"name":"constant.language.jflex","match":"\u003c\u003cEOF\u003e\u003e"},{"name":"meta.code.jflex","begin":"({)(?!\\s*\\w+\\s*})","end":"}","patterns":[{"include":"source.java#code"}],"beginCaptures":{"1":{"name":"keyword.operator.jflex"}},"endCaptures":{"0":{"name":"keyword.operator.jflex"}}}]},"string":{"patterns":[{"name":"string","begin":"\"","end":"\"","patterns":[{"include":"#numeric"},{"include":"#escape"}]}]}}}