Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
279 changes: 279 additions & 0 deletions contrib/Parsley.tmLanguage
Original file line number Diff line number Diff line change
@@ -0,0 +1,279 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>parsley</string>
</array>
<key>name</key>
<string>Parsley Grammar</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.parsley</string>
</dict>
</dict>
<key>match</key>
<string>(#).*$\n?</string>
<key>name</key>
<string>comment.line.parsley</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(0x\h*))</string>
<key>name</key>
<string>constant.numeric.integer.hexadecimal.parsley</string>
</dict>
<dict>
<key>match</key>
<string>\b([0-9]+)</string>
<key>name</key>
<string>constant.numeric.integer.decimal.parsley</string>
</dict>
<dict>
<key>begin</key>
<string>(-&gt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.rule.value.parsley</string>
</dict>
</dict>
<key>end</key>
<string>(\))|$</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.rule.value.parsley</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.python</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>([?!]\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.rule.parsley</string>
</dict>
</dict>
<key>end</key>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.rule.parsley</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.python</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\^\s*\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.parsley</string>
</dict>
</dict>
<key>end</key>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.parsley</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.label.parsley</string>
</dict>
<dict>
<key>begin</key>
<string>^([a-zA-Z_][a-zA-Z_0-9]*)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.function.parsley</string>
</dict>
</dict>
<key>end</key>
<string>(=)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.rule-assignment.parsley</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>[:@][a-zA-Z_][a-zA-Z_0-9]*</string>
<key>name</key>
<string>variable.parameter.parsley</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>:[a-zA-Z_][a-zA-Z_0-9]*</string>
<key>name</key>
<string>variable.other.rule.parsley</string>
</dict>
<dict>
<key>match</key>
<string>[*+?~|,()&lt;&gt;{}]</string>
<key>name</key>
<string>keyword.operator.parsley</string>
</dict>
<dict>
<key>include</key>
<string>#string_quoted_single</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>escaped_char</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.hex.parsley</string>
</dict>
<key>10</key>
<dict>
<key>name</key>
<string>constant.character.escape.tab.parsley</string>
</dict>
<key>11</key>
<dict>
<key>name</key>
<string>constant.character.escape.vertical-tab.parsley</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.character.escape.newline.parsley</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.character.escape.backlash.parsley</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>constant.character.escape.double-quote.parsley</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>constant.character.escape.single-quote.parsley</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>constant.character.escape.backspace.parsley</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>constant.character.escape.formfeed.parsley</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>constant.character.escape.linefeed.parsley</string>
</dict>
<key>9</key>
<dict>
<key>name</key>
<string>constant.character.escape.return.parsley</string>
</dict>
</dict>
<key>match</key>
<string>(\\x[0-9A-F]{2})|(\\\n)|(\\\\)|(\\\")|(\\')|(\\b)|(\\f)|(\\n)|(\\r)|(\\t)</string>
</dict>
<key>string_quoted_single</key>
<dict>
<key>begin</key>
<string>(')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.parsley</string>
</dict>
</dict>
<key>comment</key>
<string>single quoted string</string>
<key>end</key>
<string>(')|(\n)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.parsley</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.unclosed-string.parsley</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.parsley</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#escaped_char</string>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>source.parsley</string>
<key>uuid</key>
<string>79608D40-9373-48F9-A200-BF7395C59567</string>
</dict>
</plist>