亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? parser.pm

?? UNIX下perl實現代碼
?? PM
?? 第 1 頁 / 共 5 頁
字號:
############################################################################## Pod/Parser.pm -- package which defines a base class for parsing POD docs.## Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.# This file is part of "PodParser". PodParser is free software;# you can redistribute it and/or modify it under the same terms# as Perl itself.#############################################################################package Pod::Parser;use vars qw($VERSION);$VERSION = 1.13;  ## Current version of this packagerequire  5.005;    ## requires this Perl version or later#############################################################################=head1 NAMEPod::Parser - base class for creating POD filters and translators=head1 SYNOPSIS    use Pod::Parser;    package MyParser;    @ISA = qw(Pod::Parser);    sub command {         my ($parser, $command, $paragraph, $line_num) = @_;        ## Interpret the command and its text; sample actions might be:        if ($command eq 'head1') { ... }        elsif ($command eq 'head2') { ... }        ## ... other commands and their actions        my $out_fh = $parser->output_handle();        my $expansion = $parser->interpolate($paragraph, $line_num);        print $out_fh $expansion;    }    sub verbatim {         my ($parser, $paragraph, $line_num) = @_;        ## Format verbatim paragraph; sample actions might be:        my $out_fh = $parser->output_handle();        print $out_fh $paragraph;    }    sub textblock {         my ($parser, $paragraph, $line_num) = @_;        ## Translate/Format this block of text; sample actions might be:        my $out_fh = $parser->output_handle();        my $expansion = $parser->interpolate($paragraph, $line_num);        print $out_fh $expansion;    }    sub interior_sequence {         my ($parser, $seq_command, $seq_argument) = @_;        ## Expand an interior sequence; sample actions might be:        return "*$seq_argument*"     if ($seq_command eq 'B');        return "`$seq_argument'"     if ($seq_command eq 'C');        return "_${seq_argument}_'"  if ($seq_command eq 'I');        ## ... other sequence commands and their resulting text    }    package main;    ## Create a parser object and have it parse file whose name was    ## given on the command-line (use STDIN if no files were given).    $parser = new MyParser();    $parser->parse_from_filehandle(\*STDIN)  if (@ARGV == 0);    for (@ARGV) { $parser->parse_from_file($_); }=head1 REQUIRESperl5.005, Pod::InputObjects, Exporter, Symbol, Carp=head1 EXPORTSNothing.=head1 DESCRIPTIONB<Pod::Parser> is a base class for creating POD filters and translators.It handles most of the effort involved with parsing the POD sectionsfrom an input stream, leaving subclasses free to be concerned only withperforming the actual translation of text.B<Pod::Parser> parses PODs, and makes method calls to handle the variouscomponents of the POD. Subclasses of B<Pod::Parser> override these methodsto translate the POD into whatever output format they desire.=head1 QUICK OVERVIEWTo create a POD filter for translating POD documentation into some otherformat, you create a subclass of B<Pod::Parser> which typically overridesjust the base class implementation for the following methods:=over 2=item *B<command()>=item *B<verbatim()>=item *B<textblock()>=item *B<interior_sequence()>=backYou may also want to override the B<begin_input()> and B<end_input()>methods for your subclass (to perform any needed per-file and/orper-document initialization or cleanup).If you need to perform any preprocesssing of input before it is parsedyou may want to override one or more of B<preprocess_line()> and/orB<preprocess_paragraph()>.Sometimes it may be necessary to make more than one pass over the inputfiles. If this is the case you have several options. You can make thefirst pass using B<Pod::Parser> and override your methods to store theintermediate results in memory somewhere for the B<end_pod()> method toprocess. You could use B<Pod::Parser> for several passes with anappropriate state variable to control the operation for each pass. Ifyour input source can't be reset to start at the beginning, you canstore it in some other structure as a string or an array and have thatstructure implement a B<getline()> method (which is all thatB<parse_from_filehandle()> uses to read input).Feel free to add any member data fields you need to keep track of thingslike current font, indentation, horizontal or vertical position, orwhatever else you like. Be sure to read L<"PRIVATE METHODS AND DATA">to avoid name collisions.For the most part, the B<Pod::Parser> base class should be able todo most of the input parsing for you and leave you free to worry abouthow to intepret the commands and translate the result.Note that all we have described here in this quick overview is thesimplest most straightforward use of B<Pod::Parser> to do stream-basedparsing. It is also possible to use the B<Pod::Parser::parse_text> functionto do more sophisticated tree-based parsing. See L<"TREE-BASED PARSING">.=head1 PARSING OPTIONSA I<parse-option> is simply a named option of B<Pod::Parser> with avalue that corresponds to a certain specified behavior. These variousbehaviors of B<Pod::Parser> may be enabled/disabled by setting oror unsetting one or more I<parse-options> using the B<parseopts()> method.The set of currently accepted parse-options is as follows:=over 3=item B<-want_nonPODs> (default: unset)Normally (by default) B<Pod::Parser> will only provide access tothe POD sections of the input. Input paragraphs that are not partof the POD-format documentation are not made available to the caller(not even using B<preprocess_paragraph()>). Setting this option to anon-empty, non-zero value will allow B<preprocess_paragraph()> to seenon-POD sections of the input as well as POD sections. The B<cutting()>method can be used to determine if the corresponding paragraph is a PODparagraph, or some other input paragraph.=item B<-process_cut_cmd> (default: unset)Normally (by default) B<Pod::Parser> handles the C<=cut> POD directiveby itself and does not pass it on to the caller for processing. Settingthis option to a non-empty, non-zero value will cause B<Pod::Parser> topass the C<=cut> directive to the caller just like any other POD command(and hence it may be processed by the B<command()> method).B<Pod::Parser> will still interpret the C<=cut> directive to mean that"cutting mode" has been (re)entered, but the caller will get a chanceto capture the actual C<=cut> paragraph itself for whatever purposeit desires.=item B<-warnings> (default: unset)Normally (by default) B<Pod::Parser> recognizes a bare minimum ofpod syntax errors and warnings and issues diagnostic messagesfor errors, but not for warnings. (Use B<Pod::Checker> to do morethorough checking of POD syntax.) Setting this option to a non-empty,non-zero value will cause B<Pod::Parser> to issue diagnostics forthe few warnings it recognizes as well as the errors.=backPlease see L<"parseopts()"> for a complete description of the interfacefor the setting and unsetting of parse-options.=cut#############################################################################use vars qw(@ISA);use strict;#use diagnostics;use Pod::InputObjects;use Carp;use Exporter;BEGIN {   if ($] < 5.6) {      require Symbol;      import Symbol;   }}@ISA = qw(Exporter);## These "variables" are used as local "glob aliases" for performanceuse vars qw(%myData %myOpts @input_stack);#############################################################################=head1 RECOMMENDED SUBROUTINE/METHOD OVERRIDESB<Pod::Parser> provides several methods which most subclasses will probablywant to override. These methods are as follows:=cut##---------------------------------------------------------------------------=head1 B<command()>            $parser->command($cmd,$text,$line_num,$pod_para);This method should be overridden by subclasses to take the appropriateaction when a POD command paragraph (denoted by a line beginning with"=") is encountered. When such a POD directive is seen in the input,this method is called and is passed:=over 3=item C<$cmd>the name of the command for this POD paragraph=item C<$text>the paragraph text for the given POD paragraph command.=item C<$line_num>the line-number of the beginning of the paragraph=item C<$pod_para>a reference to a C<Pod::Paragraph> object which contains furtherinformation about the paragraph command (see L<Pod::InputObjects>for details).=backB<Note> that this method I<is> called for C<=pod> paragraphs.The base class implementation of this method simply treats the raw PODcommand as normal block of paragraph text (invoking the B<textblock()>method with the command paragraph).=cutsub command {    my ($self, $cmd, $text, $line_num, $pod_para)  = @_;    ## Just treat this like a textblock    $self->textblock($pod_para->raw_text(), $line_num, $pod_para);}##---------------------------------------------------------------------------=head1 B<verbatim()>            $parser->verbatim($text,$line_num,$pod_para);This method may be overridden by subclasses to take the appropriateaction when a block of verbatim text is encountered. It is passed thefollowing parameters:=over 3=item C<$text>the block of text for the verbatim paragraph=item C<$line_num>the line-number of the beginning of the paragraph=item C<$pod_para>a reference to a C<Pod::Paragraph> object which contains furtherinformation about the paragraph (see L<Pod::InputObjects>for details).=backThe base class implementation of this method simply prints the textblock(unmodified) to the output filehandle.=cutsub verbatim {    my ($self, $text, $line_num, $pod_para) = @_;    my $out_fh = $self->{_OUTPUT};    print $out_fh $text;}##---------------------------------------------------------------------------=head1 B<textblock()>            $parser->textblock($text,$line_num,$pod_para);This method may be overridden by subclasses to take the appropriateaction when a normal block of POD text is encountered (although the baseclass method will usually do what you want). It is passed the followingparameters:=over 3=item C<$text>the block of text for the a POD paragraph=item C<$line_num>the line-number of the beginning of the paragraph=item C<$pod_para>a reference to a C<Pod::Paragraph> object which contains furtherinformation about the paragraph (see L<Pod::InputObjects>for details).=backIn order to process interior sequences, subclasses implementations ofthis method will probably want to invoke either B<interpolate()> orB<parse_text()>, passing it the text block C<$text>, and the correspondingline number in C<$line_num>, and then perform any desired processing uponthe returned result.The base class implementation of this method simply prints the text blockas it occurred in the input stream).=cutsub textblock {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区在线视频| 亚洲成人激情自拍| 亚洲国产乱码最新视频| 青青草97国产精品免费观看| 国产精品一区二区无线| 欧美中文字幕久久| 亚洲精品在线观看视频| 成人午夜碰碰视频| 欧美综合久久久| 久久综合色8888| 一卡二卡欧美日韩| 久久99久久精品| 色综合久久综合中文综合网| 欧美成人艳星乳罩| 亚洲欧美一区二区三区极速播放| 午夜精品一区二区三区免费视频| 黑人精品欧美一区二区蜜桃| 欧美主播一区二区三区| 国产日韩欧美a| 免费一级片91| 99久久夜色精品国产网站| 欧美一区二区黄色| 亚洲丝袜精品丝袜在线| 国产在线国偷精品产拍免费yy| 色婷婷久久久久swag精品 | 性久久久久久久久| 成人激情小说乱人伦| 欧美大片一区二区三区| 亚洲一区精品在线| 成人高清在线视频| 欧美精品一区二区三区蜜桃 | 欧美三区在线观看| 国产精品久久三| 黄网站免费久久| 欧美日韩激情一区二区三区| 日韩伦理av电影| 国产精品亚洲第一区在线暖暖韩国 | 日韩精品在线看片z| 亚洲黄色av一区| heyzo一本久久综合| 久久嫩草精品久久久久| 秋霞影院一区二区| 欧美日韩精品一区二区三区四区| 自拍偷拍亚洲综合| 成人手机在线视频| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 蜜桃视频在线观看一区| 欧洲精品视频在线观看| 成人欧美一区二区三区视频网页| 国产一区二区三区日韩| 91精品国产综合久久精品性色| 一区二区三区在线免费观看| 成人av网址在线| 中文字幕精品一区二区精品绿巨人 | 欧美国产激情二区三区| 久久99热99| 日韩欧美国产综合在线一区二区三区| 亚洲不卡av一区二区三区| 日本伦理一区二区| 夜夜嗨av一区二区三区| 色综合久久99| 亚洲自拍偷拍图区| 91久久一区二区| 亚洲综合免费观看高清完整版在线| 91美女在线视频| 亚洲精品视频在线观看网站| 91视频xxxx| 一区二区三区高清| 欧美在线观看18| 亚洲1区2区3区视频| 欧美色区777第一页| 亚洲成人精品一区| 欧美一区二区美女| 麻豆成人在线观看| 精品va天堂亚洲国产| 国产在线日韩欧美| 国产欧美日韩不卡| 99re热视频精品| 亚洲亚洲精品在线观看| 欧美日韩另类一区| 免费人成精品欧美精品| 337p粉嫩大胆色噜噜噜噜亚洲 | 中文字幕第一区综合| 成人av片在线观看| 一区二区三区免费| 555www色欧美视频| 激情图片小说一区| 国产欧美一区二区精品性| 99久久精品免费| 亚洲一区二区三区不卡国产欧美 | 九九热在线视频观看这里只有精品| 欧美电影免费观看高清完整版在线观看 | 欧美亚洲禁片免费| 日韩一区精品字幕| 久久久精品国产免大香伊| 国产**成人网毛片九色| 亚洲日本丝袜连裤袜办公室| 欧美日韩一本到| 久久国产精品99精品国产| 久久精品视频免费| 91日韩精品一区| 日韩激情视频在线观看| 2021久久国产精品不只是精品| 国产99久久久国产精品潘金| 亚洲乱码中文字幕综合| 91精品国产欧美一区二区18| 国产一区二区中文字幕| 亚洲日韩欧美一区二区在线| 3d动漫精品啪啪一区二区竹菊| 国产精品一区二区男女羞羞无遮挡| 国产精品家庭影院| 欧美日本国产视频| 精品国产三级a在线观看| 国产成人免费在线观看不卡| 亚洲综合色噜噜狠狠| 久久综合色一综合色88| 色8久久人人97超碰香蕉987| 久草精品在线观看| 亚洲综合视频网| 国产亚洲精品精华液| 欧美伊人久久大香线蕉综合69| 久热成人在线视频| 亚洲欧美一区二区三区极速播放 | 国产成人一区在线| 亚洲成av人综合在线观看| 国产亚洲精品免费| 777午夜精品视频在线播放| 波多野结衣视频一区| 日本午夜精品视频在线观看| 国产精品久久毛片| 日韩写真欧美这视频| 色欧美片视频在线观看在线视频| 久久电影网站中文字幕| 亚洲精品第一国产综合野| 久久九九久精品国产免费直播| 欧美另类videos死尸| 不卡一区中文字幕| 久久成人免费网| 亚洲电影一级片| 亚洲色图.com| 国产农村妇女毛片精品久久麻豆| 4438x亚洲最大成人网| 日本高清视频一区二区| 国产成人精品亚洲777人妖| 免费欧美在线视频| 亚洲一区二区欧美日韩| 综合婷婷亚洲小说| 久久精品网站免费观看| 日韩免费看的电影| 精品视频1区2区| 色婷婷精品久久二区二区蜜臂av| 国产成人啪免费观看软件| 麻豆传媒一区二区三区| 五月综合激情网| 一区二区三区四区五区视频在线观看| 久久精品一区二区三区不卡牛牛| 欧美一区二区三区精品| 欧美日本精品一区二区三区| 色噜噜偷拍精品综合在线| 成人午夜激情视频| 国产盗摄一区二区三区| 国产一区二区毛片| 久久99精品国产麻豆不卡| 日韩高清不卡一区二区三区| 亚洲成国产人片在线观看| 一区二区日韩av| 亚洲精品午夜久久久| 亚洲三级在线播放| 亚洲三级在线观看| 亚洲精品欧美二区三区中文字幕| 国产精品久久久久一区二区三区共| 久久精品人人做人人爽97| 久久免费的精品国产v∧| 26uuu国产电影一区二区| 欧美成人精品3d动漫h| 日韩欧美精品在线| 精品三级在线观看| 亚洲精品一区二区三区四区高清| 日韩精品一区二区三区在线播放 | 精品国一区二区三区| 678五月天丁香亚洲综合网| 91精品国产福利在线观看| 欧美丰满嫩嫩电影| 在线不卡中文字幕| 日韩欧美色综合| 欧美精品一区二区不卡| 久久精品一区蜜桃臀影院| 中文字幕国产一区| 亚洲手机成人高清视频| 亚洲视频免费在线观看| 亚洲综合精品自拍| 婷婷亚洲久悠悠色悠在线播放| 三级亚洲高清视频| 老司机精品视频在线| 国产精品一区二区你懂的| 成人激情视频网站| 欧美中文字幕一区二区三区| 91麻豆精品久久久久蜜臀| 精品国产乱码久久久久久浪潮 | 91麻豆.com|