<Comment>// JavaScript React</Comment><br/>
<Normal Text></Normal Text><br/>
<Comment>/** </Comment><Tags>@author</Tags><Comment> Willy </Comment><HTML Tag><willy@wmail.com></HTML Tag><br/>
<Comment>  * </Comment><Custom Tags>@url</Custom Tags><Comment> https://reactjs.org/ **/</Comment><br/>
<Normal Text></Normal Text><br/>
<Module>import</Module><Normal Text> </Normal Text><Normal Text>React </Normal Text><Module>from</Module><Normal Text> </Normal Text><String>'react'</String><Symbol>;</Symbol><br/>
<Module>import</Module><Normal Text> { </Normal Text><Normal Text>PhotoStory</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><Normal Text>VideoStory </Normal Text><Normal Text>} </Normal Text><Module>from</Module><Normal Text> </Normal Text><String>'./stories'</String><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>function</Keyword><Normal Text> </Normal Text><Function Declaration>Story</Function Declaration><Normal Text>(</Normal Text><Normal Text>props) </Normal Text><Normal Text>{</Normal Text><br/>
<Normal Text>  </Normal Text><Keyword>const</Keyword><Normal Text> </Normal Text><Normal Text>SpecificStory </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Normal Text>components</Normal Text><Normal Text>[</Normal Text><Objects>props</Objects><Symbol>.</Symbol><Object Member>storyType</Object Member><Normal Text>]</Normal Text><Symbol>;</Symbol><br/>
<Normal Text>  </Normal Text><ControlFlow>return </ControlFlow><Component Tag><SpecificStory</Component Tag><Normal Text> </Normal Text><Attribute>story</Attribute><Symbol>=</Symbol><Code Brackets>{</Code Brackets><Normal Text> </Normal Text><Objects>props</Objects><Symbol>.</Symbol><Object Member>story</Object Member><Normal Text> </Normal Text><Code Brackets>}</Code Brackets><Normal Text> </Normal Text><Attribute>attr2</Attribute><Symbol>=</Symbol><Value>"</Value><EntityRef>&ref;</EntityRef><Value>"</Value><Normal Text> </Normal Text><Attribute>attr3</Attribute><Symbol>=</Symbol><Value>"Hello\n"</Value><Normal Text> </Normal Text><Component Tag>/></Component Tag><Symbol>;</Symbol><br/>
<Normal Text>} </Normal Text><br/>
<Normal Text></Normal Text><br/>
<Keyword>function</Keyword><Normal Text> </Normal Text><br/>
<Component Tag><Tag</Component Tag><Normal Text> </Normal Text><Attribute>attr1</Attribute><Symbol>=</Symbol><Code Brackets>{</Code Brackets><Normal Text> </Normal Text><Element Tag><tag/></Element Tag><Normal Text> </Normal Text><Keyword>function</Keyword><Normal Text> </Normal Text><Symbol><</Symbol><Normal Text>noTag</Normal Text><Symbol>/></Symbol><Normal Text> </Normal Text><ControlFlow>return</ControlFlow><Normal Text> </Normal Text><Reserved>class</Reserved><Normal Text> </Normal Text><Keyword>var</Keyword><Normal Text> </Normal Text><Hex>0x123</Hex><Normal Text> </Normal Text><Normal Text>{ } </Normal Text><Symbol>&</Symbol><Normal Text>noRef</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Function Name>hello</Function Name><Normal Text>(</Normal Text><Normal Text>) </Normal Text><Objects>React</Objects><Symbol>.</Symbol><Function Name>Component</Function Name><Normal Text>(</Normal Text><Normal Text>) </Normal Text><Code Brackets>}</Code Brackets><Normal Text> </Normal Text><Attribute>attr2</Attribute><Symbol>=</Symbol><Value>"</Value><EntityRef>&ref;</EntityRef><Value>"</Value><Component Tag>></Component Tag><br/>
<Tag Content Text>	/* no comment*/ function </Tag Content Text><Element Tag><tag/></Element Tag><Tag Content Text> return class var 0x123 </Tag Content Text><EntityRef>&ref;</EntityRef><Tag Content Text> hello() React.Component()</Tag Content Text><br/>
<Tag Content Text>	.</Tag Content Text><Element Tag><tag/></Element Tag><Tag Content Text> anyWord </Tag Content Text><Element Tag><tag/></Element Tag><br/>
<Tag Content Text>	</Tag Content Text><Code Brackets>{</Code Brackets><Normal Text> </Normal Text><Keyword>function</Keyword><Normal Text> </Normal Text><Symbol><</Symbol><Normal Text>tag</Normal Text><Symbol>></Symbol><Normal Text> </Normal Text><ControlFlow>return</ControlFlow><Normal Text> </Normal Text><Reserved>class</Reserved><Normal Text> </Normal Text><Keyword>var</Keyword><Normal Text> </Normal Text><Hex>0x123</Hex><Normal Text> </Normal Text><Function Name>hello</Function Name><Normal Text>(</Normal Text><Normal Text>) </Normal Text><Objects>React</Objects><Symbol>.</Symbol><Function Name>Component</Function Name><Normal Text>(</Normal Text><Normal Text>) </Normal Text><Code Brackets>}</Code Brackets><Tag Content Text> </Tag Content Text><br/>
<Component Tag></Tag></Component Tag><br/>
<Normal Text></Normal Text><br/>
<Element Tag><tag1></Element Tag><Tag Content Text> </Tag Content Text><Element Tag></tag1></Element Tag><br/>
<Element Tag><tag1></Element Tag><Tag Content Text> </Tag Content Text><Element Tag></</Element Tag><Error>Tag$</Error><Element Tag>></Element Tag><br/>
<Component Tag><Tag$></Component Tag><Tag Content Text> </Tag Content Text><Component Tag></tag></Component Tag><br/>
<Normal Text></Normal Text><br/>
<Element Tag><tag</Element Tag><Comment>/*comment*/</Comment><Attribute>attr1</Attribute><Comment>/*comment*/</Comment><Symbol>=</Symbol><Normal Text> </Normal Text><Comment>/*comment*/</Comment><Value>"value"</Value><Comment>/*comment*/</Comment><Attribute>attr2</Attribute><Normal Text> </Normal Text><Comment>/*comment*/</Comment><Attribute>attr3</Attribute><Symbol>=</Symbol><Value>'a'</Value><Normal Text> </Normal Text><Attribute>key</Attribute><Comment>/*comment*/</Comment><Attribute>key2</Attribute><Normal Text> </Normal Text><Element Tag>/></Element Tag><br/>
<Normal Text></Normal Text><br/>
<Comment>// Detect Valid tags</Comment><br/>
<Normal Text></Normal Text><br/>
<Comment>/* comment */</Comment><Normal Text> </Normal Text><Element Tag><tag></tag></Element Tag><br/>
<Normal Text>{ </Normal Text><Comment>/* comment </Comment><br/>
<Comment>	*/</Comment><Normal Text> </Normal Text><Component Tag><Tag</Component Tag><Normal Text> </Normal Text><Component Tag>/></Component Tag><Normal Text> </Normal Text><br/>
<Normal Text>	</Normal Text><Normal Text>word </Normal Text><Symbol><</Symbol><Normal Text>noTag</Normal Text><Symbol>/></Symbol><Normal Text> </Normal Text><Symbol>.</Symbol><Normal Text> </Normal Text><Symbol><</Symbol><Normal Text>noTag</Normal Text><Symbol>/></Symbol><Normal Text> } </Normal Text><Symbol><</Symbol><Normal Text>noTag</Normal Text><Symbol>/></Symbol><br/>
<ControlFlow>return </ControlFlow><Comment>/* comment</Comment><br/>
<Comment>	multiline */</Comment><Normal Text> </Normal Text><Element Tag><tag/></Element Tag><Normal Text> </Normal Text><Comment>/* comment */</Comment><Normal Text> </Normal Text><Component Tag><Tag/></Component Tag><br/>
<Symbol>&& </Symbol><Comment>/*comment*/</Comment><Normal Text> </Normal Text><Component Tag><Tag/></Component Tag><br/>
<Symbol>&</Symbol><Normal Text> </Normal Text><Comment>/*comment*/</Comment><Normal Text> </Normal Text><Symbol><</Symbol><Normal Text>noTag</Normal Text><Symbol>/></Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>  </Normal Text><Element Tag><tag/></Element Tag><br/>
<Normal Text>{ </Normal Text><Element Tag><hello></Element Tag><Tag Content Text>Hello</Tag Content Text><Element Tag></hello></Element Tag><Normal Text> }</Normal Text><br/>
<Symbol>?</Symbol><Component Tag><Tag</Component Tag><Normal Text> </Normal Text><Component Tag>/></Component Tag><Symbol>;</Symbol><br/>
<Normal Text>[ </Normal Text><Element Tag><tag</Element Tag><Normal Text> </Normal Text><Element Tag>/></Element Tag><Normal Text>  ( </Normal Text><Element Tag><tag</Element Tag><Normal Text> </Normal Text><Element Tag>/></Element Tag><Normal Text> ]</Normal Text><br/>
<Symbol>,</Symbol><Component Tag><Tag/></Component Tag><Normal Text>    </Normal Text><Symbol>=</Symbol><Component Tag><Tag/></Component Tag><br/>
<Symbol>&&</Symbol><Element Tag><tag/></Element Tag><Normal Text>   </Normal Text><Symbol>||</Symbol><Element Tag><tag/></Element Tag><br/>
<ControlFlow>return </ControlFlow><Element Tag><tag/></Element Tag><Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Module>default</Module><Element Tag><tag/></Element Tag><Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Component Tag><Tag></Component Tag><Tag Content Text> </Tag Content Text><Element Tag><tag></Element Tag><Tag Content Text> </Tag Content Text><Component Tag><tag$/></Component Tag><Tag Content Text> </Tag Content Text><Element Tag></tag></Element Tag><Tag Content Text> return </Tag Content Text><Component Tag></Tag></Component Tag><br/>
<Normal Text></Normal Text><br/>
<Normal Text>anyWord</Normal Text><Symbol><</Symbol><Normal Text>noTag</Normal Text><Symbol>></Symbol><br/>
<Normal Text>anyWord</Normal Text><Comment>/*comment*/</Comment><Normal Text> </Normal Text><Symbol><</Symbol><Normal Text>noTag</Normal Text><Symbol>/></Symbol><br/>
<Symbol>.<</Symbol><Normal Text>noTag</Normal Text><Symbol>></Symbol><br/>
<Symbol>&<</Symbol><Normal Text>notag</Normal Text><Symbol>></Symbol><Normal Text> </Normal Text><Symbol>|</Symbol><Normal Text> </Normal Text><Symbol><</Symbol><Normal Text>noTag</Normal Text><Symbol>/></Symbol><br/>
<Symbol>%</Symbol><Normal Text> </Normal Text><Comment>/* comment*/</Comment><Normal Text> </Normal Text><Symbol><</Symbol><Normal Text>noTag</Normal Text><Symbol>/></Symbol><br/>
<Normal Text></Normal Text><br/>
<Comment>// Non-ASCII tag name & attribute</Comment><br/>
<Component Tag><日本語></日本語></Component Tag><Symbol>;</Symbol><br/>
<Component Tag><Component</Component Tag><Normal Text> </Normal Text><Attribute>本本:本-本</Attribute><Normal Text> </Normal Text><Attribute>aa本:本</Attribute><Normal Text> </Normal Text><Attribute>aa:aa</Attribute><Normal Text> </Normal Text><Component Tag>/></Component Tag><br/>
<Normal Text></Normal Text><br/>
<Component Tag><Namespace.DeepNamespace.Component</Component Tag><Normal Text> </Normal Text><Component Tag>/></Component Tag><Symbol>;</Symbol><br/>
<Component Tag><Component</Component Tag><Normal Text> </Normal Text><Code Brackets>{</Code Brackets><Normal Text> </Normal Text><Symbol>...</Symbol><Normal Text> </Normal Text><Normal Text>x </Normal Text><Code Brackets>}</Code Brackets><Normal Text> </Normal Text><Attribute>y</Attribute><br/>
<Symbol>=</Symbol><Code Brackets>{</Code Brackets><Decimal>2</Decimal><Normal Text> </Normal Text><Code Brackets>}</Code Brackets><Normal Text> </Normal Text><Attribute>z</Attribute><Normal Text> </Normal Text><Component Tag>/></Component Tag><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Reserved>let</Reserved><Normal Text> </Normal Text><Normal Text>k1 </Normal Text><Symbol>= </Symbol><Element Tag><div></Element Tag><Tag Content Text> </Tag Content Text><Element Tag><h2></Element Tag><Tag Content Text> Hello </Tag Content Text><Element Tag></h2></Element Tag><Tag Content Text> </Tag Content Text><Element Tag><h1></Element Tag><Tag Content Text> world </Tag Content Text><Element Tag></h1></div></Element Tag><Symbol>;</Symbol><br/>
<Reserved>let</Reserved><Normal Text> </Normal Text><Normal Text>k2 </Normal Text><Symbol>= </Symbol><Component Tag><Button></Component Tag><Tag Content Text> </Tag Content Text><Element Tag><h2></Element Tag><Tag Content Text> Hello </Tag Content Text><Element Tag></h2></Element Tag><Tag Content Text> </Tag Content Text><Component Tag></Button></Component Tag><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Comment>// Empty tags</Comment><br/>
<Element Tag><></></Element Tag><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// no whitespace</Comment><br/>
<Element Tag><    ></   ></Element Tag><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// lots of whitespace</Comment><br/>
<Symbol><</Symbol><Normal Text> </Normal Text><Comment>/*starting wrap*/</Comment><Normal Text> </Normal Text><Symbol>></</Symbol><Normal Text> </Normal Text><Comment>/*ending wrap*/</Comment><Symbol>>;</Symbol><Normal Text> </Normal Text><Comment>// comments in the tags</Comment><br/>
<Element Tag><></Element Tag><Tag Content Text>hi</Tag Content Text><Element Tag></></Element Tag><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// text inside</Comment><br/>
<Element Tag><><span></Element Tag><Tag Content Text>hi</Tag Content Text><Element Tag></span><div></Element Tag><Tag Content Text>bye</Tag Content Text><Element Tag></div></></Element Tag><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// children</Comment><br/>
<Element Tag><><span></Element Tag><Tag Content Text>1</Tag Content Text><Element Tag></span><><span></Element Tag><Tag Content Text>2.1</Tag Content Text><Element Tag></span><span></Element Tag><Tag Content Text>2.2</Tag Content Text><Element Tag></span></><span></Element Tag><Tag Content Text>3</Tag Content Text><Element Tag></span></></Element Tag><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// nested fragments</Comment><br/>
<Element Tag><></Element Tag><Tag Content Text>#</Tag Content Text><Element Tag></></Element Tag><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// # would cause scanning error if not in jsxtext</Comment><br/>
<Normal Text></Normal Text><br/>
<Comment>// Tags after substitutions in templates</Comment><br/>
<Template>`aaa</Template><Substitution>${</Substitution><Element Tag><tag></tag></Element Tag><Comment>//comment</Comment><br/>
<Normal Text>    </Normal Text><Comment>/*comment*/</Comment><Component Tag><A/></Component Tag><Substitution>}</Substitution><Template>`</Template><br/>
<Normal Text></Normal Text><br/>
<Comment>// Don't highlight tags within variable declaration</Comment><br/>
<Reserved>let</Reserved><Normal Text> myIdentity</Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Symbol><</Symbol><Normal Text>T</Normal Text><Symbol>></Symbol><Normal Text>(</Normal Text><Normal Text>arg</Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Normal Text>T) </Normal Text><Special Operators>=></Special Operators><Normal Text> </Normal Text><Normal Text>T </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Normal Text>identity</Normal Text><Symbol>;</Symbol><br/>
<Keyword>var</Keyword><Normal Text> myIdentity</Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Symbol><</Symbol><Normal Text>U</Normal Text><Symbol>></Symbol><Normal Text>(</Normal Text><Normal Text>arg</Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Normal Text>U) </Normal Text><Special Operators>=></Special Operators><Normal Text> </Normal Text><Normal Text>U </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Normal Text>identity</Normal Text><Symbol>;</Symbol><br/>
<Keyword>const</Keyword><Normal Text> myIdentity</Normal Text><Symbol>:</Symbol><Normal Text> {<</Normal Text><Normal Text>T</Normal Text><Symbol>></Symbol><Normal Text>(</Normal Text><JSON>arg</JSON><Symbol>:</Symbol><Normal Text> </Normal Text><Normal Text>T)</Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Normal Text>T</Normal Text><Normal Text>} </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Normal Text>identity</Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Comment>// Don't highlight tags within interfaces and classes</Comment><br/>
<Reserved>interface</Reserved><Normal Text> </Normal Text><Normal Text>GenericIdentityFn </Normal Text><Normal Text>{</Normal Text><br/>
<Normal Text>    </Normal Text><Symbol><</Symbol><Normal Text>T</Normal Text><Symbol>></Symbol><Normal Text>(</Normal Text><JSON>arg</JSON><Symbol>:</Symbol><Normal Text> </Normal Text><Normal Text>T)</Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Normal Text>T</Normal Text><Symbol>;</Symbol><br/>
<Normal Text>    </Normal Text><Symbol><</Symbol><Normal Text>noTag </Normal Text><Symbol>/></Symbol><br/>
<Normal Text>}</Normal Text><br/>
<Reserved>class</Reserved><Normal Text> </Normal Text><Normal Text>Handler </Normal Text><Normal Text>{</Normal Text><br/>
<Normal Text>    </Normal Text><JSON>info</JSON><Symbol>:</Symbol><Normal Text> </Normal Text><Symbol><</Symbol><Normal Text>T</Normal Text><Symbol>></Symbol><Normal Text>(</Normal Text><JSON>arg</JSON><Symbol>:</Symbol><Normal Text> </Normal Text><Normal Text>T)</Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Normal Text>T </Normal Text><Symbol><</Symbol><Normal Text>noTag </Normal Text><Symbol>/>;</Symbol><br/>
<Normal Text>    </Normal Text><Element Tag><tag></Element Tag><Tag Content Text> </Tag Content Text><Element Tag></tag></Element Tag><br/>
<Normal Text>}</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Comment>// Check character after tag name, do not highlight invalid tags</Comment><br/>
<Symbol><</Symbol><Normal Text>noTag </Normal Text><Symbol>?</Symbol><br/>
<Symbol><</Symbol><Normal Text>noTag  </Normal Text><Symbol>,</Symbol><br/>
<Symbol><</Symbol><Normal Text>noTag </Normal Text><Comment>/* comment */</Comment><Normal Text> </Normal Text><Symbol>?</Symbol><br/>
<Symbol><</Symbol><Normal Text>noTag</Normal Text><Normal Text>#</Normal Text><br/>
<Symbol><</Symbol><Normal Text>noTag</Normal Text><Comment>/*comment*/</Comment><Normal Text>#</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Comment>// Tagged template literals</Comment><br/>
<Function Name>tagFunc</Function Name><Template>`</Template><br/>
<Template>    Hello world!</Template><br/>
<Template>    </Template><Substitution>${</Substitution><Normal Text> </Normal Text><Component Tag><Tag</Component Tag><Normal Text> </Normal Text><Component Tag>/></Component Tag><Symbol>;</Symbol><Normal Text> </Normal Text><Decimal>22</Decimal><Normal Text> </Normal Text><Symbol>+</Symbol><Normal Text> </Normal Text><String>"11"</String><Normal Text> </Normal Text><Substitution>}</Substitution><Template>`</Template><Symbol>;</Symbol><br/>
<Objects>obj</Objects><Symbol>.</Symbol><Object Member>something</Object Member><Symbol>.</Symbol><Function Name>tagFunc</Function Name><Template>`Setting </Template><Substitution>${</Substitution><Normal Text>setting</Normal Text><Substitution>}</Substitution><Template> is </Template><Substitution>${</Substitution><Normal Text>value</Normal Text><Substitution>}</Substitution><Template>!`</Template><Symbol>;</Symbol><br/>
