Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | |
| 2 // for details. All rights reserved. Use of this source code is governed by a | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 class TokenKind { | |
| 6 // Common shared tokens used in TokenizerBase. | |
| 7 static final int END_OF_FILE = 0; | |
| 8 static final int LPAREN = 1; | |
| 9 static final int RPAREN = 2; | |
| 10 static final int LBRACK = 3; | |
| 11 static final int RBRACK = 4; | |
| 12 static final int LBRACE = 5; | |
| 13 static final int RBRACE = 6; | |
| 14 static final int DOT = 7; | |
| 15 | |
| 16 // Unique tokens for CSS. | |
| 17 static final int AT = 8; | |
| 18 static final int HASH = 9; | |
| 19 static final int COMBINATOR_PLUS = 10; | |
| 20 static final int COMBINATOR_GREATER = 11; | |
| 21 static final int COMBINATOR_TILDE = 12; | |
|
nweiz
2011/11/10 00:04:40
I don't like how some of these token names encode
terry
2011/11/22 16:40:47
You have a valid point I'll clean this up next che
| |
| 22 static final int ASTERISK = 13; | |
| 23 static final int NAMESPACE = 14; | |
| 24 static final int PSEUDO = 15; | |
| 25 static final int PRIVATE_NAME = 16; // _ prefix private class or id | |
| 26 static final int COMMA = 17; | |
| 27 | |
| 28 // WARNING: END_TOKENS must match above token number (last character in our | |
| 29 // list). Also add to kindToString function and the constructor | |
| 30 // for TokenKind. | |
| 31 | |
| 32 static final int END_TOKENS = 17; // Marker for last token in list | |
| 33 | |
| 34 // Synthesized Tokens (no character associated with TOKEN). | |
| 35 // TODO(terry): Possible common names used by both Dart and CSS tokenizers. | |
| 36 static final int STRING = 500; | |
| 37 static final int STRING_PART = 501; | |
| 38 static final int NUMBER = 502; | |
| 39 static final int HEX_NUMBER = 503; | |
| 40 static final int WHITESPACE = 504; | |
| 41 static final int COMMENT = 505; | |
| 42 static final int ERROR = 506; | |
| 43 static final int INCOMPLETE_STRING = 507; | |
| 44 static final int INCOMPLETE_COMMENT = 508; | |
| 45 static final int INCOMPLETE_MULTILINE_STRING_DQ = 509; | |
|
nweiz
2011/11/10 00:04:40
Unused constants
terry
2011/11/22 16:40:47
I think I'll be using these soon enough.
On 2011/1
| |
| 46 static final int INCOMPLETE_MULTILINE_STRING_SQ = 510; | |
| 47 static final int IDENTIFIER = 511; | |
| 48 | |
| 49 // Uniquely synthesized tokens for CSS. | |
| 50 static final int SELECTOR_EXPRESSION = 512; | |
| 51 static final int COMBINATOR_NONE = 513; | |
| 52 | |
| 53 // Attribute match: | |
| 54 static final int INCLUDES_MATCH = 514; // ~= | |
| 55 static final int DASH_MATCH = 515; // |= | |
| 56 static final int PREFIX_MATCH = 516; // ^= | |
| 57 static final int SUFFIX_MATCH = 517; // $= | |
| 58 static final int STRING_MATCH = 518; // *= | |
| 59 static final int EQUAL_MATCH = 519; // = | |
| 60 | |
| 61 // Simple selector type. | |
| 62 static final int CLASS_NAME = 700; // .class | |
| 63 static final int ELEMENT_NAME = 701; // tagName | |
| 64 static final int HASH_NAME = 702; // #elementId | |
| 65 static final int ATTRIBUTE_NAME = 703; // [attrib] | |
| 66 static final int PSEUDO_ELEMENT_NAME = 704; // ::pseudoElement | |
| 67 static final int PSEUDO_CLASS_NAME = 705; // :pseudoClass | |
| 68 static final int NEGATION = 706; // NOT | |
| 69 | |
| 70 List<int> tokens; | |
| 71 | |
| 72 static String kindToString(int kind) { | |
| 73 switch(kind) { | |
| 74 case TokenKind.END_OF_FILE: return "end of file"; | |
| 75 case TokenKind.LPAREN: return "("; | |
| 76 case TokenKind.RPAREN: return ")"; | |
| 77 case TokenKind.LBRACK: return "["; | |
| 78 case TokenKind.RBRACK: return "["; | |
| 79 case TokenKind.LBRACE: return "{"; | |
| 80 case TokenKind.RBRACE: return "}"; | |
| 81 case TokenKind.DOT: return "."; | |
| 82 case TokenKind.AT: return "@"; | |
| 83 case TokenKind.HASH: return "#"; | |
| 84 case TokenKind.COMBINATOR_PLUS: return "+"; | |
| 85 case TokenKind.COMBINATOR_GREATER: return ">"; | |
| 86 case TokenKind.COMBINATOR_TILDE: return "~"; | |
| 87 case TokenKind.ASTERISK: return "*"; | |
| 88 case TokenKind.NAMESPACE: return "|"; | |
| 89 case TokenKind.PSEUDO: return ":"; | |
| 90 case TokenKind.PRIVATE_NAME: return "_"; | |
| 91 case TokenKind.COMMA: return ","; | |
| 92 default: | |
| 93 throw "Unknown TOKEN"; | |
| 94 } | |
| 95 } | |
| 96 | |
| 97 TokenKind() { | |
|
nweiz
2011/11/10 00:04:40
Why is this a class that gets instantiated? Wouldn
terry
2011/11/22 16:40:47
For now I'm trying to mimic frog w/o the Python cl
| |
| 98 tokens = []; | |
| 99 | |
| 100 // All tokens must be in TokenKind order. | |
| 101 tokens.add(0); // TokenKind.END_OF_FILE | |
| 102 tokens.add(TokenKind.kindToString(TokenKind.LPAREN).charCodeAt(0)); | |
| 103 tokens.add(TokenKind.kindToString(TokenKind.RPAREN).charCodeAt(0)); | |
| 104 tokens.add(TokenKind.kindToString(TokenKind.LBRACK).charCodeAt(0)); | |
| 105 tokens.add(TokenKind.kindToString(TokenKind.RBRACK).charCodeAt(0)); | |
| 106 tokens.add(TokenKind.kindToString(TokenKind.LBRACE).charCodeAt(0)); | |
| 107 tokens.add(TokenKind.kindToString(TokenKind.RBRACE).charCodeAt(0)); | |
| 108 tokens.add(TokenKind.kindToString(TokenKind.DOT).charCodeAt(0)); | |
| 109 tokens.add(TokenKind.kindToString(TokenKind.AT).charCodeAt(0)); | |
| 110 tokens.add(TokenKind.kindToString(TokenKind.HASH).charCodeAt(0)); | |
| 111 tokens.add(TokenKind.kindToString(TokenKind.COMBINATOR_PLUS).charCodeAt(0)); | |
| 112 tokens.add(TokenKind.kindToString(TokenKind.COMBINATOR_GREATER).charCodeAt(0 )); | |
| 113 tokens.add(TokenKind.kindToString(TokenKind.COMBINATOR_TILDE).charCodeAt(0)) ; | |
| 114 tokens.add(TokenKind.kindToString(TokenKind.ASTERISK).charCodeAt(0)); | |
| 115 tokens.add(TokenKind.kindToString(TokenKind.NAMESPACE).charCodeAt(0)); | |
| 116 tokens.add(TokenKind.kindToString(TokenKind.PSEUDO).charCodeAt(0)); | |
| 117 tokens.add(TokenKind.kindToString(TokenKind.PRIVATE_NAME).charCodeAt(0)); | |
| 118 tokens.add(TokenKind.kindToString(TokenKind.COMMA).charCodeAt(0)); | |
| 119 | |
| 120 assert(tokens.length == TokenKind.END_TOKENS); | |
| 121 } | |
| 122 | |
| 123 static bool isIdentifier(int kind) { | |
| 124 return kind == IDENTIFIER ; | |
| 125 } | |
| 126 } | |
| OLD | NEW |