<SyntaxDefinition name="Json" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008"
                  extensions=".json">
  
  <Color name="Bool" foreground="#61AFEF" />
  <Color name="Number" foreground="#F78C6C" />
  <Color name="String" foreground="#C3E88D" />
  <Color name="Null" foreground="#7F848E" />
  <Color name="FieldName" foreground="#FFCB6B" />
  <Color name="Punctuation" foreground="#89DDFF" />

  <RuleSet name="String">
    <Span begin="\\" end="."/>
  </RuleSet>

  <RuleSet name="Object">
    <Span color="FieldName" ruleSet="String">
      <Begin>"</Begin>
      <End>"</End>
    </Span>
    <Span color="FieldName" ruleSet="String">
      <Begin>'</Begin>
      <End>'</End>
    </Span>
    <Span color="Punctuation" ruleSet="Expression">
      <Begin>:</Begin>
    </Span>
    <Span color="Punctuation">
      <Begin>,</Begin>
    </Span>
  </RuleSet>

  <RuleSet name="Array">
    <Import ruleSet="Expression"/>
    <Span color="Punctuation">
      <Begin>,</Begin>
    </Span>
  </RuleSet>

  <RuleSet name="Expression">
    <Keywords color="Bool" >
      <Word>true</Word>
      <Word>false</Word>
    </Keywords>
    <Keywords color="Null" >
      <Word>null</Word>
    </Keywords>
    <Span color="String" ruleSet="String">
      <Begin>"</Begin>
      <End>"</End>
    </Span>
    <Span color="String" ruleSet="String">
      <Begin>'</Begin>
      <End>'</End>
    </Span>
    <Span color="Punctuation" ruleSet="Object" multiline="true">
      <Begin>\{</Begin>
      <End>\}</End>
    </Span>
    <Span color="Punctuation" ruleSet="Array" multiline="true">
      <Begin>\[</Begin>
      <End>\]</End>
    </Span>
    <Rule color="Number">
      \b0[xX][0-9a-fA-F]+|(\b\d+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?
    </Rule>
  </RuleSet>

  <RuleSet>
    <Import ruleSet="Expression"/>
  </RuleSet>
</SyntaxDefinition>