   components:
     patterns: [
       {
-        begin: '(?=([a-zA-Z_.\-][a-zA-Z_.\-0-9]*)?)'  # (?) Comp can be empty
-        end: '\\||(?=;)'
-        endCaptures:
-          0:
-            name: 'punctuation.grammar-rule.component-separator.jison'  # |
-        comment: 'Match each component in a grammar rule'
-        name: 'meta.section.component'
-        patterns: [
-          {
-            include: '#comments'
-            comment: 'Comments can be also inside grammar components'
-          }
-          {
-            begin: '\''
+        begin: "(?=([a-zA-Z_.\-][a-zA-Z_.\-0-9]*)?)"  # (?) Comp can be empty
+        end: "\\||(?=;)"
+        endCaptures:
+          0:
+            name: "punctuation.grammar-rule.component-separator.jison"  # |
+        comment: "Match each component in a grammar rule"
+        name: "meta.section.component"
+        patterns: [
+          {
+            include: "#comments"
+            comment: "Comments can be also inside grammar components"
+          }
+          {
+            begin: "'"
             beginCaptures:
               0:
-                name: 'punctuation.definition.string.begin.jison'
-            end: '\''
+                name: "punctuation.definition.string.begin.jison"
+            end: "'"
             endCaptures:
               0:
-                name: 'punctuation.definition.string.end.jison'
-            comment: 'Match single character tokens inside components'
-            name: 'string.quoted.single.character-token.jison'
+                name: "punctuation.definition.string.end.jison"
+            comment: "Match single character tokens inside components"
+            name: "string.quoted.single.character-token.jison"
             patterns: [
               #TODO {
-              #  include: '#string_escaped_char'
+              #  include: "#string_escaped_char"
               #}
               # {
-              #  include: '#line_continuation_character'
+              #  include: "#line_continuation_character"
               #}
             ]
           }
           {
-            include: '#directives'
-          }
-          {
-            include: '#symbols'
-          }
-          {
-            include: '#actions'
+            include: "#directives"
+          }
+          {
+            include: "#symbols"
+          }
+          {
+            include: "#actions"
           }
         ]
       }

  comments:
    patterns: [
      {
        name: 'comment.line.double-slash.jison'
        match: '//.*$'
      }
      {
        contentName: 'comment.block.jison'
        begin: '/\\*'
        end: '\\*/'
        captures:
          0:
            name: 'punctuation.definition.comment.jison'
      }
    ]
  numbers:
    patterns: [
      {
        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: 'constant.numeric.c'
      }
    ]
  block:
    patterns: [
      {
        begin: '\\{'
        beginCaptures:
          0:
            name: 'punctuation.section.block.begin.c'
        end: '\\}|(?=\\s*#\\s*endif\\b)'
        endCaptures:
          0:
            name: 'punctuation.section.block.end.c'
        name: 'meta.block.c'
        patterns: [
          {
            include: 'source.js'
          }
        ]
      }
    ]

  directives:
    patterns: [
      {
        match: "%[a-z\-]+"
        comment: "Match %-directives"
        name: "keyword.control.directive.jison"
      }
    ]
  symbols:
    patterns: [
      {
        match: "[a-zA-Z_.\-][a-zA-Z_.\-0-9]*"
        comment: "Match valid symbols"
        name: "variable.grammar-rule.token-type.jison"
      }
    ]
  types:
    patterns: [
      {
        begin: "<"
        end: ">"
        beginCaptures:
          0:
            name: "punctuation.type-declaration.begin.jison"
        endCaptures:
          0:
            name: "punctuation.type-declaration.end.jison"
        comment: "Match type declarations"
        patterns: [
          {
            match: "[$a-zA-Z\_][$a-zA-Z0-9\_]*"
            comment: "A valid JS identifier"
          }
        ]
      }
