<?xml version="1.0" encoding="utf-8" ?>
<Classifications>
	<Classifiers>
		<!-- These define the available classifiers -->
		<Classifier Id="PlainText" Type="PlainTextClassifier" />

		<Classifier Id="XML" Type="XmlClassifier" />

		<Classifier Id="XAML" Type="XmlClassifier" Mnemonic="_" />

		<Classifier Id="ReportingServices" Type="ReportingServicesClassifier" />

		<Classifier Id="ResourceFile" Type="ResourceFileClassifier" />

		<Classifier Id="HTML" Type="HtmlClassifier" />

		<Classifier Id="Markdown" Type="MarkdownClassifier" />

		<!-- This should work for pretty much all C-style languages: C#, C++, C, etc. -->
		<Classifier Id="CStyle" Type="CodeClassifier" XmlDocCommentDelimiter="///" QuadSlashDelimiter="////"
			OldStyleDocCommentDelimiter="/**">
			<Match Expression="^\s*#include\s*&quot;.*?&quot;" Options="Multiline" Classification="Undefined" />
			<Match Expression="\s*/\*.*?\*/" Options="Singleline" Classification="DelimitedComments" />
			<Match Expression="\s*//.*?([\r\n]{1,2}|$)" Classification="SingleLineComment" />
			<Match Expression="(&quot;&quot;[^&quot;])|((\$|@)?(@|R|\$)&quot;{1,3}(.|[\r\n])*?&quot;{1,3}|\$&quot;{1,3}(.|[\r\n])*?&quot;{1,3}|&quot;{1,3}(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;{1,3}|[^\\]{1}&quot;{1,3}))"
				Classification="NormalStringLiteral" />
			<Match Expression="(?&lt;=^\s*#(pragma )?region).*?[\r\n]{1,2}" Options="Multiline" Classification="RegionDirective" />
			<Match Expression="(?&lt;=^\s*#endregion).*?[\r\n]{1,2}" Options="Multiline" Classification="RegionDirective" />
		</Classifier>

		<!-- Like CStyle but for JavaScript/TypeScript which allow single quotes for strings.  The old style doc
		  comments delimiter is omitted as TypeScript uses it for markdown comments. -->
		<Classifier Id="CStyleScript" Type="CodeClassifier" XmlDocCommentDelimiter="///" QuadSlashDelimiter="////">
			<Match Expression="\s*/\*.*?\*/" Options="Singleline" Classification="DelimitedComments" />
			<Match Expression="\s*//.*?([\r\n]{1,2}|$)" Classification="SingleLineComment" />
			<Match Expression="(&quot;&quot;)|((\$|@)?(@|R|\$)&quot;(.|[\r\n])*?&quot;|\$&quot;(.|[\r\n])*?&quot;|&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))"
				Classification="NormalStringLiteral" />
			<Match Expression="'(.|\\'|\\\r\n)*?((\\\\)+'|[^\\]{1}')" Classification="NormalStringLiteral" />
			<Match Expression="(?&lt;=^\s*#region).*?[\r\n]{1,2}" Options="Multiline" Classification="RegionDirective" />
		</Classifier>

		<!-- Like CStyleScript but for JavaScript/TypeScript mixed with HTML.  We can't reliably handle both in the
		     general code classifier.  The classifier will do it's best to classify the code and HTML content but the
				 C-style options will not be applied. -->
		<Classifier Id="ScriptWithHtml" Type="ScriptWithHtmlClassifier" XmlDocCommentDelimiter="///" QuadSlashDelimiter="////">
			<Match Expression="\s*/\*.*?\*/" Options="Singleline" Classification="DelimitedComments" />
			<Match Expression="\s*//.*?([\r\n]{1,2}|$)" Classification="SingleLineComment" />
			<Match Expression="(&quot;&quot;)|((\$|@)?(@|R|\$)&quot;(.|[\r\n])*?&quot;|\$&quot;(.|[\r\n])*?&quot;|&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))"
				Classification="NormalStringLiteral" />
			<Match Expression="'(.|\\'|\\\r\n)*?((\\\\)+'|[^\\]{1}')" Classification="NormalStringLiteral" />
			<Match Expression="(?&lt;=^\s*#region).*?[\r\n]{1,2}" Options="Multiline" Classification="RegionDirective" />
		</Classifier>

		<!-- This should work for pretty much all VB-style languages: VB, VB.NET, VBScripts, etc. -->
		<Classifier Id="VBStyle" Type="CodeClassifier" XmlDocCommentDelimiter="'''" QuadSlashDelimiter="''''">
			<Match Expression="\s*('.*?|Rem(\t| ).*?|Rem)([\r\n]{1,2}|$)" Options="IgnoreCase" Classification="SingleLineComment" />
			<Match Expression="&quot;(.|&quot;&quot;)*?&quot;" Classification="NormalStringLiteral" />
			<Match Expression="(?&lt;=^\s*#Region).*?[\r\n]{1,2}" Options="Multiline" Classification="RegionDirective" />
		</Classifier>

		<Classifier Id="FSharp" Type="CodeClassifier" XmlDocCommentDelimiter="///" QuadSlashDelimiter="////">
			<Match Expression="\s*\(\*.*?\*\)" Options="Singleline" Classification="DelimitedComments" />
			<Match Expression="\s*//.*?([\r\n]{1,2}|$)" Classification="SingleLineComment" />
			<Match Expression="(&quot;&quot;)|(\$?@&quot;(.|[\r\n])*?&quot;|\$&quot;(.|[\r\n])*?&quot;|&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))"
				Classification="NormalStringLiteral" />
			<Match Expression="(?&lt;=^\s*#region).*?[\r\n]{1,2}" Options="Multiline" Classification="RegionDirective" />
		</Classifier>

		<Classifier Id="SQL" Type="CodeClassifier">
			<Match Expression="\s*/\*.*?\*/" Options="Singleline" Classification="DelimitedComments" />
			<Match Expression="\s*--.*?([\r\n]{1,2}|$)" Classification="SingleLineComment" />
			<Match Expression="'(.|\\'|\\\r\n)*?((\\\\)+'|[^\\]{1}')" Classification="NormalStringLiteral" />
		</Classifier>

		<Classifier Id="PowerShell" Type="CodeClassifier">
			<Match Expression="\s*&lt;#.*?#&gt;" Options="Singleline" Classification="DelimitedComments" />
			<Match Expression="\s*#.*?([\r\n]{1,2}|$)" Classification="SingleLineComment" />
			<Match Expression="(&quot;&quot;)|(@&quot;(.|[\r\n])*?&quot;|&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))"
				Classification="NormalStringLiteral" />
		</Classifier>

		<Classifier Id="Python" Type="CodeClassifier">
			<Match Expression="\\(citep|code|deqn|dontrun|eqn|eqref|label|overline|ref){(?&gt;[^{}]+|{(?&lt;Depth&gt;)|}(?&lt;-Depth&gt;))*(?(Depth)(?!))}" Options="Singleline" Classification="Undefined" />
			<Match Expression="\\frac{(?&gt;[^{}]+|{(?&lt;Depth&gt;)|}(?&lt;-Depth&gt;))*(?(Depth)(?!))}{(?&gt;[^{}]+|{(?&lt;Depth&gt;)|}(?&lt;-Depth&gt;))*(?(Depth)(?!))}" Options="Singleline" Classification="Undefined" />
			<Match Expression="\s*#.*?([\r\n]{1,2}|$)" Classification="SingleLineComment" />
			<Match Expression="(&quot;&quot;)|(@&quot;(.|[\r\n])*?&quot;|&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))"
				Classification="NormalStringLiteral" />
			<Match Expression="('')|('(.|\\'|\\\r\n)*?((\\\\)+'|[^\\]{1}'))"
				Classification="NormalStringLiteral" />
		</Classifier>

		<Classifier Id="StyleSheet" Type="RegexClassifier">
			<Match Expression="\s*/\*.*?\*/" Options="Singleline" Classification="DelimitedComments" />
			<Match Expression="(&quot;&quot;)|(@&quot;(.|[\r\n])*?&quot;|&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))"
				Classification="NormalStringLiteral" />
			<Match Expression="('')|('(.|\\'|\\\r\n)*?((\\\\)+'|[^\\]{1}'))" Classification="NormalStringLiteral" />
		</Classifier>

		<Classifier Id="Assembler" Type="RegexClassifier">
			<Match Expression="\s*;.*?([\r\n]{1,2}|$)" Classification="SingleLineComment" />
		</Classifier>

		<Classifier Id="BatchFile" Type="RegexClassifier">
			<Match Expression="\s*(::.*?|Rem(\t| ).*?|Rem)([\r\n]{1,2}|$)" Options="IgnoreCase" Classification="SingleLineComment" />
		</Classifier>

		<Classifier Id="LaTeX" Type="CodeClassifier">
			<Match Expression="\\(citep|code|deqn|dontrun|eqn|eqref|label|overline|ref){(?&gt;[^{}]+|{(?&lt;Depth&gt;)|}(?&lt;-Depth&gt;))*(?(Depth)(?!))}" Options="Singleline" Classification="Undefined" />
			<Match Expression="\\frac{(?&gt;[^{}]+|{(?&lt;Depth&gt;)|}(?&lt;-Depth&gt;))*(?(Depth)(?!))}{(?&gt;[^{}]+|{(?&lt;Depth&gt;)|}(?&lt;-Depth&gt;))*(?(Depth)(?!))}" Options="Singleline" Classification="Undefined" />
			<Match Expression="^%.*?$" Options="Multiline" Classification="SingleLineComment" />
			<Match Expression="{(?&gt;[^{}]+|{(?&lt;Depth&gt;)|}(?&lt;-Depth&gt;))*(?(Depth)(?!))}" Options="Singleline" Classification="PlainText" />
		</Classifier>

	</Classifiers>

	<!-- These map file extensions to a classifier -->
	<Extensions>
		<!-- Files with these extensions will be ignored.  Binary files are automatically ignored. -->
		<Extension Value="aff" Classifier="None" />
		<Extension Value="dic" Classifier="None" />
		<Extension Value="fxcop" Classifier="None" />
		<Extension Value="il" Classifier="None" />
		<Extension Value="ildump" Classifier="None" />
		<Extension Value="json" Classifier="None" />
		<Extension Value="map" Classifier="None" />
		<Extension Value="rds" Classifier="None" />
		<Extension Value="rproj" Classifier="None" />
		<Extension Value="rtf" Classifier="None" />
		<Extension Value="svg" Classifier="None" />

		<!-- Any extension not represented is tried first as XML and, if not XML, then as plain text -->
		<Extension Value="csv" Classifier="PlainText" />
		<Extension Value="txt" Classifier="PlainText" />

		<Extension Value="aml" Classifier="XML" />
		<Extension Value="axml" Classifier="XAML" />
		<Extension Value="config" Classifier="XML" />
		<Extension Value="content" Classifier="XML" />
		<Extension Value="database" Classifier="XML" />
		<Extension Value="datasource" Classifier="XML" />
		<Extension Value="dbml" Classifier="XML" />
		<Extension Value="disco" Classifier="XML" />
		<Extension Value="discomap" Classifier="XML" />
		<Extension Value="dtsx" Classifier="XML" />
		<Extension Value="edmx" Classifier="XML" />
		<Extension Value="exclude" Classifier="XML" />
		<Extension Value="fxcop" Classifier="XML" />
		<Extension Value="items" Classifier="XML" />
		<Extension Value="layout" Classifier="XML" />
		<Extension Value="maml" Classifier="XML" />
		<Extension Value="manifest" Classifier="XML" />
		<Extension Value="myapp" Classifier="XML" />
		<Extension Value="nunit" Classifier="XML" />
		<Extension Value="nuspec" Classifier="XML" />
		<Extension Value="proj" Classifier="XML" />
		<Extension Value="publishproj" Classifier="XML" />
		<Extension Value="pubxml" Classifier="XML" />
		<Extension Value="ruleset" Classifier="XML" />
		<Extension Value="settings" Classifier="XML" />
		<Extension Value="sitemap" Classifier="XML" />
		<Extension Value="snippets" Classifier="XML" />
		<Extension Value="soap" Classifier="XML" />
		<Extension Value="svcinfo" Classifier="XML" />
		<Extension Value="svcmap" Classifier="XML" />
		<Extension Value="tasks" Classifier="XML" />
		<Extension Value="tokens" Classifier="XML" />
		<Extension Value="svcinfo" Classifier="XML" />
		<Extension Value="targets" Classifier="XML" />
		<Extension Value="vsct" Classifier="XML" />
		<Extension Value="vsixmanifest" Classifier="XML" />
		<Extension Value="vstemplate" Classifier="XML" />
		<Extension Value="webinfo" Classifier="XML" />
		<Extension Value="wsdl" Classifier="XML" />
		<Extension Value="xaml" Classifier="XAML" />
		<Extension Value="xamlcfg" Classifier="XML" />
		<Extension Value="xml" Classifier="XML" />
		<Extension Value="xsd" Classifier="XML" />
		<Extension Value="xsl" Classifier="XML" />
		<Extension Value="xslt" Classifier="XML" />
		<Extension Value="xsx" Classifier="XML" />

		<Extension Value="rdl" Classifier="ReportingServices" />
		<Extension Value="rdlc" Classifier="ReportingServices" />

		<Extension Value="resx" Classifier="ResourceFile" />

		<Extension Value="asax" Classifier="HTML" />
		<Extension Value="ascx" Classifier="HTML" />
		<Extension Value="asmx" Classifier="HTML" />
		<Extension Value="asp" Classifier="HTML" />
		<Extension Value="aspx" Classifier="HTML" />
		<Extension Value="cshtml" Classifier="HTML" />
		<Extension Value="htm" Classifier="HTML" />
		<Extension Value="html" Classifier="HTML" />
		<Extension Value="master" Classifier="HTML" />
		<Extension Value="msha" Classifier="HTML" />
		<Extension Value="php" Classifier="HTML" />
		<Extension Value="svc" Classifier="HTML" />
		<Extension Value="vbhtml" Classifier="HTML" />

		<Extension Value="markdown" Classifier="Markdown" />
		<Extension Value="md" Classifier="Markdown" />
		<Extension Value="mdown" Classifier="Markdown" />
		<Extension Value="mdwn" Classifier="Markdown" />
		<Extension Value="mkd" Classifier="Markdown" />
		<Extension Value="mkdn" Classifier="Markdown" />
		<Extension Value="mmd" Classifier="Markdown" />
		<Extension Value="rmd" Classifier="Markdown" />
		<Extension Value="rst" Classifier="Markdown" />

		<Extension Value="c" Classifier="CStyle" />
		<Extension Value="cs" Classifier="CStyle" />
		<Extension Value="cpp" Classifier="CStyle" />
		<Extension Value="cu" Classifier="CStyle" />
		<Extension Value="cuh" Classifier="CStyle" />
		<Extension Value="cxx" Classifier="CStyle" />
		<Extension Value="cc" Classifier="CStyle" />
		<Extension Value="h" Classifier="CStyle" />
		<Extension Value="hpp" Classifier="CStyle" />
		<Extension Value="hxx" Classifier="CStyle" />
		<Extension Value="hh" Classifier="CStyle" />
		<Extension Value="inl" Classifier="CStyle" />
		<Extension Value="rc" Classifier="CStyle" />
		<Extension Value="xpp" Classifier="CStyle" />
		<Extension Value="js" Classifier="CStyleScript" />
		<Extension Value="ts" Classifier="CStyleScript" />
		
		<Extension Value="jsx" Classifier="ScriptWithHtml" />
		<Extension Value="tsx" Classifier="ScriptWithHtml" />

		<Extension Value="bas" Classifier="VBStyle" />
		<Extension Value="vb" Classifier="VBStyle" />
		<Extension Value="vbs" Classifier="VBStyle" />

		<Extension Value="fs" Classifier="FSharp" />

		<Extension Value="sql" Classifier="SQL" />

		<Extension Value="ps" Classifier="PowerShell" />
		<Extension Value="ps1" Classifier="PowerShell" />

		<!-- These files only need comment spell checking and use a comment style similar to PowerShell -->
		<Extension Value="editorconfig" Classifier="PowerShell" />
		<Extension Value="gitattributes" Classifier="PowerShell" />
		<Extension Value="gitignore" Classifier="PowerShell" />
		<Extension Value="yml" Classifier="PowerShell" />

		<Extension Value="py" Classifier="Python" />
		<Extension Value="r" Classifier="Python" />

		<Extension Value="css" Classifier="StyleSheet" />
		<Extension Value="less" Classifier="StyleSheet" />
		<Extension Value="scss" Classifier="StyleSheet" />

		<Extension Value="asm" Classifier="Assembler" />
		<Extension Value="def" Classifier="Assembler" />

		<Extension Value="bat" Classifier="BatchFile" />
		<Extension Value="cmd" Classifier="BatchFile" />

		<Extension Value="rd" Classifier="LaTeX" />
		<Extension Value="rnw" Classifier="LaTeX" />
		<Extension Value="sty" Classifier="LaTeX" />
		<Extension Value="tex" Classifier="LaTeX" />
	</Extensions>

</Classifications>
