Syntax-Feature-QwComments
view release on metacpan or search on metacpan
QwComments.xs view on Meta::CPAN
}
else if ( c == '\\' ) {
lex_read_unichar( 0 );
c = lex_peek_unichar( 0 );
if ( c != sdelim && c != edelim && c != '\\' && c != '#' ) {
append_char_to_word( word_sv, '\\' );
goto REDO;
}
lex_read_unichar( 0 );
append_char_to_word( word_sv, c );
}
else if ( c == '#' || isSPACE( c ) ) {
append_word_to_list( &list_op, word_sv );
lex_read_space( 0 );
}
else {
if ( c == ',' && !warned_comma ) {
Perl_warner( aTHX_ packWARN( WARN_QW ), "Possible attempt to separate words with commas" );
++warned_comma;
}
lex_read_unichar( 0 );
append_char_to_word( word_sv, c );
}
}
SvREFCNT_dec( word_sv );
if ( !list_op )
list_op = newNULLLIST();
list_op->op_flags |= OPf_PARENS;
return list_op;
}
STATIC Perl_keyword_plugin_t next_keyword_plugin = NULL;
#define next_keyword_plugin( a, b, c ) next_keyword_plugin( aTHX_ a, b, c )
STATIC int my_keyword_plugin( pTHX_ char *keyword_ptr, STRLEN keyword_len, OP **op_ptr ) {
if ( is_syntax_enabled() ) {
if ( memEQs( keyword_ptr, keyword_len, "qw" ) ) {
*op_ptr = parse_qw();
return KEYWORD_PLUGIN_EXPR;
}
}
return next_keyword_plugin( keyword_ptr, keyword_len, op_ptr );
}
/* ======================================== */
MODULE = Syntax::Feature::QwComments PACKAGE = Syntax::Feature::QwComments
void
hint_key()
PPCODE:
SvREFCNT_inc( hint_key_sv );
XPUSHs( hint_key_sv );
XSRETURN( 1 );
BOOT:
{
wrap_keyword_plugin( my_keyword_plugin, &next_keyword_plugin );
hint_key_sv = newSVpvs( "Syntax::Feature::QwComments::qw" );
SvREADONLY_on( hint_key_sv );
}
( run in 0.804 second using v1.01-cache-2.11-cpan-5511b514fd6 )