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

Unified Diff: source/test/intltest/wbnf.h

Issue 845603002: Update ICU to 54.1 step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@master
Patch Set: remove unusued directories Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « source/test/intltest/utxttest.cpp ('k') | source/test/intltest/wbnf.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/test/intltest/wbnf.h
diff --git a/source/test/intltest/wbnf.h b/source/test/intltest/wbnf.h
deleted file mode 100644
index 7b76f8f2daa111e6450246da6d3aa8629b865b91..0000000000000000000000000000000000000000
--- a/source/test/intltest/wbnf.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- ******************************************************************************
- * Copyright (C) 2005, International Business Machines Corporation and *
- * others. All Rights Reserved. *
- ******************************************************************************
- */
-/*
- WBNF, Weighted BNF, is an extend BNF. The most difference between WBNF
- and standard BNF is the WBNF accepts weight for its alternation items.
- The weight specifies the opportunity it will be selected.
-
- The purpose of WBNF is to help generate a random string from a given grammar
- which can be described with standard BNF. The introduction of 'weight'
- is to guide the generator to give the specific parts different chances to be
- generated.
-
- Usually, the user gives LanguageGenerator the grammar description in WBNF,
- then LanguageGenerator will generate a random string on every next() call.
- The return code of parseBNF() can help user to determine the error,
- either in the grammar description or in the WBNF parser itself.
-
-
- The grammar of WBNF itself can be described in standard BNF,
-
- escaping = _single character with a leading back slash, either inside or outside quoting_
- quoting = _quoted with a pair of single quotation marks_
- string = string alphabet | string digit | string quoting | string escaping |
- alphabet | quoting | escaping
- alphabet =
- digit =
- integer = integer digit | digit
- weight = integer %
- weight-list = weight-list weight | weight
- var = var alphabet | var digit | $ alphabet
-
- var-defs = var-defs var-def | var-def
- var-def = var '=' definition;
-
- alternation = alternation '|' alt-item | alt-item
- alt-item = sequence | sequence weight
-
- sequence = sequence modified | modified
-
- modified = core | morph | quote | repeat
- morph = modified ~
- quote = modified @
- repeat = modified quantifier | modified quantifier weight-list
- quantifier = ? | * | + | { integer , integer} | {integer, } | {integer}
-
- core = var | string | '(' definition ')'
-
- definition = core | modified | sequence | alternation
- definition = alternation
-
- Remarks:
- o Following characters are literals in preceding definition
- but are syntax symbols in WBNF
-
- % $ ~ @ ? * + { } ,
-
- o Following character are syntax symbols in preceding definition
- (sapce) contact operation, or separators to increase readability
- = definition
- | selection operation
- ( ) precedence select
- ' ' override special-character to plain character
-
- o the definition of 'escaping' and 'quoting' are preceding definition text
- o infinite is actually a predefine value PSEUDO_INFINIT defined in this file
- o if weight is not presented in "alt-item' and 'repeat',
- a default weight DEFAULT_WEIGHT defined in this file is used
-
- o * == {0, }
- + == {1, }
- ? == {0, 1}
-
- o the weight-list for repeat assigns the weights for repeat itmes one by one
-
- demo{1,3} 30% 40% 100% == (demo)30% | (demodemo)40% | (demodemodemo)100%
-
- To find more explain of the weight-list, please see the LIMITATION of the grammar
-
- o but the weight-list for question mark has different meaning
-
- demo ? 30% != demo{0,1} 30% 100%
- demo ? 30% == demo{0,1} 70% 30%
-
- the 70% is calculated from (DEFAULT_WEIGHT - weight)
-
-
- Known LIMITATION of the grammar
- For 'repeat', the parser will eat up as much as possible weights at one time,
- discard superfluous weights if it is too much,
- fill insufficient weights with default weight if it is too less.
- This behavior means following definitions are equal
-
- demo{1,3} 30% 40% 100%
- demo{1,3} 30% 40% 100% 50%
- demo{1,3} 30% 40%
-
- This behavior will cause a little confusion when defining an alternation
-
- demo{1,3} 30% 40% 100% 50% | show 20%
-
- is interpreted as
-
- (demo{1,3} 30% 40% 100%) 100% | show 20%
-
- not
-
- (demo{1,3} 30% 40% 100%) 50% | show 20%
-
- to get an expected definition, please use parentheses.
-
- Known LIMITATION of current implement
- Due to the well known point alias problem, current Parser will be effectively
- crashed if the definition looks like
-
- $a = demo;
- $b = $a;
- $c = $a;
- or
- $a = demo;
- $b = $a $a;
- or
- $a = demo;
- $b = $b $a;
-
- The crash will occur at delete operation in destructor or other memory release code.
- Several plans are on hard to fix the problem. Use a smart point with reference count,
- or use a central memory management solution. But now, it works well with collation
- monkey test, which is the only user for WBNF.
-*/
-
-#ifndef _WBNF
-#define _WBNF
-
-#include "unicode/utypes.h"
-
-const int DEFAULT_WEIGHT = 100;
-const int PSEUDO_INFINIT = 200;
-
-class LanguageGenerator_impl;
-
-class LanguageGenerator{
- LanguageGenerator_impl * lang_gen;
-public:
- enum PARSE_RESULT {OK, BNF_DEF_WRONG, INCOMPLETE, NO_TOP_NODE};
- LanguageGenerator();
- ~LanguageGenerator();
- PARSE_RESULT parseBNF(const char *const bnf_definition /*in*/, const char *const top_node/*in*/, UBool debug=FALSE);
- const char *next(); /* Return a null-terminated c-string. The buffer is owned by callee. */
-};
-
-void TestWbnf(void);
-
-#endif /* _WBNF */
« no previous file with comments | « source/test/intltest/utxttest.cpp ('k') | source/test/intltest/wbnf.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698