Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(432)

Side by Side Diff: Source/devtools/front_end/SourceHTMLTokenizer.js

Issue 22638008: DevTools: Use CodeMirror modes instead of highlight tokenizers (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: address comments Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /* Generated by re2c 0.13.5 on Fri May 6 13:47:06 2011 */
2 /*
3 * Copyright (C) 2009 Google Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * * Redistributions in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following disclaimer
13 * in the documentation and/or other materials provided with the
14 * distribution.
15 * * Neither the name of Google Inc. nor the names of its
16 * contributors may be used to endorse or promote products derived from
17 * this software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */
31
32 // Generate js file as follows:
33 //
34 // re2c -isc devtools/front_end/SourceHTMLTokenizer.re2js \
35 // | sed 's|^yy\([^:]*\)*\:|case \1:|' \
36 // | sed 's|[*]cursor[+][+]|this._charAt(cursor++)|' \
37 // | sed 's|[[*][+][+]cursor|this._charAt(++cursor)|' \
38 // | sed 's|[*]cursor|this._charAt(cursor)|' \
39 // | sed 's|yych = \*\([^;]*\)|yych = this._charAt\1|' \
40 // | sed 's|{ gotoCase = \([^; continue; };]*\)|{ gotoCase = \1; continue; }|' \
41 // | sed 's|unsigned\ int|var|' \
42 // | sed 's|var\ yych|case 1: case 1: var yych|' > devtools/front_end/SourceHTML Tokenizer.js
43
44 /**
45 * @constructor
46 * @extends {WebInspector.SourceTokenizer}
47 */
48 WebInspector.SourceHTMLTokenizer = function()
49 {
50 WebInspector.SourceTokenizer.call(this);
51
52 // The order is determined by the generated code.
53 this._lexConditions = {
54 INITIAL: 0,
55 COMMENT: 1,
56 DOCTYPE: 2,
57 TAG: 3,
58 DSTRING: 4,
59 SSTRING: 5
60 };
61 this.case_INITIAL = 1000;
62 this.case_COMMENT = 1001;
63 this.case_DOCTYPE = 1002;
64 this.case_TAG = 1003;
65 this.case_DSTRING = 1004;
66 this.case_SSTRING = 1005;
67
68 this._parseConditions = {
69 INITIAL: 0,
70 ATTRIBUTE: 1,
71 ATTRIBUTE_VALUE: 2,
72 LINKIFY: 4,
73 A_NODE: 8,
74 SCRIPT: 16,
75 STYLE: 32
76 };
77
78 this.condition = this.createInitialCondition();
79 }
80
81 WebInspector.SourceHTMLTokenizer.prototype = {
82 createInitialCondition: function()
83 {
84 return { lexCondition: this._lexConditions.INITIAL, parseCondition: this ._parseConditions.INITIAL };
85 },
86
87 set line(line) {
88 if (this._condition.internalJavaScriptTokenizerCondition) {
89 var match = /<\/script/i.exec(line);
90 if (match) {
91 this._internalJavaScriptTokenizer.line = line.substring(0, match .index);
92 } else
93 this._internalJavaScriptTokenizer.line = line;
94 } else if (this._condition.internalCSSTokenizerCondition) {
95 var match = /<\/style/i.exec(line);
96 if (match) {
97 this._internalCSSTokenizer.line = line.substring(0, match.index) ;
98 } else
99 this._internalCSSTokenizer.line = line;
100 }
101 this._line = line;
102 },
103
104 _isExpectingAttribute: function()
105 {
106 return this._condition.parseCondition & this._parseConditions.ATTRIBUTE;
107 },
108
109 _isExpectingAttributeValue: function()
110 {
111 return this._condition.parseCondition & this._parseConditions.ATTRIBUTE_ VALUE;
112 },
113
114 _setExpectingAttribute: function()
115 {
116 if (this._isExpectingAttributeValue())
117 this._condition.parseCondition ^= this._parseConditions.ATTRIBUTE_VA LUE;
118 this._condition.parseCondition |= this._parseConditions.ATTRIBUTE;
119 },
120
121 _setExpectingAttributeValue: function()
122 {
123 if (this._isExpectingAttribute())
124 this._condition.parseCondition ^= this._parseConditions.ATTRIBUTE;
125 this._condition.parseCondition |= this._parseConditions.ATTRIBUTE_VALUE;
126 },
127
128 /**
129 * @param {boolean=} stringEnds
130 */
131 _stringToken: function(cursor, stringEnds)
132 {
133 if (!this._isExpectingAttributeValue()) {
134 this.tokenType = null;
135 return cursor;
136 }
137 this.tokenType = this._attrValueTokenType();
138 if (stringEnds)
139 this._setExpectingAttribute();
140 return cursor;
141 },
142
143 _attrValueTokenType: function()
144 {
145 if (this._condition.parseCondition & this._parseConditions.LINKIFY) {
146 if (this._condition.parseCondition & this._parseConditions.A_NODE)
147 return "html-external-link";
148 return "html-resource-link";
149 }
150 return "html-attribute-value";
151 },
152
153 get _internalJavaScriptTokenizer()
154 {
155 return WebInspector.SourceTokenizer.Registry.getInstance().getTokenizer( "text/javascript");
156 },
157
158 get _internalCSSTokenizer()
159 {
160 return WebInspector.SourceTokenizer.Registry.getInstance().getTokenizer( "text/css");
161 },
162
163 scriptStarted: function(cursor)
164 {
165 this._condition.internalJavaScriptTokenizerCondition = this._internalJav aScriptTokenizer.createInitialCondition();
166 },
167
168 scriptEnded: function(cursor)
169 {
170 },
171
172 styleSheetStarted: function(cursor)
173 {
174 this._condition.internalCSSTokenizerCondition = this._internalCSSTokeniz er.createInitialCondition();
175 },
176
177 styleSheetEnded: function(cursor)
178 {
179 },
180
181 nextToken: function(cursor)
182 {
183 if (this._condition.internalJavaScriptTokenizerCondition) {
184 // Re-set line to force </script> detection first.
185 this.line = this._line;
186 if (cursor !== this._internalJavaScriptTokenizer._line.length) {
187 // Tokenizer is stateless, so restore its condition before token izing and save it after.
188 this._internalJavaScriptTokenizer.condition = this._condition.in ternalJavaScriptTokenizerCondition;
189 var result = this._internalJavaScriptTokenizer.nextToken(cursor) ;
190 this.tokenType = this._internalJavaScriptTokenizer.tokenType;
191 this._condition.internalJavaScriptTokenizerCondition = this._int ernalJavaScriptTokenizer.condition;
192 return result;
193 } else if (cursor !== this._line.length)
194 delete this._condition.internalJavaScriptTokenizerCondition;
195 } else if (this._condition.internalCSSTokenizerCondition) {
196 // Re-set line to force </style> detection first.
197 this.line = this._line;
198 if (cursor !== this._internalCSSTokenizer._line.length) {
199 // Tokenizer is stateless, so restore its condition before token izing and save it after.
200 this._internalCSSTokenizer.condition = this._condition.internalC SSTokenizerCondition;
201 var result = this._internalCSSTokenizer.nextToken(cursor);
202 this.tokenType = this._internalCSSTokenizer.tokenType;
203 this._condition.internalCSSTokenizerCondition = this._internalCS STokenizer.condition;
204 return result;
205 } else if (cursor !== this._line.length)
206 delete this._condition.internalCSSTokenizerCondition;
207 }
208
209 var cursorOnEnter = cursor;
210 var gotoCase = 1;
211 var YYMARKER;
212 while (1) {
213 switch (gotoCase)
214 // Following comment is replaced with generated state machine.
215
216 {
217 case 1: var yych;
218 var yyaccept = 0;
219 if (this.getLexCondition() < 3) {
220 if (this.getLexCondition() < 1) {
221 { gotoCase = this.case_INITIAL; continue; };
222 } else {
223 if (this.getLexCondition() < 2) {
224 { gotoCase = this.case_COMMENT; continue; };
225 } else {
226 { gotoCase = this.case_DOCTYPE; continue; };
227 }
228 }
229 } else {
230 if (this.getLexCondition() < 4) {
231 { gotoCase = this.case_TAG; continue; };
232 } else {
233 if (this.getLexCondition() < 5) {
234 { gotoCase = this.case_DSTRING; continue; };
235 } else {
236 { gotoCase = this.case_SSTRING; continue; };
237 }
238 }
239 }
240 /* *********************************** */
241 case this.case_COMMENT:
242
243 yych = this._charAt(cursor);
244 if (yych <= '\f') {
245 if (yych == '\n') { gotoCase = 4; continue; };
246 { gotoCase = 3; continue; };
247 } else {
248 if (yych <= '\r') { gotoCase = 4; continue; };
249 if (yych == '-') { gotoCase = 6; continue; };
250 { gotoCase = 3; continue; };
251 }
252 case 2:
253 { this.tokenType = "html-comment"; return cursor; }
254 case 3:
255 yyaccept = 0;
256 yych = this._charAt(YYMARKER = ++cursor);
257 { gotoCase = 9; continue; };
258 case 4:
259 ++cursor;
260 case 5:
261 { this.tokenType = null; return cursor; }
262 case 6:
263 yyaccept = 1;
264 yych = this._charAt(YYMARKER = ++cursor);
265 if (yych != '-') { gotoCase = 5; continue; };
266 case 7:
267 ++cursor;
268 yych = this._charAt(cursor);
269 if (yych == '>') { gotoCase = 10; continue; };
270 case 8:
271 yyaccept = 0;
272 YYMARKER = ++cursor;
273 yych = this._charAt(cursor);
274 case 9:
275 if (yych <= '\f') {
276 if (yych == '\n') { gotoCase = 2; continue; };
277 { gotoCase = 8; continue; };
278 } else {
279 if (yych <= '\r') { gotoCase = 2; continue; };
280 if (yych == '-') { gotoCase = 12; continue; };
281 { gotoCase = 8; continue; };
282 }
283 case 10:
284 ++cursor;
285 this.setLexCondition(this._lexConditions.INITIAL);
286 { this.tokenType = "html-comment"; return cursor; }
287 case 12:
288 ++cursor;
289 yych = this._charAt(cursor);
290 if (yych == '-') { gotoCase = 7; continue; };
291 cursor = YYMARKER;
292 if (yyaccept <= 0) {
293 { gotoCase = 2; continue; };
294 } else {
295 { gotoCase = 5; continue; };
296 }
297 /* *********************************** */
298 case this.case_DOCTYPE:
299 yych = this._charAt(cursor);
300 if (yych <= '\f') {
301 if (yych == '\n') { gotoCase = 18; continue; };
302 { gotoCase = 17; continue; };
303 } else {
304 if (yych <= '\r') { gotoCase = 18; continue; };
305 if (yych == '>') { gotoCase = 20; continue; };
306 { gotoCase = 17; continue; };
307 }
308 case 16:
309 { this.tokenType = "html-doctype"; return cursor; }
310 case 17:
311 yych = this._charAt(++cursor);
312 { gotoCase = 23; continue; };
313 case 18:
314 ++cursor;
315 { this.tokenType = null; return cursor; }
316 case 20:
317 ++cursor;
318 this.setLexCondition(this._lexConditions.INITIAL);
319 { this.tokenType = "html-doctype"; return cursor; }
320 case 22:
321 ++cursor;
322 yych = this._charAt(cursor);
323 case 23:
324 if (yych <= '\f') {
325 if (yych == '\n') { gotoCase = 16; continue; };
326 { gotoCase = 22; continue; };
327 } else {
328 if (yych <= '\r') { gotoCase = 16; continue; };
329 if (yych == '>') { gotoCase = 16; continue; };
330 { gotoCase = 22; continue; };
331 }
332 /* *********************************** */
333 case this.case_DSTRING:
334 yych = this._charAt(cursor);
335 if (yych <= '\f') {
336 if (yych == '\n') { gotoCase = 28; continue; };
337 { gotoCase = 27; continue; };
338 } else {
339 if (yych <= '\r') { gotoCase = 28; continue; };
340 if (yych == '"') { gotoCase = 30; continue; };
341 { gotoCase = 27; continue; };
342 }
343 case 26:
344 { return this._stringToken(cursor); }
345 case 27:
346 yych = this._charAt(++cursor);
347 { gotoCase = 34; continue; };
348 case 28:
349 ++cursor;
350 { this.tokenType = null; return cursor; }
351 case 30:
352 ++cursor;
353 case 31:
354 this.setLexCondition(this._lexConditions.TAG);
355 { return this._stringToken(cursor, true); }
356 case 32:
357 yych = this._charAt(++cursor);
358 { gotoCase = 31; continue; };
359 case 33:
360 ++cursor;
361 yych = this._charAt(cursor);
362 case 34:
363 if (yych <= '\f') {
364 if (yych == '\n') { gotoCase = 26; continue; };
365 { gotoCase = 33; continue; };
366 } else {
367 if (yych <= '\r') { gotoCase = 26; continue; };
368 if (yych == '"') { gotoCase = 32; continue; };
369 { gotoCase = 33; continue; };
370 }
371 /* *********************************** */
372 case this.case_INITIAL:
373 yych = this._charAt(cursor);
374 if (yych == '<') { gotoCase = 39; continue; };
375 ++cursor;
376 { this.tokenType = null; return cursor; }
377 case 39:
378 yyaccept = 0;
379 yych = this._charAt(YYMARKER = ++cursor);
380 if (yych <= '/') {
381 if (yych == '!') { gotoCase = 44; continue; };
382 if (yych >= '/') { gotoCase = 41; continue; };
383 } else {
384 if (yych <= 'S') {
385 if (yych >= 'S') { gotoCase = 42; continue; };
386 } else {
387 if (yych == 's') { gotoCase = 42; continue; };
388 }
389 }
390 case 40:
391 this.setLexCondition(this._lexConditions.TAG);
392 {
393 if (this._condition.parseCondition & (this._parseConditions. SCRIPT | this._parseConditions.STYLE)) {
394 // Do not tokenize script and style tag contents, keep l exer state, even though processing "<".
395 this.setLexCondition(this._lexConditions.INITIAL);
396 this.tokenType = null;
397 return cursor;
398 }
399
400 this._condition.parseCondition = this._parseConditions.INITI AL;
401 this.tokenType = "html-tag";
402 return cursor;
403 }
404 case 41:
405 yyaccept = 0;
406 yych = this._charAt(YYMARKER = ++cursor);
407 if (yych == 'S') { gotoCase = 73; continue; };
408 if (yych == 's') { gotoCase = 73; continue; };
409 { gotoCase = 40; continue; };
410 case 42:
411 yych = this._charAt(++cursor);
412 if (yych <= 'T') {
413 if (yych == 'C') { gotoCase = 62; continue; };
414 if (yych >= 'T') { gotoCase = 63; continue; };
415 } else {
416 if (yych <= 'c') {
417 if (yych >= 'c') { gotoCase = 62; continue; };
418 } else {
419 if (yych == 't') { gotoCase = 63; continue; };
420 }
421 }
422 case 43:
423 cursor = YYMARKER;
424 { gotoCase = 40; continue; };
425 case 44:
426 yych = this._charAt(++cursor);
427 if (yych <= 'C') {
428 if (yych != '-') { gotoCase = 43; continue; };
429 } else {
430 if (yych <= 'D') { gotoCase = 46; continue; };
431 if (yych == 'd') { gotoCase = 46; continue; };
432 { gotoCase = 43; continue; };
433 }
434 yych = this._charAt(++cursor);
435 if (yych == '-') { gotoCase = 54; continue; };
436 { gotoCase = 43; continue; };
437 case 46:
438 yych = this._charAt(++cursor);
439 if (yych == 'O') { gotoCase = 47; continue; };
440 if (yych != 'o') { gotoCase = 43; continue; };
441 case 47:
442 yych = this._charAt(++cursor);
443 if (yych == 'C') { gotoCase = 48; continue; };
444 if (yych != 'c') { gotoCase = 43; continue; };
445 case 48:
446 yych = this._charAt(++cursor);
447 if (yych == 'T') { gotoCase = 49; continue; };
448 if (yych != 't') { gotoCase = 43; continue; };
449 case 49:
450 yych = this._charAt(++cursor);
451 if (yych == 'Y') { gotoCase = 50; continue; };
452 if (yych != 'y') { gotoCase = 43; continue; };
453 case 50:
454 yych = this._charAt(++cursor);
455 if (yych == 'P') { gotoCase = 51; continue; };
456 if (yych != 'p') { gotoCase = 43; continue; };
457 case 51:
458 yych = this._charAt(++cursor);
459 if (yych == 'E') { gotoCase = 52; continue; };
460 if (yych != 'e') { gotoCase = 43; continue; };
461 case 52:
462 ++cursor;
463 this.setLexCondition(this._lexConditions.DOCTYPE);
464 { this.tokenType = "html-doctype"; return cursor; }
465 case 54:
466 ++cursor;
467 yych = this._charAt(cursor);
468 if (yych <= '\f') {
469 if (yych == '\n') { gotoCase = 57; continue; };
470 { gotoCase = 54; continue; };
471 } else {
472 if (yych <= '\r') { gotoCase = 57; continue; };
473 if (yych != '-') { gotoCase = 54; continue; };
474 }
475 ++cursor;
476 yych = this._charAt(cursor);
477 if (yych == '-') { gotoCase = 59; continue; };
478 { gotoCase = 43; continue; };
479 case 57:
480 ++cursor;
481 this.setLexCondition(this._lexConditions.COMMENT);
482 { this.tokenType = "html-comment"; return cursor; }
483 case 59:
484 ++cursor;
485 yych = this._charAt(cursor);
486 if (yych != '>') { gotoCase = 54; continue; };
487 ++cursor;
488 { this.tokenType = "html-comment"; return cursor; }
489 case 62:
490 yych = this._charAt(++cursor);
491 if (yych == 'R') { gotoCase = 68; continue; };
492 if (yych == 'r') { gotoCase = 68; continue; };
493 { gotoCase = 43; continue; };
494 case 63:
495 yych = this._charAt(++cursor);
496 if (yych == 'Y') { gotoCase = 64; continue; };
497 if (yych != 'y') { gotoCase = 43; continue; };
498 case 64:
499 yych = this._charAt(++cursor);
500 if (yych == 'L') { gotoCase = 65; continue; };
501 if (yych != 'l') { gotoCase = 43; continue; };
502 case 65:
503 yych = this._charAt(++cursor);
504 if (yych == 'E') { gotoCase = 66; continue; };
505 if (yych != 'e') { gotoCase = 43; continue; };
506 case 66:
507 ++cursor;
508 this.setLexCondition(this._lexConditions.TAG);
509 {
510 if (this._condition.parseCondition & this._parseConditions.S TYLE) {
511 // Do not tokenize style tag contents, keep lexer state, even though processing "<".
512 this.setLexCondition(this._lexConditions.INITIAL);
513 this.tokenType = null;
514 return cursor;
515 }
516 this.tokenType = "html-tag";
517 this._condition.parseCondition = this._parseConditions.STYLE ;
518 this._setExpectingAttribute();
519 return cursor;
520 }
521 case 68:
522 yych = this._charAt(++cursor);
523 if (yych == 'I') { gotoCase = 69; continue; };
524 if (yych != 'i') { gotoCase = 43; continue; };
525 case 69:
526 yych = this._charAt(++cursor);
527 if (yych == 'P') { gotoCase = 70; continue; };
528 if (yych != 'p') { gotoCase = 43; continue; };
529 case 70:
530 yych = this._charAt(++cursor);
531 if (yych == 'T') { gotoCase = 71; continue; };
532 if (yych != 't') { gotoCase = 43; continue; };
533 case 71:
534 ++cursor;
535 this.setLexCondition(this._lexConditions.TAG);
536 {
537 if (this._condition.parseCondition & this._parseConditions.S CRIPT) {
538 // Do not tokenize script tag contents, keep lexer state , even though processing "<".
539 this.setLexCondition(this._lexConditions.INITIAL);
540 this.tokenType = null;
541 return cursor;
542 }
543 this.tokenType = "html-tag";
544 this._condition.parseCondition = this._parseConditions.SCRIP T;
545 this._setExpectingAttribute();
546 return cursor;
547 }
548 case 73:
549 yych = this._charAt(++cursor);
550 if (yych <= 'T') {
551 if (yych == 'C') { gotoCase = 75; continue; };
552 if (yych <= 'S') { gotoCase = 43; continue; };
553 } else {
554 if (yych <= 'c') {
555 if (yych <= 'b') { gotoCase = 43; continue; };
556 { gotoCase = 75; continue; };
557 } else {
558 if (yych != 't') { gotoCase = 43; continue; };
559 }
560 }
561 yych = this._charAt(++cursor);
562 if (yych == 'Y') { gotoCase = 81; continue; };
563 if (yych == 'y') { gotoCase = 81; continue; };
564 { gotoCase = 43; continue; };
565 case 75:
566 yych = this._charAt(++cursor);
567 if (yych == 'R') { gotoCase = 76; continue; };
568 if (yych != 'r') { gotoCase = 43; continue; };
569 case 76:
570 yych = this._charAt(++cursor);
571 if (yych == 'I') { gotoCase = 77; continue; };
572 if (yych != 'i') { gotoCase = 43; continue; };
573 case 77:
574 yych = this._charAt(++cursor);
575 if (yych == 'P') { gotoCase = 78; continue; };
576 if (yych != 'p') { gotoCase = 43; continue; };
577 case 78:
578 yych = this._charAt(++cursor);
579 if (yych == 'T') { gotoCase = 79; continue; };
580 if (yych != 't') { gotoCase = 43; continue; };
581 case 79:
582 ++cursor;
583 this.setLexCondition(this._lexConditions.TAG);
584 {
585 this.tokenType = "html-tag";
586 this._condition.parseCondition = this._parseConditions.INITI AL;
587 this.scriptEnded(cursor - 8);
588 return cursor;
589 }
590 case 81:
591 yych = this._charAt(++cursor);
592 if (yych == 'L') { gotoCase = 82; continue; };
593 if (yych != 'l') { gotoCase = 43; continue; };
594 case 82:
595 yych = this._charAt(++cursor);
596 if (yych == 'E') { gotoCase = 83; continue; };
597 if (yych != 'e') { gotoCase = 43; continue; };
598 case 83:
599 ++cursor;
600 this.setLexCondition(this._lexConditions.TAG);
601 {
602 this.tokenType = "html-tag";
603 this._condition.parseCondition = this._parseConditions.INITI AL;
604 this.styleSheetEnded(cursor - 7);
605 return cursor;
606 }
607 /* *********************************** */
608 case this.case_SSTRING:
609 yych = this._charAt(cursor);
610 if (yych <= '\f') {
611 if (yych == '\n') { gotoCase = 89; continue; };
612 { gotoCase = 88; continue; };
613 } else {
614 if (yych <= '\r') { gotoCase = 89; continue; };
615 if (yych == '\'') { gotoCase = 91; continue; };
616 { gotoCase = 88; continue; };
617 }
618 case 87:
619 { return this._stringToken(cursor); }
620 case 88:
621 yych = this._charAt(++cursor);
622 { gotoCase = 95; continue; };
623 case 89:
624 ++cursor;
625 { this.tokenType = null; return cursor; }
626 case 91:
627 ++cursor;
628 case 92:
629 this.setLexCondition(this._lexConditions.TAG);
630 { return this._stringToken(cursor, true); }
631 case 93:
632 yych = this._charAt(++cursor);
633 { gotoCase = 92; continue; };
634 case 94:
635 ++cursor;
636 yych = this._charAt(cursor);
637 case 95:
638 if (yych <= '\f') {
639 if (yych == '\n') { gotoCase = 87; continue; };
640 { gotoCase = 94; continue; };
641 } else {
642 if (yych <= '\r') { gotoCase = 87; continue; };
643 if (yych == '\'') { gotoCase = 93; continue; };
644 { gotoCase = 94; continue; };
645 }
646 /* *********************************** */
647 case this.case_TAG:
648 yych = this._charAt(cursor);
649 if (yych <= '&') {
650 if (yych <= '\r') {
651 if (yych == '\n') { gotoCase = 100; continue; };
652 if (yych >= '\r') { gotoCase = 100; continue; };
653 } else {
654 if (yych <= ' ') {
655 if (yych >= ' ') { gotoCase = 100; continue; };
656 } else {
657 if (yych == '"') { gotoCase = 102; continue; };
658 }
659 }
660 } else {
661 if (yych <= '>') {
662 if (yych <= ';') {
663 if (yych <= '\'') { gotoCase = 103; continue; };
664 } else {
665 if (yych <= '<') { gotoCase = 100; continue; };
666 if (yych <= '=') { gotoCase = 104; continue; };
667 { gotoCase = 106; continue; };
668 }
669 } else {
670 if (yych <= '[') {
671 if (yych >= '[') { gotoCase = 100; continue; };
672 } else {
673 if (yych == ']') { gotoCase = 100; continue; };
674 }
675 }
676 }
677 ++cursor;
678 yych = this._charAt(cursor);
679 { gotoCase = 119; continue; };
680 case 99:
681 {
682 if (this._condition.parseCondition === this._parseConditions .SCRIPT || this._condition.parseCondition === this._parseConditions.STYLE) {
683 // Fall through if expecting attributes.
684 this.tokenType = null;
685 return cursor;
686 }
687
688 if (this._condition.parseCondition === this._parseConditions .INITIAL) {
689 this.tokenType = "html-tag";
690 this._setExpectingAttribute();
691 var token = this._line.substring(cursorOnEnter, cursor);
692 if (token === "a")
693 this._condition.parseCondition |= this._parseConditi ons.A_NODE;
694 else if (this._condition.parseCondition & this._parseCon ditions.A_NODE)
695 this._condition.parseCondition ^= this._parseConditi ons.A_NODE;
696 } else if (this._isExpectingAttribute()) {
697 var token = this._line.substring(cursorOnEnter, cursor);
698 if (token === "href" || token === "src")
699 this._condition.parseCondition |= this._parseConditi ons.LINKIFY;
700 else if (this._condition.parseCondition |= this._parseCo nditions.LINKIFY)
701 this._condition.parseCondition ^= this._parseConditi ons.LINKIFY;
702 this.tokenType = "html-attribute-name";
703 } else if (this._isExpectingAttributeValue())
704 this.tokenType = this._attrValueTokenType();
705 else
706 this.tokenType = null;
707 return cursor;
708 }
709 case 100:
710 ++cursor;
711 { this.tokenType = null; return cursor; }
712 case 102:
713 yyaccept = 0;
714 yych = this._charAt(YYMARKER = ++cursor);
715 { gotoCase = 115; continue; };
716 case 103:
717 yyaccept = 0;
718 yych = this._charAt(YYMARKER = ++cursor);
719 { gotoCase = 109; continue; };
720 case 104:
721 ++cursor;
722 {
723 if (this._isExpectingAttribute())
724 this._setExpectingAttributeValue();
725 this.tokenType = null;
726 return cursor;
727 }
728 case 106:
729 ++cursor;
730 this.setLexCondition(this._lexConditions.INITIAL);
731 {
732 this.tokenType = "html-tag";
733 if (this._condition.parseCondition & this._parseConditions.S CRIPT) {
734 this.scriptStarted(cursor);
735 // Do not tokenize script tag contents.
736 return cursor;
737 }
738
739 if (this._condition.parseCondition & this._parseConditions.S TYLE) {
740 this.styleSheetStarted(cursor);
741 // Do not tokenize style tag contents.
742 return cursor;
743 }
744
745 this._condition.parseCondition = this._parseConditions.INITI AL;
746 return cursor;
747 }
748 case 108:
749 ++cursor;
750 yych = this._charAt(cursor);
751 case 109:
752 if (yych <= '\f') {
753 if (yych != '\n') { gotoCase = 108; continue; };
754 } else {
755 if (yych <= '\r') { gotoCase = 110; continue; };
756 if (yych == '\'') { gotoCase = 112; continue; };
757 { gotoCase = 108; continue; };
758 }
759 case 110:
760 ++cursor;
761 this.setLexCondition(this._lexConditions.SSTRING);
762 { return this._stringToken(cursor); }
763 case 112:
764 ++cursor;
765 { return this._stringToken(cursor, true); }
766 case 114:
767 ++cursor;
768 yych = this._charAt(cursor);
769 case 115:
770 if (yych <= '\f') {
771 if (yych != '\n') { gotoCase = 114; continue; };
772 } else {
773 if (yych <= '\r') { gotoCase = 116; continue; };
774 if (yych == '"') { gotoCase = 112; continue; };
775 { gotoCase = 114; continue; };
776 }
777 case 116:
778 ++cursor;
779 this.setLexCondition(this._lexConditions.DSTRING);
780 { return this._stringToken(cursor); }
781 case 118:
782 ++cursor;
783 yych = this._charAt(cursor);
784 case 119:
785 if (yych <= '"') {
786 if (yych <= '\r') {
787 if (yych == '\n') { gotoCase = 99; continue; };
788 if (yych <= '\f') { gotoCase = 118; continue; };
789 { gotoCase = 99; continue; };
790 } else {
791 if (yych == ' ') { gotoCase = 99; continue; };
792 if (yych <= '!') { gotoCase = 118; continue; };
793 { gotoCase = 99; continue; };
794 }
795 } else {
796 if (yych <= '>') {
797 if (yych == '\'') { gotoCase = 99; continue; };
798 if (yych <= ';') { gotoCase = 118; continue; };
799 { gotoCase = 99; continue; };
800 } else {
801 if (yych <= '[') {
802 if (yych <= 'Z') { gotoCase = 118; continue; };
803 { gotoCase = 99; continue; };
804 } else {
805 if (yych == ']') { gotoCase = 99; continue; };
806 { gotoCase = 118; continue; };
807 }
808 }
809 }
810 }
811
812 }
813 },
814
815 __proto__: WebInspector.SourceTokenizer.prototype
816 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/SourceCSSTokenizer.re2js ('k') | Source/devtools/front_end/SourceHTMLTokenizer.re2js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698