use strict;
use Devel::Tokenizer::C 0.05;
-require 'regen/regen_lib.pl';
+require './regen/regen_lib.pl';
my $h = open_new('keywords.h', '>',
{ by => 'regen/keywords.pl', from => 'its data',
}
# If this hash changes, make sure the equivalent hash in
-# dist/B-Deparse/Deparse.pm is also updated.
+# lib/B/Deparse.pm (%feature_keywords) is also updated.
my %feature_kw = (
- given => 'switch',
- when => 'switch',
- default => 'switch',
- # continue is already a keyword
- break => 'switch',
-
- say => 'say',
-
- state => 'state',
- );
+ state => 'state',
+ say => 'say',
+ given => 'switch',
+ when => 'switch',
+ default => 'switch',
+ # continue is already a keyword
+ break => 'switch',
+ evalbytes => 'evalbytes',
+ __SUB__ => '__SUB__',
+ fc => 'fc',
+);
my %pos = map { ($_ => 1) } @{$by_strength{'+'}};
#define PERL_IN_KEYWORDS_C
#include "perl.h"
#include "keywords.h"
+#include "feature.h"
I32
Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords)
{
- dVAR;
-
PERL_ARGS_ASSERT_KEYWORD;
$switch
elsif (my $feature = $feature_kw{$k}) {
$feature =~ s/([\\"])/\\$1/g;
return <<END;
-return (all_keywords || FEATURE_IS_ENABLED("$feature") ? ${sign}KEY_$k : 0);
+return (all_keywords || FEATURE_\U$feature\E_IS_ENABLED ? ${sign}KEY_$k : 0);
END
}
return <<END;
-__PACKAGE__
+__DATA__
+__END__
+-__SUB__
+AUTOLOAD
+BEGIN
+UNITCHECK
--CORE
+DESTROY
+END
+INIT
-eof
-eq
+eval
+-evalbytes
-exec
+exists
-exit
-exp
+-fc
-fcntl
-fileno
-flock