| OLD | NEW |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import re | 5 import re |
| 6 import sys | 6 import sys |
| 7 import os.path | 7 import os.path |
| 8 | 8 |
| 9 # Try to load the ply module, if not, then assume it is in the third_party | 9 # Try to load the ply module, if not, then assume it is in the third_party |
| 10 # directory. | 10 # directory. |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 'INT_CONST_DEC', 'INT_CONST_OCT', 'INT_CONST_HEX', | 79 'INT_CONST_DEC', 'INT_CONST_OCT', 'INT_CONST_HEX', |
| 80 'FLOAT_CONST', 'HEX_FLOAT_CONST', | 80 'FLOAT_CONST', 'HEX_FLOAT_CONST', |
| 81 'CHAR_CONST', | 81 'CHAR_CONST', |
| 82 | 82 |
| 83 # String literals | 83 # String literals |
| 84 'STRING_LITERAL', | 84 'STRING_LITERAL', |
| 85 | 85 |
| 86 # Operators | 86 # Operators |
| 87 'PLUS', 'MINUS', 'TIMES', 'DIVIDE', 'MOD', | 87 'PLUS', 'MINUS', 'TIMES', 'DIVIDE', 'MOD', |
| 88 'OR', 'AND', 'NOT', 'XOR', 'LSHIFT', 'RSHIFT', | 88 'OR', 'AND', 'NOT', 'XOR', 'LSHIFT', 'RSHIFT', |
| 89 'LOR', 'LAND', 'LNOT', | |
| 90 'LT', 'LE', 'GT', 'GE', 'EQ', 'NE', | |
| 91 | 89 |
| 92 # Assignment | 90 # Assignment |
| 93 'EQUALS', | 91 'EQUALS', |
| 94 | 92 |
| 95 # Request / response | 93 # Request / response |
| 96 'RESPONSE', | 94 'RESPONSE', |
| 97 | 95 |
| 98 # Delimiters | 96 # Delimiters |
| 99 'LPAREN', 'RPAREN', # ( ) | 97 'LPAREN', 'RPAREN', # ( ) |
| 100 'LBRACKET', 'RBRACKET', # [ ] | 98 'LBRACKET', 'RBRACKET', # [ ] |
| 101 'LBRACE', 'RBRACE', # { } | 99 'LBRACE', 'RBRACE', # { } |
| 100 'LANGLE', 'RANGLE', # < > |
| 102 'SEMI', # ; | 101 'SEMI', # ; |
| 103 'COMMA', 'DOT' # , . | 102 'COMMA', 'DOT' # , . |
| 104 ) | 103 ) |
| 105 | 104 |
| 106 ## | 105 ## |
| 107 ## Regexes for use in tokens | 106 ## Regexes for use in tokens |
| 108 ## | 107 ## |
| 109 | 108 |
| 110 # valid C identifiers (K&R2: A.2.3), plus '$' (supported by some compilers) | 109 # valid C identifiers (K&R2: A.2.3), plus '$' (supported by some compilers) |
| 111 identifier = r'[a-zA-Z_$][0-9a-zA-Z_$]*' | 110 identifier = r'[a-zA-Z_$][0-9a-zA-Z_$]*' |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 t_MINUS = r'-' | 176 t_MINUS = r'-' |
| 178 t_TIMES = r'\*' | 177 t_TIMES = r'\*' |
| 179 t_DIVIDE = r'/' | 178 t_DIVIDE = r'/' |
| 180 t_MOD = r'%' | 179 t_MOD = r'%' |
| 181 t_OR = r'\|' | 180 t_OR = r'\|' |
| 182 t_AND = r'&' | 181 t_AND = r'&' |
| 183 t_NOT = r'~' | 182 t_NOT = r'~' |
| 184 t_XOR = r'\^' | 183 t_XOR = r'\^' |
| 185 t_LSHIFT = r'<<' | 184 t_LSHIFT = r'<<' |
| 186 t_RSHIFT = r'>>' | 185 t_RSHIFT = r'>>' |
| 187 t_LOR = r'\|\|' | |
| 188 t_LAND = r'&&' | |
| 189 t_LNOT = r'!' | |
| 190 t_LT = r'<' | |
| 191 t_GT = r'>' | |
| 192 t_LE = r'<=' | |
| 193 t_GE = r'>=' | |
| 194 t_EQ = r'==' | |
| 195 t_NE = r'!=' | |
| 196 | 186 |
| 197 # = | 187 # = |
| 198 t_EQUALS = r'=' | 188 t_EQUALS = r'=' |
| 199 | 189 |
| 200 # => | 190 # => |
| 201 t_RESPONSE = r'=>' | 191 t_RESPONSE = r'=>' |
| 202 | 192 |
| 203 # Delimiters | 193 # Delimiters |
| 204 t_LPAREN = r'\(' | 194 t_LPAREN = r'\(' |
| 205 t_RPAREN = r'\)' | 195 t_RPAREN = r'\)' |
| 206 t_LBRACKET = r'\[' | 196 t_LBRACKET = r'\[' |
| 207 t_RBRACKET = r'\]' | 197 t_RBRACKET = r'\]' |
| 208 t_LBRACE = r'\{' | 198 t_LBRACE = r'\{' |
| 209 t_RBRACE = r'\}' | 199 t_RBRACE = r'\}' |
| 200 t_LANGLE = r'<' |
| 201 t_RANGLE = r'>' |
| 210 t_COMMA = r',' | 202 t_COMMA = r',' |
| 211 t_DOT = r'\.' | 203 t_DOT = r'\.' |
| 212 t_SEMI = r';' | 204 t_SEMI = r';' |
| 213 | 205 |
| 214 t_STRING_LITERAL = string_literal | 206 t_STRING_LITERAL = string_literal |
| 215 t_ORDINAL = r'@[0-9]*' | 207 t_ORDINAL = r'@[0-9]*' |
| 216 | 208 |
| 217 # The following floating and integer constants are defined as | 209 # The following floating and integer constants are defined as |
| 218 # functions to impose a strict order (otherwise, decimal | 210 # functions to impose a strict order (otherwise, decimal |
| 219 # is placed before the others because its regex is longer, | 211 # is placed before the others because its regex is longer, |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 return t | 266 return t |
| 275 | 267 |
| 276 # Ignore C and C++ style comments | 268 # Ignore C and C++ style comments |
| 277 def t_COMMENT(self, t): | 269 def t_COMMENT(self, t): |
| 278 r'(/\*(.|\n)*?\*/)|(//.*(\n[ \t]*//.*)*)' | 270 r'(/\*(.|\n)*?\*/)|(//.*(\n[ \t]*//.*)*)' |
| 279 pass | 271 pass |
| 280 | 272 |
| 281 def t_error(self, t): | 273 def t_error(self, t): |
| 282 msg = 'Illegal character %s' % repr(t.value[0]) | 274 msg = 'Illegal character %s' % repr(t.value[0]) |
| 283 self._error(msg, t) | 275 self._error(msg, t) |
| OLD | NEW |