mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
tests: fix regex test
This commit is contained in:
parent
cd27300d75
commit
08799792a7
@ -11,13 +11,13 @@ const (
|
||||
'vlib/json/json_test.v',
|
||||
'vlib/net/http/http_httpbin_test.v',
|
||||
'vlib/net/http/http_test.v',
|
||||
'vlib/regex/regex_test.v',
|
||||
'vlib/v/tests/enum_bitfield_test.v',
|
||||
'vlib/v/tests/num_lit_call_method_test.v',
|
||||
'vlib/v/tests/pointers_test.v',
|
||||
'vlib/v/tests/type_test.v',
|
||||
'vlib/v/tests/valgrind/valgrind_test.v', // ubuntu-musl only
|
||||
'vlib/v/tests/pointers_str_test.v',
|
||||
'vlib/net/http/cookie_test.v', // ok, but should be skipped on ubuntu-musl, since there is no openssl there
|
||||
'vlib/clipboard/clipboard_test.v',
|
||||
'vlib/sqlite/sqlite_test.v',
|
||||
|
||||
|
@ -229,6 +229,7 @@ fn simple_log(txt string) {
|
||||
* Token Structs
|
||||
*
|
||||
******************************************************************************/
|
||||
pub type FnValidator fn (byte) bool
|
||||
struct Token{
|
||||
mut:
|
||||
ist u32 = u32(0)
|
||||
@ -249,7 +250,7 @@ mut:
|
||||
rep int = 0
|
||||
|
||||
// validator function pointer
|
||||
validator fn (byte) bool
|
||||
validator FnValidator
|
||||
|
||||
// groups variables
|
||||
group_rep int = 0 // repetition of the group
|
||||
@ -291,6 +292,8 @@ mut:
|
||||
group_stack_index int = -1 // continuous save on capturing groups
|
||||
}
|
||||
|
||||
pub type FnLog fn (string)
|
||||
|
||||
pub
|
||||
struct RE {
|
||||
pub mut:
|
||||
@ -321,7 +324,7 @@ pub mut:
|
||||
|
||||
// Debug/log
|
||||
debug int = 0 // enable in order to have the unroll of the code 0 = NO_DEBUG, 1 = LIGHT 2 = VERBOSE
|
||||
log_func fn (string) = simple_log // log function, can be customized by the user
|
||||
log_func FnLog = simple_log // log function, can be customized by the user
|
||||
query string = "" // query string
|
||||
}
|
||||
|
||||
@ -376,7 +379,7 @@ pub fn (re RE) get_group(group_name string) (int, int) {
|
||||
******************************************************************************/
|
||||
struct BslsStruct {
|
||||
ch u32 // meta char
|
||||
validator fn (byte) bool // validator function pointer
|
||||
validator FnValidator // validator function pointer
|
||||
}
|
||||
|
||||
const(
|
||||
@ -463,7 +466,7 @@ mut:
|
||||
cc_type int = CC_NULL // type of cc token
|
||||
ch0 u32 = u32(0) // first char of the interval a-b a in this case
|
||||
ch1 u32 = u32(0) // second char of the interval a-b b in this case
|
||||
validator fn (byte) bool // validator function pointer
|
||||
validator FnValidator // validator function pointer
|
||||
}
|
||||
|
||||
enum CharClass_parse_state {
|
||||
@ -476,7 +479,7 @@ enum CharClass_parse_state {
|
||||
|
||||
fn (re RE) get_char_class(pc int) string {
|
||||
buf := [byte(0)].repeat(re.cc.len)
|
||||
mut buf_ptr := *byte(&buf)
|
||||
mut buf_ptr := &byte(&buf)
|
||||
|
||||
mut cc_i := re.prog[pc].cc_index
|
||||
mut i := 0
|
||||
@ -1224,7 +1227,8 @@ pub fn (re mut RE) compile(in_txt string) (int,int) {
|
||||
// DEBUG PRINT REGEX GENERATED CODE
|
||||
//******************************************
|
||||
if re.debug > 0 {
|
||||
re.log_func(re.get_code())
|
||||
gc := re.get_code()
|
||||
re.log_func( gc )
|
||||
}
|
||||
//******************************************
|
||||
|
||||
@ -1442,7 +1446,6 @@ fn state_str(s Match_state) string {
|
||||
.ist_quant_n { return "ist_quant_n" }
|
||||
.ist_quant_pg { return "ist_quant_pg" }
|
||||
.ist_quant_ng { return "ist_quant_ng" }
|
||||
else { return "UNKN" }
|
||||
}
|
||||
}
|
||||
|
||||
@ -1484,7 +1487,8 @@ pub fn (re mut RE) match_base(in_txt byteptr, in_txt_len int ) (int,int) {
|
||||
h_buf.write("flags: ")
|
||||
h_buf.write("${re.flag:8x}".replace(" ","0"))
|
||||
h_buf.write("\n")
|
||||
re.log_func(h_buf.str())
|
||||
sss := h_buf.str()
|
||||
re.log_func(sss)
|
||||
}
|
||||
|
||||
for m_state != .end {
|
||||
@ -1507,7 +1511,8 @@ pub fn (re mut RE) match_base(in_txt byteptr, in_txt_len int ) (int,int) {
|
||||
// end of the input text
|
||||
if i >= in_txt_len {
|
||||
buf2.write("# ${step_count:3d} END OF INPUT TEXT\n")
|
||||
re.log_func(buf2.str())
|
||||
sss := buf2.str()
|
||||
re.log_func(sss)
|
||||
}else{
|
||||
|
||||
// print only the exe instruction
|
||||
@ -1559,7 +1564,8 @@ pub fn (re mut RE) match_base(in_txt byteptr, in_txt_len int ) (int,int) {
|
||||
}
|
||||
buf2.write(" (#${group_index})\n")
|
||||
}
|
||||
re.log_func(buf2.str())
|
||||
sss2 := buf2.str()
|
||||
re.log_func( sss2 )
|
||||
}
|
||||
}
|
||||
step_count++
|
||||
@ -2171,12 +2177,12 @@ pub fn regex(in_query string) (RE,int,int){
|
||||
return re, re_err, err_pos
|
||||
}
|
||||
|
||||
// new_regex create a REgex of small size, usually sufficient for ordinary use
|
||||
// new_regex create a RE of small size, usually sufficient for ordinary use
|
||||
pub fn new_regex() RE {
|
||||
return new_regex_by_size(1)
|
||||
}
|
||||
|
||||
// new_regex_by_size create a REgex of large size, mult specify the scale factor of the memory that will be allocated
|
||||
// new_regex_by_size create a RE of large size, mult specify the scale factor of the memory that will be allocated
|
||||
pub fn new_regex_by_size(mult int) RE {
|
||||
mut re := RE{}
|
||||
re.prog = [Token{}].repeat(MAX_CODE_LEN*mult) // max program length, default 256 istructions
|
||||
|
Loading…
Reference in New Issue
Block a user