Sublime Forum

convert_syntax.py Exception: unknown pattern type:

#1

While trying to convert my homegrown PLSQL.tmLanguage to sublime-syntax I get the above mentioned exception. I managed to locate the rule:

      <dict>
        <key>name</key>
        <string>meta.ddl.alter.table.sql</string>
        <key>begin</key>
        <string>(?ix)\b
                  (alter\s+table\s+)
                  (([a-z][a-z0-9_#\$]*\.)?([a-z][a-z0-9_#\$]*))
                  \b</string>
        <key>end</key>
        <string>(;/])</string>
        <key>captures</key>
        <dict>
          <key>1</key>
          <dict>
            <key>name</key>
            <string>keyword.sql</string>
          </dict>
          <key>4</key>
          <dict>
            <key>name</key>
            <string>entity.name.sql</string>
          </dict>
        </dict>
        <key>patterns</key>
        <array>
          <dict>
            <key>begin</key>
            <string>\(\D</string>
            <key>end</key>
            <string>\)</string>
            <key>patterns</key>
            <array>
              <dict>
                <key>include</key>
                <string>#column_definition</string>
              </dict>
            </array>
          </dict>
          <dict>
            <key>patterns</key>  
            <array>
              <dict>
                <key>name</key>
                <string>keyword.plsql</string>
                <key>match</key>
                <string>(?i)(check|constraint|(foreign|primary)\s+key|references|unique)</string>
              </dict>
              <dict>
                <key>name</key>
                <string>keyword.sql</string>
                <key>match</key>
                <string>(?i)\b(add|drop|modify)\s*\b</string>
              </dict>
              <dict>
                <key>name</key>
                <string>keyword.sql</string>
                <key>match</key>
                <string>(?i)\busing\s+index\b</string>
              </dict>
            </array>
          </dict>
          <dict>
            <key>include</key>
            <string>#segments_attribute_clause</string>
          </dict>
        </array>
      </dict>

This rule is translated to the following JSON. I put a comment at the exception raising part .

{
'end': '(;/])', 
'name': 'meta.ddl.alter.table.sql', 
'begin': '(?ix)\\b\n                  (alter\\s+table\\s+)\n                  (([a-z][a-z0-9_#\\$]*\\.)?([a-z][a-z0-9_#\\$]*))\n                  \\b', 
'patterns': 
    
        {
        'end': '\\)', 
        'begin': '\\(\\D', 
        'patterns': {'include': '#column_definition'}]
        }, 
        {
        'patterns': // Exception: make_context will not find "begin", "match" or "include" in "for p in patterns:" ? 
            
                {
                'match': '(?i)(check|constraint|(foreign|primary)\\s+key|references|unique)', 
                'name': 'keyword.plsql'
                }, 
                {
                'match': '(?i)\\b(add|drop|modify)\\s*\\b', 
                'name': 'keyword.sql'
                }, 
                {
                'match': '(?i)\\busing\\s+index\\b', 
                'name': 'keyword.sql'
                }
            ]
        }, 
        {
        'include': '#segments_attribute_clause'
        }
    ], 
'captures': 
    {
    '4': {'name': 'entity.name.sql'},
    '1': {'name': 'keyword.sql'}
    }
}

I don’t know if my rule is wrong (but working) or convert_syntax.py needs an update.
The error message

Traceback (most recent call last): File "C:\Program Files\Sublime Text 3\sublime_plugin.py", line 535, in run_ return self.run() File "convert_syntax in C:\Program Files\Sublime Text 3\Packages\Default.sublime-package", line 446, in run File "convert_syntax in C:\Program Files\Sublime Text 3\Packages\Default.sublime-package", line 370, in convert File "convert_syntax in C:\Program Files\Sublime Text 3\Packages\Default.sublime-package", line 236, in make_context File "convert_syntax in C:\Program Files\Sublime Text 3\Packages\Default.sublime-package", line 298, in make_context Exception: unknown pattern type:

0 Likes