File indexing completed on 2024-05-12 04:02:11

0001 #! shebang
0002 #! no-shebang
0003 
0004 /* comment */
0005 
0006 function fun()
0007 {
0008     var boo = { 'key': [ 1, 2.0, 3.0e1, 004, 0x5 ] };
0009 }
0010 
0011 class MyClass; // reserved keywords
0012 
0013 class ClassWithPrivateField {
0014     static #privateStaticField = 42;
0015 
0016     static publicStaticMethod() {
0017         return ClassWithPrivateField.#privateStaticField;
0018     }
0019 
0020     #message;
0021 
0022     #privateMethod() {
0023         return 42;
0024     }
0025 
0026     publicMethod() {
0027         return this.#privateMethod();
0028     }
0029 
0030     get #decoratedMessage() {
0031         return this.#message
0032     }
0033     set #decoratedMessage(msg) {
0034         this.#message = msg;
0035     }
0036 }
0037 
0038 // Member objects: text after "."
0039 object.property instanceof Number;
0040 iden1.iden2  . iden3.class class;
0041 iden1?.iden2 . iden3.class class;
0042 iden1.#iden2 . iden3.class class;
0043 
0044 var escapes = "aa\b\n\0a\"a\x12a\32a\u{123}a\$\%\ \#\y\aaa\
0045 aaa";
0046 var octal = 0o124;
0047 var bin = 0b1010;
0048 
0049 日本語().ლಠ益ಠლ.ñá = 42;
0050 δ /No-Regex/
0051 
0052 // Only highlight valid regular expressions, of a single line, after strings
0053 // See: https://github.com/microsoft/TypeScript-TmLanguage/issues/786
0054 "text" /No-Regex
0055 "text" /Regex[:)]*/;
0056 const a = "6" / 2; /*comment*/ const b = 5;
0057 console.log("4" / "2"); // 2
0058 // Single quote
0059 const a = '6' / 2; /*comment*/ const b = 5;
0060 console.log('4' / '2'); // 2
0061 // Template
0062 const a = `6` / 2; /*comment*/ const b = 5;
0063 console.log(`4` / `2`); // 2
0064 
0065 // Built-in
0066 const os = require('os');
0067 JSON.stringify("hello");
0068 console.error("hello");
0069 Math.LOG10E;
0070 Number.MAX_SAFE_INTEGER;
0071 String.raw`raw text \.\n${}`
0072 
0073 // Tagged template literals
0074 tagFunc`
0075     Hello world!
0076     ${ alert("Hello!"); }`;
0077 obj.something.tagFunc`Setting ${setting} is ${value + 5}!`;
0078 
0079 /* 
0080    NOTE: The words "todo", "fixme" and "note" should be rendered in a different style
0081    within comments, match should be caseless (to test for regexp insensitive attribute).
0082    The regex used for this rule is */
0083    String = /\b(?:fixme|todo|note)\b/
0084    /* Thus,  for example "Notebook" is not caught by
0085    this rule. (the "?:" in the subpattern is there to avoid the regex engine wasting time
0086    saving a backref, which is not used for anything. I do not know if the overhead of parsing
0087    that is greater than the time saved by not capturing the text...)
0088    The rule for catching these words is placed in a context "Comment common", which is used
0089    by both comment contexts (single line, multiline) using the new "IncludeRules" item.
0090 */
0091 
0092 // test if regex support works - nice with new fallthrough prop in context:)
0093 somestring.replace( /dooh/ , "bah!");
0094 re=/foo/ig; // hehe
0095 
0096 somestring.search(
0097        /^foo\w+\s\d{0,15}$/
0098                   );
0099 
0100         re =
0101         /dooh/;
0102 
0103 // This is supposedly legal:
0104 re = somebool ? /foo/ : /bar/;
0105 
0106 // NOTE - Special case: an empty regex, not a comment.
0107 // The rule uses a positive lookahead assertion to catch it: "//(?=;)".
0108 re = //;
0109 re = /a|b/;
0110 
0111 /*
0112    Tests for the regex parser.
0113    It will parse classes, quantifiers, special characters and regex operaters,
0114    as specified in the netscape documentation for javascript.
0115    Regexps are only parsed in their clean form, as the RegExp(string) constructor
0116    is using a quoted string.
0117    TODO: Find out if more regex feats should be supported.
0118          Consider using more itemDatas - assertion, quantifier are options.
0119 */
0120 
0121 re = /^text\s+\d+\s*$/;
0122 re = /a pattern with caret \(^\) in it/;
0123 re = /(\d{0,4})\D/;
0124 re = /[a-zA-Z_]+/;
0125 re = /[^\d^]+/;
0126 re = /\s+?\w+\.$/;
0127 re = /\/\//;
0128 re = /a|b/;
0129 
0130 // the following are not regexps in E4X (=xml embedded into JavaScript)
0131 var p = <p>Hello World</p>
0132 var p = /</
0133 var p = />/
0134 
0135 // a test if #pop back from a comment will work
0136 re = /*/foo/*/ /bar/;
0137 //           ^ POP
0138 //             ^ we got back after pop in comment, if there is regexp attribs here :-)
0139 
0140 /*
0141    Some tests if the fallthrough works.
0142    The fallthrough happens if a regexp is not found in a possible (!) position,
0143    which is after "search(" or "replace(" or "=" or "?" or ":" in version 0.1 of the xml file
0144 */
0145 
0146 var foo = 'bar';
0147 //        ^ fallthrough!
0148 
0149 
0150 somestring.replace( new RegExp("\\b\\w+\\b"), "word: $1");
0151 //                  ^ fallthrough expected. ("new" whould be bold)
0152 
0153 
0154 something.method =
0155     function ( a, b, c ) { /* ... */ }
0156 //  ^ fallthrough ?!
0157 
0158 something.other =
0159 function ( d, e, f ) { /* ... */ }
0160 // fallthrough expected at col 0 ("function" should be bold)
0161 
0162 var ary = new Array(5);
0163 //        ^ fallthrough ? (if keyword is correctly rendered)
0164 
0165 var b = a ? 1 : 0;
0166 //          ^   ^ fallthroughs. numbers must be rendered correctly.
0167 
0168 var c = d ? true : false;
0169 
0170 var conditinalstring = b ?
0171   "something" :
0172   "something else";
0173 // guess...
0174 
0175 
0176 /*
0177    Normal program flow...
0178 */
0179 
0180 if (something)
0181   dostuff();
0182 else
0183   dont();
0184 
0185   return;
0186 
0187 try { bla() } catch (e) { alert("ERROR! : " + e) }
0188 
0189 for (int i=0; i < j; i++)
0190   document.write("i is" + i + "<br>");
0191 
0192 while (something)
0193 {
0194   block();
0195   picky:
0196     if (!1)
0197       break;
0198     else
0199       continue;
0200 }
0201 
0202 with (a) {
0203   do {
0204     stuff( b ); // a.b if it exists
0205   } while (itmakessense);
0206 }
0207 
0208 switch (i) {
0209   case 0:
0210   f();
0211   break;
0212   default:
0213   break;
0214 }
0215 
0216 // Numerics
0217 var a = 0xA;
0218 var b = 0b1;
0219 var c = 0o7;
0220 var c = 07;
0221 var c = 08;
0222 var d = 1.1E+3;
0223 var e = 1.E+3;
0224 var f = .1E+3;
0225 var g = 1E+3;
0226 var h = 1.1;
0227 var i = 1.;
0228 var j = .1;
0229 var k =  1;
0230 // Bigint
0231 const binBig = 0b101n;
0232 const octBig = 0o567n;
0233 const hexBig = 0xC0Bn;
0234 const decBig = 123n;
0235 // Invalid numbers
0236 var l = 0xA1t;
0237 var m = 0b0123;
0238 var n = 0o29;
0239 var n = 000_7;
0240 // Number with separator
0241 let a = 0xA_b_1
0242 let a = 0xA_b_1n
0243 let a = 0xA_b_1_
0244 let a = 0xA_b__1
0245 let b = 0o1_2_3
0246 let b = 0o1_2_3n
0247 let b = 0o1_2_3_
0248 let b = 0o1_2__3
0249 let b = 0o1_2_38
0250 let b = 01_2_3
0251 let b = 01_2_3n
0252 let b = 01_2_3_
0253 let b = 01_2__3
0254 let c = 0b0_1_1
0255 let c = 0b0_1_1n
0256 let c = 0b0_1_1_
0257 let c = 0b0_1__1
0258 let d = 1_2_3
0259 let d = 1_2_3n
0260 let d = 1_2_3_
0261 let d = 1_2__3
0262 let d = 01_2_8