OLD | NEW |
---|---|
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 1292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1303 // result will be something like: | 1303 // result will be something like: |
1304 // | 1304 // |
1305 // +-------+ +------------+ | 1305 // +-------+ +------------+ |
1306 // | . | | . | | 1306 // | . | | . | |
1307 // +-------+ ---> +------------+ | 1307 // +-------+ ---> +------------+ |
1308 // | word? | | check word | | 1308 // | word? | | check word | |
1309 // +-------+ +------------+ | 1309 // +-------+ +------------+ |
1310 class Analysis: public NodeVisitor { | 1310 class Analysis: public NodeVisitor { |
1311 public: | 1311 public: |
1312 explicit Analysis(bool ignore_case) | 1312 explicit Analysis(bool ignore_case) |
1313 : ignore_case_(ignore_case) { } | 1313 : ignore_case_(ignore_case), error_message_(NULL) { } |
1314 void EnsureAnalyzed(RegExpNode* node); | 1314 void EnsureAnalyzed(RegExpNode* node); |
1315 | 1315 |
1316 #define DECLARE_VISIT(Type) \ | 1316 #define DECLARE_VISIT(Type) \ |
1317 virtual void Visit##Type(Type##Node* that); | 1317 virtual void Visit##Type(Type##Node* that); |
1318 FOR_EACH_NODE_TYPE(DECLARE_VISIT) | 1318 FOR_EACH_NODE_TYPE(DECLARE_VISIT) |
1319 #undef DECLARE_VISIT | 1319 #undef DECLARE_VISIT |
1320 virtual void VisitLoopChoice(LoopChoiceNode* that); | 1320 virtual void VisitLoopChoice(LoopChoiceNode* that); |
1321 | 1321 |
1322 bool failed() { return error_message_ != NULL; } | |
Christian Plesner Hansen
2009/05/27 10:04:48
Since this is a boolean predicate it should be 'ha
| |
1323 const char* error_message() { | |
1324 ASSERT(error_message_ != NULL); | |
1325 return error_message_; | |
1326 } | |
1327 void fail(const char* error_message) { | |
1328 error_message_ = error_message; | |
1329 } | |
1322 private: | 1330 private: |
1323 bool ignore_case_; | 1331 bool ignore_case_; |
1332 const char* error_message_; | |
1324 | 1333 |
1325 DISALLOW_IMPLICIT_CONSTRUCTORS(Analysis); | 1334 DISALLOW_IMPLICIT_CONSTRUCTORS(Analysis); |
1326 }; | 1335 }; |
1327 | 1336 |
1328 | 1337 |
1329 struct RegExpCompileData { | 1338 struct RegExpCompileData { |
1330 RegExpCompileData() | 1339 RegExpCompileData() |
1331 : tree(NULL), | 1340 : tree(NULL), |
1332 node(NULL), | 1341 node(NULL), |
1333 simple(true), | 1342 simple(true), |
(...skipping 30 matching lines...) Expand all Loading... | |
1364 Handle<String> pattern, | 1373 Handle<String> pattern, |
1365 bool is_ascii); | 1374 bool is_ascii); |
1366 | 1375 |
1367 static void DotPrint(const char* label, RegExpNode* node, bool ignore_case); | 1376 static void DotPrint(const char* label, RegExpNode* node, bool ignore_case); |
1368 }; | 1377 }; |
1369 | 1378 |
1370 | 1379 |
1371 } } // namespace v8::internal | 1380 } } // namespace v8::internal |
1372 | 1381 |
1373 #endif // V8_JSREGEXP_H_ | 1382 #endif // V8_JSREGEXP_H_ |
OLD | NEW |