--- 
name: Pascal
fileTypes: 
- pas
- p
scopeName: source.pascal
uuid: F42FA544-6B1C-11D9-9517-000D93589AF6
foldingStartMarker: \b(?i:(function|package|procedure|try|type))\b
patterns: 
- name: keyword.control.pascal
  match: \b(?i:(absolute|abstract|all|and|and_then|array|as|asm|attribute|begin|bindable|case|class|const|constructor|destructor|div|do|do|else|end|except|export|exports|external|far|file|finalization|finally|for|forward|goto|if|implementation|import|in|inherited|initialization|interface|interrupt|is|label|library|mod|module|name|near|nil|not|object|of|only|operator|or|or_else|otherwise|packed|pow|private|program|property|protected|public|published|qualified|record|repeat|resident|restricted|segment|set|shl|shr|then|to|try|type|unit|until|uses|value|var|view|virtual|while|with|xor))\b
- name: meta.function.prototype.pascal
  captures: 
    "1": 
      name: storage.type.prototype.pascal
    "2": 
      name: entity.name.function.prototype.pascal
  match: \b(?i:(function|procedure))\b\s+(\w+(\.\w+)?)(\(.*?\))?;\s*(?=(?i:attribute|forward|external))
- name: meta.function.pascal
  captures: 
    "1": 
      name: storage.type.function.pascal
    "2": 
      name: entity.name.function.pascal
  match: \b(?i:(function|procedure))\b\s+(\w+(\.\w+)?)
- name: constant.numeric.pascal
  match: \b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\b
- name: comment.line.double-dash.pascal.one
  captures: 
    "1": 
      name: punctuation.definition.comment.pascal
  match: (--).*$\n?
- name: comment.line.double-slash.pascal.two
  captures: 
    "1": 
      name: punctuation.definition.comment.pascal
  match: (//).*$\n?
- name: comment.block.pascal.one
  captures: 
    "0": 
      name: punctuation.definition.comment.pascal
  begin: \(\*
  end: \*\)
- name: comment.block.pascal.two
  captures: 
    "0": 
      name: punctuation.definition.comment.pascal
  begin: \{
  end: \}
- name: string.quoted.double.pascal
  endCaptures: 
    "0": 
      name: punctuation.definition.string.end.pascal
  begin: "\""
  beginCaptures: 
    "0": 
      name: punctuation.definition.string.begin.pascal
  end: "\""
  patterns: 
  - name: constant.character.escape.pascal
    match: \\.
  comment: Double quoted strings are an extension and (generally) support C-style escape sequences.
- name: string.quoted.single.pascal
  endCaptures: 
    "0": 
      name: punctuation.definition.string.end.pascal
  begin: "'"
  applyEndPatternLast: 1
  beginCaptures: 
    "0": 
      name: punctuation.definition.string.begin.pascal
  end: "'"
  patterns: 
  - name: constant.character.escape.apostrophe.pascal
    match: "''"
foldingStopMarker: \b(?i:(end))\b
keyEquivalent: ^~P
