<?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>name</key>
    <string>leoOutput</string>
    <key>scopeName</key>
    <string>source.leo.leoOutput</string>
    <key>scope</key>
    <string>source.leo.leoOutput</string>
    <key>fileTypes</key>
    <array>
      <string>out</string>
      <string>state</string>
    </array>
    <key>extension</key>
    <array>
      <string>out</string>
      <string>state</string>
    </array>
    <key>patterns</key>
    <array>
      <dict>
        <key>include</key>
        <string>#section</string>
      </dict>
      <dict>
        <key>include</key>
        <string>#comments</string>
      </dict>
    </array>
    <key>repository</key>
    <dict>
      <key>line-comment</key>
      <dict>
        <key>comment</key>
        <string>Single-line comment</string>
        <key>name</key>
        <string>comment.line.leo.leoOutput</string>
        <key>begin</key>
        <string>//</string>
        <key>end</key>
        <string>$</string>
      </dict>
      <key>block-comment</key>
      <dict>
        <key>comment</key>
        <string>Block comment</string>
        <key>name</key>
        <string>comment.block.leo.leoOutput</string>
        <key>begin</key>
        <string>/\*</string>
        <key>end</key>
        <string>\*/</string>
      </dict>
      <key>comments</key>
      <dict>
        <key>comment</key>
        <string>Comment</string>
        <key>name</key>
        <string>comment.leo.leoOutput</string>
        <key>patterns</key>
        <array>
          <dict>
            <key>include</key>
            <string>#line-comment</string>
          </dict>
          <dict>
            <key>include</key>
            <string>#block-comment</string>
          </dict>
        </array>
      </dict>
      <key>section</key>
      <dict>
        <key>comment</key>
        <string>Section</string>
        <key>name</key>
        <string>section.leo.leoOutput</string>
        <key>patterns</key>
        <array>
          <dict>
            <key>comment</key>
            <string>Section header</string>
            <key>match</key>
            <string>^\s*\[\b(\w+)\b\]</string>
            <key>captures</key>
            <dict>
              <key>1</key>
              <dict>
                <key>name</key>
                <string>section.header.leo.leoOutput</string>
              </dict>
            </dict>
          </dict>
          <dict>
            <key>comment</key>
            <string>Section definition identifier</string>
            <key>match</key>
            <string>\b(\w+)\s*:</string>
            <key>captures</key>
            <dict>
              <key>1</key>
              <dict>
                <key>name</key>
                <string>section.definition.identifier.leo.leoOutput</string>
              </dict>
            </dict>
          </dict>
          <dict>
            <key>comment</key>
            <string>Section definition expression string</string>
            <key>name</key>
            <string>section.definition.expression.string.leo.leoOutput</string>
            <key>begin</key>
            <string>"</string>
            <key>end</key>
            <string>"</string>
          </dict>
          <dict>
            <key>comment</key>
            <string>Section definition expression value</string>
            <key>name</key>
            <string>section.definition.expression.value.leo.leoOutput</string>
            <key>match</key>
            <string>\b([0-9][0-9_]*([ui](8|16|32|64|128)|(field|group|scalar))?|true|false)\b</string>
          </dict>
          <dict>
            <key>comment</key>
            <string>Section definition expression address</string>
            <key>name</key>
            <string>section.definition.expression.address.leo.leoOutput</string>
            <key>match</key>
            <string>\baleo1[a-z0-9]*</string>
          </dict>
          <dict>
            <key>comment</key>
            <string>Section definition expression signature</string>
            <key>name</key>
            <string>section.definition.expression.signature.leo.leoOutput</string>
            <key>match</key>
            <string>\bsign1[a-z0-9_]*\b</string>
          </dict>
          <dict>
            <key>comment</key>
            <string>Section definition expression typed address value</string>
            <key>match</key>
            <string>(address)\(\w*\)</string>
            <key>captures</key>
            <dict>
              <key>1</key>
              <dict>
                <key>name</key>
                <string>section.definition.expression.value.address.typed.leo.leoOutput</string>
              </dict>
            </dict>
          </dict>
          <dict>
            <key>comment</key>
            <string>Section definition expression tuple group value</string>
            <key>match</key>
            <string>\b((([0-9]*)(group|field|scalar)))</string>
            <key>captures</key>
            <dict>
              <key>1</key>
              <dict>
                <key>name</key>
                <string>section.definition.expression.value.group.tuple.leo.leoOutput</string>
              </dict>
            </dict>
          </dict>
          <dict>
            <key>comment</key>
            <string>Section definition type</string>
            <key>name</key>
            <string>section.definition.type.leo.leoOutput</string>
            <key>match</key>
            <string>\b(string|field|group|bool|address|signature|u8|u16|u32|u64|u128|i8|i16|i32|i64|i128)\b</string>
          </dict>
          <dict>
            <key>comment</key>
            <string>Section definition type array dimension</string>
            <key>name</key>
            <string>section.definition.type.array.dimension.leo.leoOutput</string>
            <key>match</key>
            <string>\b[0-9]+\b</string>
          </dict>
          <dict>
            <key>comment</key>
            <string>Section definition type record | struct</string>
            <key>name</key>
            <string>section.definition.type.record.struct.leo.leoOutput</string>
            <key>match</key>
            <string>(?:(?&lt;=\b[a-z]+\w*\b:\s*)|(?&lt;=\b[a-z]+\w*\b:\s*\b[A-Z]+\w*\b\s*=\s*))\b[A-Z]+\w*\b(?:(?=\s*{)|(?=\s*=))</string>
          </dict>
          <dict>
            <key>comment</key>
            <string>Section definition internal types of record | struct</string>
            <key>begin</key>
            <string>(?&lt;=^\b[a-z]+\w*\b:\s*\b[A-Z]+\w*\b\s*=\s*\b[A-Z]+\w*\b\s*{\s*)</string>
            <key>end</key>
            <string>};</string>
            <key>patterns</key>
            <array>
              <dict>
                <key>include</key>
                <string>#line-comment</string>
              </dict>
              <dict>
                <key>include</key>
                <string>#block-comment</string>
              </dict>
              <dict>
                <key>comment</key>
                <string>Section definition attribute of record | struct</string>
                <key>name</key>
                <string>section.definition.attribute.name.record.struct.leo.leoOutput</string>
                <key>match</key>
                <string>\b(\w+)\b\s*(?=:)</string>
              </dict>
              <dict>
                <key>comment</key>
                <string>Section definition internal type record | struct</string>
                <key>name</key>
                <string>section.definition.internal.type.record.struct.leo.leoOutput</string>
                <key>match</key>
                <string>(?&lt;=\b[a-z]+\w*\b:\s*)\b[A-Z]+\w*\b(?=\s*{)</string>
              </dict>
              <dict>
                <key>comment</key>
                <string>Section definition expression value</string>
                <key>name</key>
                <string>section.definition.expression.value.leo.leoOutput</string>
                <key>match</key>
                <string>\b([0-9][0-9_]*([ui](8|16|32|64|128)|(field|group|scalar))?|true|false)\b</string>
              </dict>
              <dict>
                <key>comment</key>
                <string>Section definition expression address</string>
                <key>name</key>
                <string>section.definition.expression.address.leo.leoOutput</string>
                <key>match</key>
                <string>\baleo1[a-z0-9]*</string>
              </dict>
              <dict>
                <key>comment</key>
                <string>Section definition expression signature</string>
                <key>name</key>
                <string>section.definition.expression.signature.leo.leoOutput</string>
                <key>match</key>
                <string>\bsign1[a-z0-9_]*\b</string>
              </dict>
            </array>
          </dict>
          <dict>
            <key>comment</key>
            <string>Storage type const</string>
            <key>name</key>
            <string>storage.type.const.leo.leoOutput</string>
            <key>match</key>
            <string>\b(const)\b</string>
          </dict>
          <dict>
            <key>comment</key>
            <string>Storage type constant</string>
            <key>name</key>
            <string>storage.type.constant.leo.leoOutput</string>
            <key>match</key>
            <string>\b(constant)\b</string>
          </dict>
          <dict>
            <key>comment</key>
            <string>Storage type public</string>
            <key>name</key>
            <string>storage.type.public.leo.leoOutput</string>
            <key>match</key>
            <string>\b(public)\b</string>
          </dict>
          <dict>
            <key>comment</key>
            <string>Storage type private</string>
            <key>name</key>
            <string>storage.type.private.leo.leoOutput</string>
            <key>match</key>
            <string>\b(private)\b</string>
          </dict>
        </array>
      </dict>
    </dict>
  </dict>
</plist>