<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<head>
<style>.content {
padding: 20px;
height: 100%;
width: 944px;
margin-left: auto;
margin-right: auto;
}
.fold {
width: 20px;
float: left;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.number {
width: 45px;
float: left;
margin-right: 10px;
text-align: right;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.line {
}
.content {
font-family: "Monospace";
font-size: 1em;
background: #3f3f3f;
color: White;
width: 944px;
padding: 20px;
height: 100%;
margin-left: auto;
margin-right: auto;
}
font.Alert {
color: Yellow;
font-weight: bold;
}
font.Annotation {
color: Yellow;
font-style: italic;
}
font.Attribute {
color: LightPink;
}
font.BaseN {
color: Gold;
}
font.BuiltIn {
color: Coral;
}
font.Char {
color: Cyan;
}
font.Comment {
color: Beige;
font-style: italic;
}
font.CommentVar {
color: LightBlue;
font-style: italic;
}
font.Constant {
color: White;
font-weight: bold;
}
font.ControlFlow {
color: DeepPink;
}
font.DataType {
color: CadetBlue;
}
font.DecVal {
color: MediumPurple;
font-weight: bold;
}
font.Documentation {
color: Gold;
font-style: italic;
}
font.Error {
color: Red;
font-weight: bold;
}
font.Extension {
color: DarkGray;
font-weight: bold;
}
font.Float {
color: DarkViolet;
font-weight: bold;
}
font.Function {
color: RosyBrown;
}
font.Import {
color: PaleVioletRed;
}
font.Information {
color: LightGreen;
font-style: italic;
}
font.Keyword {
color: LightGreen;
font-weight: bold;
}
font.Normal {
color: White;
}
font.Operator {
color: Magenta;
}
font.Others {
color: GreenYellow;
}
font.Preprocessor {
color: DarkSeaGreen ;
font-weight: bold;
}
font.RegionMarker {
color: Plum;
}
font.SpecialChar {
color: Plum;
font-weight: bold;
}
font.SpecialString {
color: LightBlue;
}
font.String {
color: MediumAquaMarine;
}
font.Variable {
color: Turquoise;
font-weight: bold;
}
font.VerbatimString {
color: LightSkyBlue;
}
font.Warning {
color: Brown;
font-weight: bold;
}
</style>
<title>Kamelon output</title>
</head>
<body>
<div class="content">
<div id="1" class="line"><font class="Comment">/* test.js - test for javascript.xml syntax file */</font></br></div>
<div id="2" class="line"><font class="Comment">// Note: this script will not, and is not supposed to, comile in any js engine.</font></br></div>
<div id="3" class="line"></br></div>
<div id="4" class="line"><font class="Comment">/* </font></br></div>
<div id="5" class="line"><font class="Comment"> </font><font class="Alert">NOTE</font><font class="Comment">: The words "todo", "fixme" and "note" should be rendered in a different style</font></br></div>
<div id="6" class="line"><font class="Comment"> within comments, match should be caseless (to test for regexp insensitive attribute).</font></br></div>
<div id="7" class="line"><font class="Comment"> The regex used for this rule is */</font></br></div>
<div id="8" class="line"><font class="Normal"> String </font><font class="Operator">=</font><font class="Normal"> </font><font class="SpecialString">/</font><font class="SpecialChar">\b(?</font><font class="SpecialString">:fixme</font><font class="SpecialChar">|</font><font class="SpecialString">todo</font><font class="SpecialChar">|</font><font class="SpecialString">note</font><font class="SpecialChar">)\b</font><font class="SpecialString">/</font></br></div>
<div id="9" class="line"><font class="Normal"> </font><font class="Comment">/* Thus, for example "Notebook" is not caught by</font></br></div>
<div id="10" class="line"><font class="Comment"> this rule. (the "?:" in the subpattern is there to avoid the regex engine wasting time</font></br></div>
<div id="11" class="line"><font class="Comment"> saving a backref, which is not used for anything. I do not know if the overhead of parsing</font></br></div>
<div id="12" class="line"><font class="Comment"> that is greater than the time saved by not capturing the text...)</font></br></div>
<div id="13" class="line"><font class="Comment"> The rule for catching these words is placed in a context "Comment common", which is used</font></br></div>
<div id="14" class="line"><font class="Comment"> by both comment contexts (single line, multiline) using the new "IncludeRules" item.</font></br></div>
<div id="15" class="line"><font class="Comment">*/</font></br></div>
<div id="16" class="line"></br></div>
<div id="17" class="line"><font class="Comment">// test if regex support works - nice with new fallthrough prop in context:)</font></br></div>
<div id="18" class="line"><font class="Variable">somestring</font><font class="Normal">.</font><font class="Attribute">replace</font><font class="Normal">( </font><font class="SpecialString">/dooh/</font><font class="Normal"> </font><font class="Operator">,</font><font class="Normal"> </font><font class="String">"bah!"</font><font class="Normal">)</font><font class="Operator">;</font></br></div>
<div id="19" class="line"><font class="Normal">re</font><font class="Operator">=</font><font class="SpecialString">/foo/ig</font><font class="Operator">;</font><font class="Normal"> </font><font class="Comment">// hehe</font></br></div>
<div id="20" class="line"></br></div>
<div id="21" class="line"><font class="Variable">somestring</font><font class="Normal">.</font><font class="Attribute">search</font><font class="Normal">(</font></br></div>
<div id="22" class="line"><font class="Normal"> </font><font class="SpecialString">/</font><font class="SpecialChar">^</font><font class="SpecialString">foo</font><font class="SpecialChar">\w+\s\d{0,15}$</font><font class="SpecialString">/</font></br></div>
<div id="23" class="line"><font class="Normal"> )</font><font class="Operator">;</font></br></div>
<div id="24" class="line"></br></div>
<div id="25" class="line"><font class="Normal"> re </font><font class="Operator">=</font></br></div>
<div id="26" class="line"><font class="Normal"> </font><font class="SpecialString">/dooh/</font><font class="Operator">;</font></br></div>
<div id="27" class="line"></br></div>
<div id="28" class="line"><font class="Comment">// This is supposedly legal:</font></br></div>
<div id="29" class="line"><font class="Normal">re </font><font class="Operator">=</font><font class="Normal"> somebool </font><font class="Operator">?</font><font class="Normal"> </font><font class="SpecialString">/foo/</font><font class="Normal"> : </font><font class="SpecialString">/bar/</font><font class="Operator">;</font></br></div>
<div id="30" class="line"></br></div>
<div id="31" class="line"><font class="Comment">// </font><font class="Alert">NOTE</font><font class="Comment"> - Special case: an empty regex, not a comment.</font></br></div>
<div id="32" class="line"><font class="Comment">// The rule uses a positive lookahead assertion to catch it: "//(?=;)".</font></br></div>
<div id="33" class="line"><font class="Normal">re </font><font class="Operator">=</font><font class="Normal"> </font><font class="Comment">//;</font></br></div>
<div id="34" class="line"><font class="Normal">re </font><font class="Operator">=</font><font class="Normal"> </font><font class="SpecialString">/a</font><font class="SpecialChar">|</font><font class="SpecialString">b/</font><font class="Operator">;</font></br></div>
<div id="35" class="line"></br></div>
<div id="36" class="line"><font class="Comment">/*</font></br></div>
<div id="37" class="line"><font class="Comment"> Tests for the regex parser.</font></br></div>
<div id="38" class="line"><font class="Comment"> It will parse classes, quanitfiers, special characters and regex operaters,</font></br></div>
<div id="39" class="line"><font class="Comment"> as specified in the netscape documentation for javascript.</font></br></div>
<div id="40" class="line"><font class="Comment"> Regexps are only parsed in their clean form, as the RegExp(string) constructor</font></br></div>
<div id="41" class="line"><font class="Comment"> is using a quoted string.</font></br></div>
<div id="42" class="line"><font class="Comment"> </font><font class="Alert">TODO</font><font class="Comment">: Find out if more regex feats should be supported.</font></br></div>
<div id="43" class="line"><font class="Comment"> Consider using more itemDatas - assertion, quantifier are options.</font></br></div>
<div id="44" class="line"><font class="Comment">*/</font></br></div>
<div id="45" class="line"></br></div>
<div id="46" class="line"><font class="Normal">re </font><font class="Operator">=</font><font class="Normal"> </font><font class="SpecialString">/</font><font class="SpecialChar">^</font><font class="SpecialString">text</font><font class="SpecialChar">\s+\d+\s*$</font><font class="SpecialString">/</font><font class="Operator">;</font></br></div>
<div id="47" class="line"><font class="Normal">re </font><font class="Operator">=</font><font class="Normal"> </font><font class="SpecialString">/a pattern with caret </font><font class="SpecialChar">\(</font><font class="SpecialString">^</font><font class="SpecialChar">\)</font><font class="SpecialString"> in it/</font><font class="Operator">;</font></br></div>
<div id="48" class="line"><font class="Normal">re </font><font class="Operator">=</font><font class="Normal"> </font><font class="SpecialString">/</font><font class="SpecialChar">(\d{0,4})\D</font><font class="SpecialString">/</font><font class="Operator">;</font></br></div>
<div id="49" class="line"><font class="Normal">re </font><font class="Operator">=</font><font class="Normal"> </font><font class="SpecialString">/</font><font class="SpecialChar">[a-zA-Z_]+</font><font class="SpecialString">/</font><font class="Operator">;</font></br></div>
<div id="50" class="line"><font class="Normal">re </font><font class="Operator">=</font><font class="Normal"> </font><font class="SpecialString">/</font><font class="SpecialChar">[^\d^]+</font><font class="SpecialString">/</font><font class="Operator">;</font></br></div>
<div id="51" class="line"><font class="Normal">re </font><font class="Operator">=</font><font class="Normal"> </font><font class="SpecialString">/</font><font class="SpecialChar">\s+?\w+\.$</font><font class="SpecialString">/</font><font class="Operator">;</font></br></div>
<div id="52" class="line"><font class="Normal">re </font><font class="Operator">=</font><font class="Normal"> </font><font class="SpecialString">/</font><font class="SpecialChar">\/\/</font><font class="SpecialString">/</font><font class="Operator">;</font></br></div>
<div id="53" class="line"><font class="Normal">re </font><font class="Operator">=</font><font class="Normal"> </font><font class="SpecialString">/a</font><font class="SpecialChar">|</font><font class="SpecialString">b/</font><font class="Operator">;</font></br></div>
<div id="54" class="line"></br></div>
<div id="55" class="line"><font class="Comment">// a test if #pop back from a comment will work</font></br></div>
<div id="56" class="line"><font class="Normal">re </font><font class="Operator">=</font><font class="Normal"> </font><font class="Comment">/*/foo/*/</font><font class="Normal"> </font><font class="SpecialString">/bar/</font><font class="Operator">;</font></br></div>
<div id="57" class="line"><font class="Comment">// ^ POP</font></br></div>
<div id="58" class="line"><font class="Comment">// ^ we got back after pop in comment, if there is regexp attribs here :-)</font></br></div>
<div id="59" class="line"></br></div>
<div id="60" class="line"><font class="Comment">/*</font></br></div>
<div id="61" class="line"><font class="Comment"> Some tests if the fallthrough works.</font></br></div>
<div id="62" class="line"><font class="Comment"> The fallthrough happens if a regexp is not found in a possible (!) position,</font></br></div>
<div id="63" class="line"><font class="Comment"> which is after "search(" or "replace(" or "=" or "?" or ":" in version 0.1 of the xml file</font></br></div>
<div id="64" class="line"><font class="Comment">*/</font></br></div>
<div id="65" class="line"></br></div>
<div id="66" class="line"><font class="Keyword">var</font><font class="Normal"> foo </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">'bar'</font><font class="Operator">;</font></br></div>
<div id="67" class="line"><font class="Comment">// ^ fallthrough!</font></br></div>
<div id="68" class="line"></br></div>
<div id="69" class="line"></br></div>
<div id="70" class="line"><font class="Variable">somestring</font><font class="Normal">.</font><font class="Attribute">replace</font><font class="Normal">( </font><font class="Keyword">new</font><font class="Normal"> </font><font class="Attribute">RegExp</font><font class="Normal">(</font><font class="String">"\</font><font class="SpecialChar">\b</font><font class="String">\\w+\</font><font class="SpecialChar">\b</font><font class="String">"</font><font class="Normal">)</font><font class="Operator">,</font><font class="Normal"> </font><font class="String">"word: $1"</font><font class="Normal">)</font><font class="Operator">;</font></br></div>
<div id="71" class="line"><font class="Comment">// ^ fallthrough expected. ("new" whould be bold)</font></br></div>
<div id="72" class="line"></br></div>
<div id="73" class="line"></br></div>
<div id="74" class="line"><font class="Variable">something</font><font class="Normal">.</font><font class="Attribute">method</font><font class="Normal"> </font><font class="Operator">=</font></br></div>
<div id="75" class="line"><font class="Normal"> </font><font class="Keyword">function</font><font class="Normal"> ( a</font><font class="Operator">,</font><font class="Normal"> b</font><font class="Operator">,</font><font class="Normal"> c ) </font><font class="Operator">{</font><font class="Normal"> </font><font class="Comment">/* ... */</font><font class="Normal"> </font><font class="Operator">}</font></br></div>
<div id="76" class="line"><font class="Comment">// ^ fallthrough ?!</font></br></div>
<div id="77" class="line"></br></div>
<div id="78" class="line"><font class="Variable">something</font><font class="Normal">.</font><font class="Attribute">other</font><font class="Normal"> </font><font class="Operator">=</font></br></div>
<div id="79" class="line"><font class="Keyword">function</font><font class="Normal"> ( d</font><font class="Operator">,</font><font class="Normal"> e</font><font class="Operator">,</font><font class="Normal"> f ) </font><font class="Operator">{</font><font class="Normal"> </font><font class="Comment">/* ... */</font><font class="Normal"> </font><font class="Operator">}</font></br></div>
<div id="80" class="line"><font class="Comment">// fallthrough expected at col 0 ("function" should be bold)</font></br></div>
<div id="81" class="line"></br></div>
<div id="82" class="line"><font class="Keyword">var</font><font class="Normal"> ary </font><font class="Operator">=</font><font class="Normal"> </font><font class="Keyword">new</font><font class="Normal"> </font><font class="Attribute">Array</font><font class="Normal">(</font><font class="Float">5</font><font class="Normal">)</font><font class="Operator">;</font></br></div>
<div id="83" class="line"><font class="Comment">// ^ fallthrough ? (if keyword is correctly rendered)</font></br></div>
<div id="84" class="line"></br></div>
<div id="85" class="line"><font class="Keyword">var</font><font class="Normal"> b </font><font class="Operator">=</font><font class="Normal"> a </font><font class="Operator">?</font><font class="Normal"> </font><font class="Float">1</font><font class="Normal"> : </font><font class="Float">0</font><font class="Operator">;</font></br></div>
<div id="86" class="line"><font class="Comment">// ^ ^ fallthroughs. numbers must be rendered correctly.</font></br></div>
<div id="87" class="line"></br></div>
<div id="88" class="line"><font class="Keyword">var</font><font class="Normal"> c </font><font class="Operator">=</font><font class="Normal"> d </font><font class="Operator">?</font><font class="Normal"> </font><font class="Keyword">true</font><font class="Normal"> : </font><font class="Keyword">false</font><font class="Operator">;</font></br></div>
<div id="89" class="line"></br></div>
<div id="90" class="line"><font class="Keyword">var</font><font class="Normal"> conditinalstring </font><font class="Operator">=</font><font class="Normal"> b </font><font class="Operator">?</font></br></div>
<div id="91" class="line"><font class="Normal"> </font><font class="String">"something"</font><font class="Normal"> :</font></br></div>
<div id="92" class="line"><font class="Normal"> </font><font class="String">"something else"</font><font class="Operator">;</font></br></div>
<div id="93" class="line"><font class="Comment">// guess...</font></br></div>
<div id="94" class="line"></br></div>
<div id="95" class="line"></br></div>
<div id="96" class="line"><font class="Comment">/*</font></br></div>
<div id="97" class="line"><font class="Comment"> Normal program flow...</font></br></div>
<div id="98" class="line"><font class="Comment">*/</font></br></div>
<div id="99" class="line"></br></div>
<div id="100" class="line"><font class="ControlFlow">if</font><font class="Normal"> (something)</font></br></div>
<div id="101" class="line"><font class="Normal"> </font><font class="Attribute">dostuff</font><font class="Normal">()</font><font class="Operator">;</font></br></div>
<div id="102" class="line"><font class="ControlFlow">else</font></br></div>
<div id="103" class="line"><font class="Normal"> </font><font class="Attribute">dont</font><font class="Normal">()</font><font class="Operator">;</font></br></div>
<div id="104" class="line"></br></div>
<div id="105" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Operator">;</font></br></div>
<div id="106" class="line"></br></div>
<div id="107" class="line"><font class="ControlFlow">try</font><font class="Normal"> </font><font class="Operator">{</font><font class="Normal"> </font><font class="Attribute">bla</font><font class="Normal">() </font><font class="Operator">}</font><font class="Normal"> </font><font class="ControlFlow">catch</font><font class="Normal"> (e) </font><font class="Operator">{</font><font class="Normal"> </font><font class="Attribute">alert</font><font class="Normal">(</font><font class="String">"ERROR! : "</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> e) </font><font class="Operator">}</font></br></div>
<div id="108" class="line"></br></div>
<div id="109" class="line"><font class="ControlFlow">for</font><font class="Normal"> (int i</font><font class="Operator">=</font><font class="Normal">0</font><font class="Operator">;</font><font class="Normal"> i </font><font class="Operator"><</font><font class="Normal"> j</font><font class="Operator">;</font><font class="Normal"> i</font><font class="Operator">++</font><font class="Normal">)</font></br></div>
<div id="110" class="line"><font class="Normal"> </font><font class="Variable">document</font><font class="Normal">.</font><font class="Attribute">write</font><font class="Normal">(</font><font class="String">"i is"</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> i </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">"<br>"</font><font class="Normal">)</font><font class="Operator">;</font></br></div>
<div id="111" class="line"></br></div>
<div id="112" class="line"><font class="ControlFlow">while</font><font class="Normal"> (something)</font></br></div>
<div id="113" class="line"><font class="Operator">{</font></br></div>
<div id="114" class="line"><font class="Normal"> </font><font class="Attribute">block</font><font class="Normal">()</font><font class="Operator">;</font></br></div>
<div id="115" class="line"><font class="Normal"> </font><font class="DataType">picky</font><font class="Operator">:</font></br></div>
<div id="116" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> (</font><font class="Operator">!</font><font class="Normal">1)</font></br></div>
<div id="117" class="line"><font class="Normal"> </font><font class="ControlFlow">break</font><font class="Operator">;</font></br></div>
<div id="118" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font></br></div>
<div id="119" class="line"><font class="Normal"> </font><font class="ControlFlow">continue</font><font class="Operator">;</font></br></div>
<div id="120" class="line"><font class="Operator">}</font></br></div>
<div id="121" class="line"></br></div>
<div id="122" class="line"><font class="ControlFlow">with</font><font class="Normal"> (a) </font><font class="Operator">{</font></br></div>
<div id="123" class="line"><font class="Normal"> </font><font class="ControlFlow">do</font><font class="Normal"> </font><font class="Operator">{</font></br></div>
<div id="124" class="line"><font class="Normal"> </font><font class="Attribute">stuff</font><font class="Normal">( b )</font><font class="Operator">;</font><font class="Normal"> </font><font class="Comment">// a.b if it exists</font></br></div>
<div id="125" class="line"><font class="Normal"> </font><font class="Operator">}</font><font class="Normal"> </font><font class="ControlFlow">while</font><font class="Normal"> (itmakessense)</font><font class="Operator">;</font></br></div>
<div id="126" class="line"><font class="Operator">}</font></br></div>
<div id="127" class="line"></br></div>
<div id="128" class="line"><font class="ControlFlow">switch</font><font class="Normal"> (i) </font><font class="Operator">{</font></br></div>
<div id="129" class="line"><font class="Normal"> </font><font class="ControlFlow">case</font><font class="Normal"> </font><font class="Float">0</font><font class="Operator">:</font></br></div>
<div id="130" class="line"><font class="Normal"> </font><font class="Attribute">f</font><font class="Normal">()</font><font class="Operator">;</font></br></div>
<div id="131" class="line"><font class="Normal"> </font><font class="ControlFlow">break</font><font class="Operator">;</font></br></div>
<div id="132" class="line"><font class="Normal"> </font><font class="DataType">default</font><font class="Operator">:</font></br></div>
<div id="133" class="line"><font class="Normal"> </font><font class="ControlFlow">break</font><font class="Operator">;</font></br></div>
<div id="134" class="line"><font class="Operator">}</font></br></div>
</div>
</body>
</html>