| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 | | var TYPE = require('../../tokenizer').TYPE; |  |   |  | var WHITESPACE = TYPE.WhiteSpace; |  | var COMMENT = TYPE.Comment; |  | var IDENT = TYPE.Ident; |  | var LEFTPARENTHESIS = TYPE.LeftParenthesis; |  |   |  | module.exports = { |  |     name: 'MediaQuery', |  |     structure: { |  |         children: [[ |  |             'Identifier', |  |             'MediaFeature', |  |             'WhiteSpace' |  |         ]] |  |     }, |  |     parse: function() { |  |         this.scanner.skipSC(); |  |   |  |         var children = this.createList(); |  |         var child = null; |  |         var space = null; |  |   |  |         scan: |  |         while (!this.scanner.eof) { |  |             switch (this.scanner.tokenType) { |  |                 case COMMENT: |  |                     this.scanner.next(); |  |                     continue; |  |   |  |                 case WHITESPACE: |  |                     space = this.WhiteSpace(); |  |                     continue; |  |   |  |                 case IDENT: |  |                     child = this.Identifier(); |  |                     break; |  |   |  |                 case LEFTPARENTHESIS: |  |                     child = this.MediaFeature(); |  |                     break; |  |   |  |                 default: |  |                     break scan; |  |             } |  |   |  |             if (space !== null) { |  |                 children.push(space); |  |                 space = null; |  |             } |  |   |  |             children.push(child); |  |         } |  |   |  |         if (child === null) { |  |             this.error('Identifier or parenthesis is expected'); |  |         } |  |   |  |         return { |  |             type: 'MediaQuery', |  |             loc: this.getLocationFromList(children), |  |             children: children |  |         }; |  |     }, |  |     generate: function(node) { |  |         this.children(node); |  |     } |  | }; | 
 |