Skip to content

Instantly share code, notes, and snippets.

@kestred
Created February 13, 2014 06:15
Show Gist options
  • Save kestred/8970660 to your computer and use it in GitHub Desktop.
Save kestred/8970660 to your computer and use it in GitHub Desktop.
# [PackageDev] target_format: plist, ext: tmLanguage
---
name: DC File
scopeName: source.dcfile
fileTypes: [dc, dcf]
uuid: 43bb3bb2-4a23-4b91-9e46-c934cb20ed60
foldingStartMarker: \{
foldingStopMarker: \{
patterns:
- include: "#comments"
- name: meta.import.from.dcfile
begin: \b(from)\b
beginCaptures:
'1': { name: keyword.control.from.dcfile }
patterns:
- name: keyword.control.import.dcfile
match: import
end: \n
- name: meta.import.dcfile
begin: \bimport\b
beginCaptures:
'1': { name: keyword.control.import.dcfile }
end: \n
- name: constant.numeric.hexnum.dcfile
match: <[0-9A-Fa-f]+>
- name: meta.typedef.dcfile
begin: ^\s*(typedef)\s+
beginCaptures:
'1': { name: storage.type.defintion.dcfile }
patterns:
- include: "#builtinType"
end: ;
- name: meta.class.dcfile
begin: ^\s*(dclass|struct)\s+([A-Za-z_][A-Za-z0-9_]*)[\s]*(\n|\{)
beginCaptures:
'1': { name: storage.type.class.dcfile }
patterns:
- include: "#comments"
- include: "#field"
- include: "#method"
end: \};
- name: meta.class.dcfile
begin: ^\s*(dclass|struct)\s+([A-Za-z_][A-Za-z0-9_]*)\s*:\s*([A-Za-z_][A-Za-z0-9_]*)(\s*,\s*([A-Za-z_][A-Za-z0-9_]*))*\s*(\n|\{)
beginCaptures:
'1': { name: storage.type.class.dcfile }
'3': { name: entity.other.inherited-class }
'5': { name: entity.other.inherited-class }
patterns:
- include: "#comments"
- include: "#field"
- include: "#method"
end: \};
- name: invalid.keyword.dcfile
match: \b([A-Za-z_][A-Za-z0-9_]*)\b
repository:
builtinType:
name: storage.type.builtin.dcfile
match: \b(u?int(8|16|32|64)|float(32|64)|string|blob|char)\b
comments:
patterns:
- name: comment.line.dcfile
match: //.*$\n?
- name: comment.block.dcfile
begin: /\*
end: \*/
field:
name: meta.field.dcfile
begin: ^\s*([A-Za-z_][A-Za-z0-9_]*)(/([0-9]*))?\s+([A-Za-z_][A-Za-z0-9_]*)\s*
beginCaptures:
'1': { name: storage.type.field.dcfile }
'3': { name: constant.numeric.divisor.dcfile }
patterns:
- include: "#keyword"
end: ;
method:
name: meta.method.dcfile
begin: ^\s*([A-Za-z_][A-Za-z0-9_]*)\s*
beginCaptures:
'1': { name: entity.name.function.dcfile }
patterns:
- include: "#atomic"
- include: "#molecular"
- include: "#keyword"
end: ;
molecular:
name: meta.molecular.dcfile
match: :[^;]*
atomic:
name: meta.atomic.dcfile
begin: \(
patterns:
- name: meta.parameter.named.dcfile
match: \b([A-Za-z_][A-Za-z0-9_]*)\b(\(([0-9]+)\s*-\s*([0-9]+)\))?(%([0-9]*))?(/([0-9]*))?(\s+([A-Za-z_][A-Za-z0-9_]*))?(\[([0-9]*)\])?\s*,?
captures:
'1': { name: storage.type.parameter.dcfile }
'3': { name: constant.numeric.range.min.dcfile }
'4': { name: constant.numeric.range.max.dcfile }
'6': { name: constant.numeric.modulus.dcfile }
'8': { name: constant.numeric.divisor.dcfile }
'9': { name: variable.parameter.name.dcfile }
end: \)
keyword:
name: constant.other.keyword.dcfile
match: \b([A-Za-z_][A-Za-z0-9_]*)\b
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment