# New Ticket Created by Andrew Buchanan # Please include the string: [perl #129311] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/Ticket/Display.html?id=129311 >
This is a simple two-regex grammar. It is as if the ‘?’ modifier is set on the wildcards, and matching nothing doesn’t stop the parser. -- Andrew Buchanan tomentiru...@gmail.com <mailto:tomentiru...@gmail.com>
This is a simple two-regex grammar. It is as if the ‘?’ modifier is set on the wildcards, and matching nothing doesn’t stop the parser. |
use v6; # This Grammar goes into an infinite loop grammar G { regex Body { <Text>+ } # With this, only one character is chosen at a time, except when there is a \v regex Text { \V*: % \v+ } # With this, the input is found, and then it goes into an infinite loop #regex Text { \V* } # This works # regex Text { \V+ } } class A { method FALLBACK($fn, $match) { say "<$fn> matched '$match'"; } } my $g = G.new; my $actions = A.new; my $rule = 'Body'; say "Calling parse"; $g.parse("Line 1", :$rule, :$actions); =finish moar::dcbrule=@: moar::ar=ar moar::mastdir=/Users/andrewbuchanan/.rakudobrew/moar-nom/install/share/nqp/lib/MAST moar::tomrule=$(AR) $(ARFLAGS) $@ 3rdparty/libtommath/*.o moar::shaobjects=3rdparty/sha1/sha1.o moar::ccshared= moar::be=0 moar::dynasmlua=./3rdparty/dynasm/dynasm.lua moar::ld=clang moar::mtlib=3rdparty/tinymt/libtinymt.a moar::mtobjects=3rdparty/tinymt/tinymt64.o moar::noreturnspecifier= moar::perl=perl moar::shaclean=$(RM) 3rdparty/sha1/libsha1.a 3rdparty/sha1/*.o moar::static_inline=static __inline__ moar::ccdebugflags=-g3 moar::auxclean=@: moar::thirdpartylibs=3rdparty/dyncall/dyncall/libdyncall_s.a 3rdparty/dyncall/dyncallback/libdyncallback_s.a 3rdparty/dyncall/dynload/libdynload_s.a 3rdparty/libatomic_ops/src/libatomic_ops.a 3rdparty/tinymt/libtinymt.a 3rdparty/sha1/libsha1.a 3rdparty/libtommath/libtommath.a 3rdparty/libuv/libuv.a moar::config=--optimize --prefix=/Users/andrewbuchanan/.rakudobrew/moar-nom/install --make-install moar::ccinc=-I moar::booltype=_Bool moar::ldout=-o moar::moarlib=libmoar.a moar::mtrule=$(AR) $(ARFLAGS) $@ 3rdparty/tinymt/*.o moar::dcrule=cd 3rdparty/dyncall && ./configure && CC='$(CC)' CFLAGS='$(CFLAGS)' $(MAKE) -f Makefile moar::dcbobjects= moar::cflags=-fno-omit-frame-pointer -fno-optimize-sibling-calls -O3 -DNDEBUG -Wno-logical-op-parentheses -D_DARWIN_USE_64_BIT_INODE=1 moar::laolib=3rdparty/libatomic_ops/src/libatomic_ops.a moar::libdir=/Users/andrewbuchanan/.rakudobrew/moar-nom/install/lib moar::nul=/dev/null moar::osvers=15.0 moar::translate_newline_output=0 moar::dlrule=@: moar::cat=cat moar::can_unaligned_int32=1 moar::ldimp= moar::pkgconfig=/usr/bin/pkg-config moar::ccdef=-D moar::lib=lib%s.a moar::tomclean=$(RM) 3rdparty/libtommath/libtommath.a 3rdparty/libtommath/*.o moar::dlllocal=__attribute__ ((visibility ("hidden"))) moar::dcbclean=$(RM) 3rdparty/dyncall/dyncallback/libdyncallback_s.a moar::noreturnattribute=__attribute__((noreturn)) moar::ptr_size=8 moar::dllimport=__attribute__ ((visibility ("default"))) moar::ccout=-o moar::can_unaligned_num64=1 moar::has_pthread_yield=0 moar::ldrpath=-Wl,-rpath,"//Users/andrewbuchanan/.rakudobrew/moar-nom/install/lib" -Wl,-rpath,"/Users/andrewbuchanan/.rakudobrew/moar-nom/install/share/perl6/site/lib" moar::ldusr=-l%s moar::mainflags=-DMVM_SHARED moar::name=moar moar::dll=lib%s.dylib moar::cincludes= -I3rdparty/libuv/include -I3rdparty/libuv/src -I3rdparty/libatomic_ops/src -I3rdparty/libtommath -I3rdparty/dynasm -I3rdparty/dyncall/dynload -I3rdparty/dyncall/dyncall -I3rdparty/dyncall/dyncallback moar::uvrule=$(AR) $(ARFLAGS) $@ $(UV_DARWIN) moar::tomlib=3rdparty/libtommath/libtommath.a moar::staticlib= moar::dlclean=$(RM) 3rdparty/dyncall/dynload/libdynload_s.a moar::make=make moar::ccinstflags=-fsanitize=address moar::ldflags= -O3 -DNDEBUG -Wl,-rpath,"//Users/andrewbuchanan/.rakudobrew/moar-nom/install/lib" -Wl,-rpath,"/Users/andrewbuchanan/.rakudobrew/moar-nom/install/share/perl6/site/lib" moar::crossconf= moar::obj=.o moar::usrlibs[0]=pthread moar::dlobjects= moar::defs[0]=_DARWIN_USE_64_BIT_INODE=1 moar::cppout=> moar::ccoptiflags=-O3 -DNDEBUG moar::asmswitch=-S moar::ldoptiflags=-O3 -DNDEBUG moar::mkflags= moar::moar=libmoar.dylib moar::version=2016.09 moar::dcclean=cd 3rdparty/dyncall && $(MAKE) -f Makefile clean moar::moarshared=-install_name "/Users/andrewbuchanan/.rakudobrew/moar-nom/install/lib/libmoar.dylib" moar::sharule=$(AR) $(ARFLAGS) $@ 3rdparty/sha1/*.o moar::ccwarnflags=-Wno-logical-op-parentheses moar::jit=$(JIT_POSIX_X64) moar::moardll=libmoar.dylib moar::asm=.s moar::mknoisy=ifneq ($(NOISY), 1)MSG = @echoCMD = @NOOUT = > /dev/nullNOERR = 2> /dev/nullendif moar::dclib=3rdparty/dyncall/dyncall/libdyncall_s.a moar::ccdefflags=-D_DARWIN_USE_64_BIT_INODE=1 moar::cc=clang moar::exe= moar::lddir=-L moar::uvlib=3rdparty/libuv/libuv.a moar::dllib=3rdparty/dyncall/dynload/libdynload_s.a moar::shaincludedir=3rdparty/sha1 moar::versionmajor=2016 moar::cppswitch=-E moar::can_unaligned_int64=1 moar::lua=./3rdparty/dynasm/minilua moar::dcobjects= moar::cancgoto=1 moar::ldlibs=-lpthread moar::mainlibs=-L. -lmoar moar::nativecall_backend=dyncall moar::objflags=-DMVM_BUILD_SHARED moar::versionpatch=0 moar::laoclean=cd 3rdparty/libatomic_ops/src && $(MAKE) distclean moar::versionminor=09 moar::ccmiscflags=-fno-omit-frame-pointer -fno-optimize-sibling-calls moar::install= $(MKPATH) $(DESTDIR)$(PREFIX)/include/libuv $(CP) 3rdparty/libuv/include/*.h $(DESTDIR)$(PREFIX)/include/libuv $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/armcc $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/gcc $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/hpc $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/ibmc $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/icc $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/loadstore $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/msftc $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/sunc $(CP) 3rdparty/libatomic_ops/src/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops $(CP) 3rdparty/libatomic_ops/src/atomic_ops/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/armcc/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/armcc $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/gcc/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/gcc $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/hpc/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/hpc $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/ibmc/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/ibmc $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/icc/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/icc $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/loadstore/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/loadstore $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/msftc/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/msftc $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/sunc/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/sunc $(MKPATH) $(DESTDIR)$(PREFIX)/include/libtommath $(CP) 3rdparty/libtommath/*.h $(DESTDIR)$(PREFIX)/include/libtommath $(MKPATH) $(DESTDIR)$(PREFIX)/include/dyncall $(CP) 3rdparty/dyncall/dynload/*.h $(DESTDIR)$(PREFIX)/include/dyncall $(CP) 3rdparty/dyncall/dyncall/*.h $(DESTDIR)$(PREFIX)/include/dyncall $(CP) 3rdparty/dyncall/dyncallback/*.h $(DESTDIR)$(PREFIX)/include/dyncall moar::laoobjects= moar::mtclean=$(RM) 3rdparty/tinymt/libtinymt.a 3rdparty/tinymt/*.o moar::rm=rm -f moar::uvclean=$(RM) 3rdparty/libuv/libuv.a $(UV_DARWIN) moar::sharedlib=libmoar.dylib moar::dllexport=__attribute__ ((visibility ("default"))) moar::shalib=3rdparty/sha1/libsha1.a moar::arout= moar::lddebugflags=-g3 moar::osname=darwin moar::prefix=/Users/andrewbuchanan/.rakudobrew/moar-nom/install moar::uvobjects=$(UV_DARWIN) moar::dcblib=3rdparty/dyncall/dyncallback/libdyncallback_s.a moar::bindir=/Users/andrewbuchanan/.rakudobrew/moar-nom/install/bin moar::asmout=-o moar::havebooltype=1 moar::laorule=cd 3rdparty/libatomic_ops && CC='$(CC)' CFLAGS='$(CFLAGS)' ./configure && cd src && $(MAKE) && cd .. moar::os=darwin moar::sh=/bin/sh moar::arflags=rcs moar::ldshared=-dynamiclib moar::impinst=libmoar.dylib moar::ldinstflags=-fsanitize=address moar::ldmiscflags= moar::ldsys=-l%s moar::platform=$(PLATFORM_POSIX) moar::ccswitch=-c moar::formatattribute=__attribute__((format(X, Y, Z))) moar::tomobjects=3rdparty/libtommath/bn_error.o 3rdparty/libtommath/bn_fast_mp_invmod.o 3rdparty/libtommath/bn_fast_mp_montgomery_reduce.o 3rdparty/libtommath/bn_fast_s_mp_mul_digs.o 3rdparty/libtommath/bn_fast_s_mp_mul_high_digs.o 3rdparty/libtommath/bn_fast_s_mp_sqr.o 3rdparty/libtommath/bn_mp_2expt.o 3rdparty/libtommath/bn_mp_abs.o 3rdparty/libtommath/bn_mp_add.o 3rdparty/libtommath/bn_mp_add_d.o 3rdparty/libtommath/bn_mp_addmod.o 3rdparty/libtommath/bn_mp_and.o 3rdparty/libtommath/bn_mp_clamp.o 3rdparty/libtommath/bn_mp_clear.o 3rdparty/libtommath/bn_mp_clear_multi.o 3rdparty/libtommath/bn_mp_cmp.o 3rdparty/libtommath/bn_mp_cmp_d.o 3rdparty/libtommath/bn_mp_cmp_mag.o 3rdparty/libtommath/bn_mp_cnt_lsb.o 3rdparty/libtommath/bn_mp_copy.o 3rdparty/libtommath/bn_mp_count_bits.o 3rdparty/libtommath/bn_mp_div.o 3rdparty/libtommath/bn_mp_div_2.o 3rdparty/libtommath/bn_mp_div_2d.o 3rdparty/libtommath/bn_mp_div_3.o 3rdparty/libtommath/bn_mp_div_d.o 3rdparty/libtommath/bn_mp_dr_is_modulus.o 3rdparty/libtommath/bn_mp_dr_reduce.o 3rdparty/libtommath/bn_mp_dr_setup.o 3rdparty/libtommath/bn_mp_exch.o 3rdparty/libtommath/bn_mp_expt_d.o 3rdparty/libtommath/bn_mp_exptmod.o 3rdparty/libtommath/bn_mp_exptmod_fast.o 3rdparty/libtommath/bn_mp_exteuclid.o 3rdparty/libtommath/bn_mp_fread.o 3rdparty/libtommath/bn_mp_fwrite.o 3rdparty/libtommath/bn_mp_gcd.o 3rdparty/libtommath/bn_mp_get_int.o 3rdparty/libtommath/bn_mp_get_long.o 3rdparty/libtommath/bn_mp_grow.o 3rdparty/libtommath/bn_mp_init.o 3rdparty/libtommath/bn_mp_init_copy.o 3rdparty/libtommath/bn_mp_init_multi.o 3rdparty/libtommath/bn_mp_init_set.o 3rdparty/libtommath/bn_mp_init_set_int.o 3rdparty/libtommath/bn_mp_init_size.o 3rdparty/libtommath/bn_mp_invmod.o 3rdparty/libtommath/bn_mp_invmod_slow.o 3rdparty/libtommath/bn_mp_is_square.o 3rdparty/libtommath/bn_mp_jacobi.o 3rdparty/libtommath/bn_mp_karatsuba_mul.o 3rdparty/libtommath/bn_mp_karatsuba_sqr.o 3rdparty/libtommath/bn_mp_lcm.o 3rdparty/libtommath/bn_mp_lshd.o 3rdparty/libtommath/bn_mp_mod.o 3rdparty/libtommath/bn_mp_mod_2d.o 3rdparty/libtommath/bn_mp_mod_d.o 3rdparty/libtommath/bn_mp_montgomery_calc_normalization.o 3rdparty/libtommath/bn_mp_montgomery_reduce.o 3rdparty/libtommath/bn_mp_montgomery_setup.o 3rdparty/libtommath/bn_mp_mul.o 3rdparty/libtommath/bn_mp_mul_2.o 3rdparty/libtommath/bn_mp_mul_2d.o 3rdparty/libtommath/bn_mp_mul_d.o 3rdparty/libtommath/bn_mp_mulmod.o 3rdparty/libtommath/bn_mp_n_root.o 3rdparty/libtommath/bn_mp_neg.o 3rdparty/libtommath/bn_mp_or.o 3rdparty/libtommath/bn_mp_prime_fermat.o 3rdparty/libtommath/bn_mp_prime_is_divisible.o 3rdparty/libtommath/bn_mp_prime_is_prime.o 3rdparty/libtommath/bn_mp_prime_miller_rabin.o 3rdparty/libtommath/bn_mp_prime_next_prime.o 3rdparty/libtommath/bn_mp_prime_rabin_miller_trials.o 3rdparty/libtommath/bn_mp_prime_random_ex.o 3rdparty/libtommath/bn_mp_radix_size.o 3rdparty/libtommath/bn_mp_radix_smap.o 3rdparty/libtommath/bn_mp_rand.o 3rdparty/libtommath/bn_mp_read_radix.o 3rdparty/libtommath/bn_mp_read_signed_bin.o 3rdparty/libtommath/bn_mp_read_unsigned_bin.o 3rdparty/libtommath/bn_mp_reduce.o 3rdparty/libtommath/bn_mp_reduce_2k.o 3rdparty/libtommath/bn_mp_reduce_2k_l.o 3rdparty/libtommath/bn_mp_reduce_2k_setup.o 3rdparty/libtommath/bn_mp_reduce_2k_setup_l.o 3rdparty/libtommath/bn_mp_reduce_is_2k.o 3rdparty/libtommath/bn_mp_reduce_is_2k_l.o 3rdparty/libtommath/bn_mp_reduce_setup.o 3rdparty/libtommath/bn_mp_rshd.o 3rdparty/libtommath/bn_mp_set.o 3rdparty/libtommath/bn_mp_set_int.o 3rdparty/libtommath/bn_mp_set_long.o 3rdparty/libtommath/bn_mp_shrink.o 3rdparty/libtommath/bn_mp_signed_bin_size.o 3rdparty/libtommath/bn_mp_sqr.o 3rdparty/libtommath/bn_mp_sqrmod.o 3rdparty/libtommath/bn_mp_sqrt.o 3rdparty/libtommath/bn_mp_sub.o 3rdparty/libtommath/bn_mp_sub_d.o 3rdparty/libtommath/bn_mp_submod.o 3rdparty/libtommath/bn_mp_to_signed_bin.o 3rdparty/libtommath/bn_mp_to_signed_bin_n.o 3rdparty/libtommath/bn_mp_to_unsigned_bin.o 3rdparty/libtommath/bn_mp_to_unsigned_bin_n.o 3rdparty/libtommath/bn_mp_toom_mul.o 3rdparty/libtommath/bn_mp_toom_sqr.o 3rdparty/libtommath/bn_mp_toradix.o 3rdparty/libtommath/bn_mp_toradix_n.o 3rdparty/libtommath/bn_mp_unsigned_bin_size.o 3rdparty/libtommath/bn_mp_xor.o 3rdparty/libtommath/bn_mp_zero.o 3rdparty/libtommath/bn_prime_tab.o 3rdparty/libtommath/bn_reverse.o 3rdparty/libtommath/bn_s_mp_add.o 3rdparty/libtommath/bn_s_mp_exptmod.o 3rdparty/libtommath/bn_s_mp_mul_digs.o 3rdparty/libtommath/bn_s_mp_mul_high_digs.o 3rdparty/libtommath/bn_s_mp_sqr.o 3rdparty/libtommath/bn_s_mp_sub.o 3rdparty/libtommath/bncore.o perl6::language_version=6.c perl6::codename= perl6::release-number= perl6::build-date=2016-09-19T13:43:11Z perl6::version=2016.09-15-g4b1864b perl6::implementation=Rakudo