![]() Server : Apache/2.4.62 (Unix) OpenSSL/1.0.2k-fips System : Linux server1.richineiserver.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : fdshops ( 1003) PHP Version : 8.2.21 Disable Function : NONE Directory : /usr/share/doc/perl-Parse-RecDescent-1.967009/demo/ |
#!/usr/bin/perl -sw # THE OL' "EMPTY SUBCLASS IN THE DEMO" TRICK. use Parse::RecDescent; sub Parse::RecDescent::f { print "Parse::RecDescent::f\n"; } @DerParser::ISA = qw { Parse::RecDescent }; $grammar = q{ typedef : /type/ ident /has/ <commit> field(s) 'end type' { $return = $item[2]; } | /type/ ident ( /is/ | /are/ ) ident { $return = $item[2]; } | <error> field : /field/ ident /is/ ident ident : /[A-Za-z]\w*/ { f(); $return = $item[1]; } }; $parse = new DerParser ( $grammar ) || die "\n"; $str = " type student has field name is text field age end type "; print "> ", $parse->typedef($str) || "<failed (as expected)>", "\n"; $str = " type student has end type "; print "> ", $parse->typedef($str) || "<failed (as expected)>", "\n"; $str = " type studentRec is student "; print "> ", $parse->typedef($str) || "<failed (unexpectedly!)>", "\n";