The grammar is `!match(str, regex)` and this operator produces 1 if the `str` matches the regular expression `regex`. The format of `regex` is ERE (Extended POSIX Regular Expressions).
37 lines
1.0 KiB
TableGen
37 lines
1.0 KiB
TableGen
// RUN: llvm-tblgen %s | FileCheck %s
|
|
// RUN: not llvm-tblgen -DERROR1 %s 2>&1 | FileCheck --check-prefix=ERROR1 %s
|
|
// RUN: not llvm-tblgen -DERROR2 %s 2>&1 | FileCheck --check-prefix=ERROR2 %s
|
|
// RUN: not llvm-tblgen -DERROR3 %s 2>&1 | FileCheck --check-prefix=ERROR3 %s
|
|
// RUN: not llvm-tblgen -DERROR4 %s 2>&1 | FileCheck --check-prefix=ERROR4 %s
|
|
// XFAIL: vg_leak
|
|
|
|
def test {
|
|
bit test0 = !match("123 abc ABC", "[0-9 a-z A-Z]+");
|
|
bit test1 = !match("abc", "[0-9]+");
|
|
}
|
|
|
|
// CHECK-LABEL: def test {
|
|
// CHECK-NEXT: bit test0 = 1;
|
|
// CHECK-NEXT: bit test1 = 0;
|
|
// CHECK-NEXT: }
|
|
|
|
#ifdef ERROR1
|
|
defvar error1 = !match(123, ".*");
|
|
// ERROR1: error: expected value of type 'string', got 'int'
|
|
#endif
|
|
|
|
#ifdef ERROR2
|
|
defvar error2 = !match("abc", 123);
|
|
// ERROR2: error: expected value of type 'string', got 'int'
|
|
#endif
|
|
|
|
#ifdef ERROR3
|
|
defvar error3 = !match("abc", "abc", "abc");
|
|
// ERROR3: error: expected two operands to operator
|
|
#endif
|
|
|
|
#ifdef ERROR4
|
|
defvar error4 = !match("abc", "([)]");
|
|
// ERROR4: error: invalid regex '([)]'
|
|
#endif
|