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

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

?? parser.pm

?? Verilog Parser in Perl
?? PM
字號:
# Verilog - Verilog Perl Interface# See copyright, etc in below POD section.######################################################################package Verilog::Parser;use Carp;use Verilog::Getopt;use Verilog::Language;require DynaLoader;use base qw(DynaLoader);use strict;use vars qw($VERSION $Debug);$VERSION = '3.120';#$Debug sets the default value for debug.  You're better off with the object method though.########################################################################## Configuration Sectionbootstrap Verilog::Parser;#In Parser.xs:# sub _new (class, sigparser)# sub _open (class)# sub _debug (class, level)# sub parse (class)# sub eof (class)# sub filename (class, [setit])# sub lineno (class, [setit])# sub unreadback (class, [setit])# sub unreadbackCat (class, add)########################################################################## Constructorssub new {    my $class = shift;  $class = ref $class if ref $class;    my $self = {_sigparser=>0,		use_unreadback => 1,   # Backward compatibility		@_};    bless $self, $class;    # Sets $self->{_cthis}    $self->_new($self,		# Options go here		$self->{_sigparser},		$self->{use_unreadback},		);    $self->language(Verilog::Language::language_standard());    $self->debug($Debug) if $Debug;    return $self;}##########################################################################  Accessorssub debug {    my $self = shift;    my $level = shift;    $self->_debug($level) if defined $level;}sub fileline {    my $self = shift;    return ($self->filename||"").":".($self->lineno||"");}sub line { return lineno(@_); }  # Old, now undocumented########################################################################### Called by the parsersub reset {    my $self = shift;}sub parse_file {    # Read a file and parse    @_ == 2 or croak 'usage: $parser->parse_file($filename)';    my $self = shift;    my $filename = shift;    my $fh = new IO::File;    $fh->open($filename) or croak "%Error: $! $filename";    $self->reset();    $self->filename($filename);    $self->lineno(1);    while (defined(my $line = $fh->getline())) {	$self->parse ($line);    }    $self->eof;    $fh->close;    return $self;}sub parse_preproc_file {    # Read a preprocess file and parse    @_ == 2 or croak 'usage: $parser->parse_file(Verilog::Preproc_object_ref)';    my $self = shift;    my $pp = shift;    ref($pp) or croak "%Error: not passed a Verilog::Preproc object";    $self->reset();    while (defined(my $line = $pp->getline())) {	$self->parse ($line);    }    $self->eof;    return $self;}########################################################################## Called by the parsersub error {    my ($self,$text,$token)=@_;    my $fileline = $self->filename.":".$self->lineno;    croak ("%Error: $fileline: $text\n"	   ."Stopped");}sub attribute {    # Default Internal callback    my $self = shift;	# Parser invoked    my $token = shift;	# What token was parsed    $self->unreadbackCat($token);}sub comment {    # Default Internal callback    my $self = shift;	# Parser invoked    my $token = shift;	# What token was parsed    $self->unreadbackCat($token);}sub string {    # Default Internal callback    my $self = shift;	# Parser invoked    my $token = shift;	# What token was parsed    $self->unreadbackCat($token);}sub keyword {    # Default Internal callback    my $self = shift;	# Parser invoked    my $token = shift;	# What token was parsed    $self->unreadbackCat($token);}sub symbol {    # Default Internal callback    my $self = shift;	# Parser invoked    my $token = shift;	# What token was parsed    $self->unreadbackCat($token);}sub operator {    # Default Internal callback    my $self = shift;	# Parser invoked    my $token = shift;	# What token was parsed    $self->unreadbackCat($token);}sub preproc {    # Default Internal callback    my $self = shift;	# Parser invoked    my $token = shift;	# What token was parsed    if (Verilog::Language::is_keyword($token)) {	$self->keyword($token); # Do this for backward compatibility with Version 2.*    } else {	$self->symbol($token); # Do this for backward compatibility with Version 2.*    }}sub number {    # Default Internal callback    my $self = shift;	# Parser invoked    my $token = shift;	# What token was parsed    $self->unreadbackCat($token);}sub sysfunc {    # Default Internal callback - note the default action    my $self = shift;	# Parser invoked    my $token = shift;	# What token was parsed    $self->symbol($token); # Do this for backward compatibility with Version 2.*}sub endparse {    # Default Internal callback    my $self = shift;	# Parser invoked    my $token = shift;	# What token was parsed    $self->unreadbackCat($token);}########################################################################## Package return1;__END__=pod=head1 NAMEVerilog::Parser - Parse Verilog language files=head1 SYNOPSIS  use Verilog::Parser;  my $parser = new Verilog::Parser;  $string = $parser->unreadback ();  $line   = $parser->lineno ();  $parser->parse ($text)  $parser->parse_file ($filename)=head1 DESCRIPTIONVerilog::Parser will tokenize a Verilog file when the parse() method iscalled and invoke various callback methods.  This is useful for extractinginformation and editing files while retaining all context.  For netlistlike extractions, see L<Verilog::Netlist>.See the "Which Package" section of L<Verilog::Language> if you are unsurewhich parsing package to use for a new application.=head1 METHODS=over 4=item $parser = Verilog::Parser->new (args...)Create a new Parser. Passing the named argument "use_unreadback => 0" willdisable later use of the unreadback method, which may improve performance.=item $parser->eof ()Indicate the end of the input stream.  All incomplete tokens will be parsedand all remaining callbacks completed.=item $parser->filename ($set)Return (if $set is undefined) or set current filename.=item $parser->lineno ($set)Return (if $set is undefined) or set current line number.=item $parser->parse ($string)Parse the $string as verilog text.  Can be called multiple times.  Note notall callbacks may be invoked until the eof method is called.=item $parser->parse_file ($filename);This method can be called to parse text from a file.  The argument canbe a filename or an already opened file handle. The return value fromparse_file() is a reference to the parser object.=item $parser->parse_preproc_file ($preproc);This method can be called to parse preprocessed text from a predeclaredVerilog::Preproc object.=item $parser->unreadback ($string)Return any input string from the file that has not been sent to thecallback.  This will include whitespace and tokens which did not have acallback.  (For example comments, if there is no comment callback.)  Thisis useful for recording the entire contents of the input, forpreprocessors, pretty-printers, and such.With the optional argument, set the text to be returned with the nextunreadback call.  See also unreadbackCat, which is much faster.To use this option, "use_unreadback => 1" must have been passed to theconstructor.=item $parser->unreadbackCat ($text)Add text to be returned with the next unreadback call.  This is much fasterthan using "$parser->unreadback($parser->unreadback . $text)".=back=head1 CALLBACKSIn order to make the parser do anything interesting, you must make asubclass where you override one or more of the following callback methodsas appropriate:=over 4=item $self->attribute ( $token )This method is called when any text in (* *) are recognized.  The firstargument, $token, is the contents of the attribute including the delimiters.=item $self->comment ( $token )This method is called when any text in // or /**/ comments are recognized.The first argument, $token, is the contents of the comment including thecomment delimiters.=item $self->endparse ( $token )This method is called when the file has been completely parsed, at theEnd-Of-File of the parsed file.  It is useful for writing clean uproutines.=item $self->keyword ( $token )This method is called when any Verilog keyword is recognized.The first argument, $token, is the keyword.=item $self->number ( $token )This method is called when any number is recognized.  The first argument,$token, is the number.  The Verilog::Language::number_value function may beuseful for converting a Verilog value to a Perl integer.=item $self->operator ( $token )This method is called when any symbolic operator (+, -, etc) is recognized.The first argument, $token, is the operator.=item $self->preproc ( $token )This method is called when any Verilog preprocessor `command is recognized.Most of these are handled by the preprocessor, however any unrecognized`defines are passed through.  For backward compatibility, if not definedthis function will call the symbol callback.=item $self->string ( $token )This method is called when any text in double quotes are recognized, or onthe text of protected regions.  The first argument, $token, is the contentsof the string including the quotes.=item $self->symbol ( $token )This method is called when any Verilog symbol is recognized.  A symbol isconsidered a non-keyword bare-word.  The first argument, $token, is thesymbol.=item $self->sysfunc ( $token )This method is called when any Verilog $syscall is recognized.  The firstargument, $token, is the symbol.  For backward compatibility, if notdefined this function will call the symbol callback.=back=head1 EXAMPLEHere's a simple example which will print every symbol in a verilogfile.  package MyParser;  use Verilog::Parser;  @ISA = qw(Verilog::Parser);  # parse, parse_file, etc are inherited from Verilog::Parser  sub new {      my $class = shift;      #print "Class $class\n";      my $self = $class->SUPER::new();      bless $self, $class;      return $self;  }  sub symbol {      my $self = shift;      my $token = shift;      $self->{symbols}{$token}++;  }  sub report {      my $self = shift;      foreach my $sym (sort keys %{$self->{symbols}}) {	 printf "Symbol %-30s occurs %4d times\n",	 $sym, $self->{symbols}{$sym};      }  }  package main;  my $parser = MyParser->new();  $parser->parse_file (shift);  $parser->report();=head1 BUGSThis is being distributed as a baseline for future contributions.  Don'texpect a lot, the Parser is still naive, and there are many awkward casesthat aren't covered.The parser currently assumes the string it is passed ends on a newlineboundary.  It should be changed to allow arbitrary chunks.Cell instantiations without any arguments are not supported, an empty setof parenthesis are required.  (Use "cell cell();", not "cell cell;".)=head1 DISTRIBUTIONVerilog-Perl is part of the L<http://www.veripool.org/> free Verilog EDAsoftware tool suite.  The latest version is available from CPAN and fromL<http://www.veripool.org/verilog-perl>.Copyright 2000-2009 by Wilson Snyder.  This package is free software; youcan redistribute it and/or modify it under the terms of either the GNULesser General Public License or the Perl Artistic License.=head1 AUTHORSWilson Snyder <wsnyder@wsnyder.org>=head1 SEE ALSOL<Verilog-Perl>,L<Verilog::Preproc>,L<Verilog::SigParser>,L<Verilog::Language>,L<Verilog::Netlist>,L<Verilog::Getopt>,L<vrename>,L<vpassert>L<vppreproc>=cut

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本在线播放一区二区三区| 波多野结衣中文一区| 国产盗摄一区二区| 欧美日韩久久久久久| 国产精品美女久久久久高潮| 午夜精品福利一区二区蜜股av| 成人免费视频一区| 欧美成人a∨高清免费观看| 亚洲精品日日夜夜| 成人美女视频在线观看18| 日韩欧美亚洲另类制服综合在线| 一区二区三区精品在线| 不卡一卡二卡三乱码免费网站| 欧美不卡视频一区| 日本美女一区二区三区视频| 在线亚洲高清视频| 亚洲精品国产品国语在线app| 高清在线不卡av| 日韩欧美在线观看一区二区三区| 亚洲午夜精品网| 欧美主播一区二区三区美女| 亚洲欧美综合另类在线卡通| 高清av一区二区| 亚洲国产精品v| 成人小视频免费在线观看| 精品福利在线导航| 精一区二区三区| 精品欧美黑人一区二区三区| 青青国产91久久久久久| 制服视频三区第一页精品| 亚洲成人自拍偷拍| 7777精品伊人久久久大香线蕉超级流畅| 亚洲乱码中文字幕综合| 一本色道久久综合精品竹菊| 亚洲精品一二三| 欧美性猛交xxxxxxxx| 亚洲综合在线第一页| 欧美日韩精品综合在线| 秋霞午夜av一区二区三区| 日韩免费一区二区| 国产成人亚洲综合a∨婷婷| 国产日本欧洲亚洲| 91网上在线视频| 亚洲va韩国va欧美va| 91精品国产日韩91久久久久久| 久久超级碰视频| 久久久av毛片精品| 99在线精品免费| 亚洲一区视频在线观看视频| 69堂成人精品免费视频| 美女爽到高潮91| 国产精品污网站| 欧美视频在线观看一区| 久久国产乱子精品免费女| 久久久久国产精品人| 色综合视频在线观看| 午夜精品久久久久久久 | 色菇凉天天综合网| 亚洲高清在线精品| 久久久久久夜精品精品免费| 成人av网站在线观看免费| 亚洲六月丁香色婷婷综合久久| 欧美精品在线一区二区| 国产成人综合在线播放| 一区二区三区免费看视频| 日韩午夜在线影院| 97精品国产97久久久久久久久久久久 | 在线一区二区视频| 经典一区二区三区| 亚洲国产综合在线| 久久先锋资源网| 欧美午夜片在线看| 国产成人免费网站| 日韩高清在线一区| 亚洲天天做日日做天天谢日日欢| 91精品国产91综合久久蜜臀| 波多野结衣精品在线| 美腿丝袜一区二区三区| 亚洲人成伊人成综合网小说| 精品少妇一区二区三区视频免付费| 91影院在线观看| 国产精品一二一区| 日韩av一区二区在线影视| 日韩美女啊v在线免费观看| 日韩精品一区二区三区中文精品| 色偷偷成人一区二区三区91| 国产美女久久久久| 奇米影视在线99精品| 亚洲综合在线电影| 亚洲欧美日韩国产综合| 欧美国产精品专区| 久久色.com| 日韩免费性生活视频播放| 欧美日韩的一区二区| 91视视频在线观看入口直接观看www | 久久久噜噜噜久噜久久综合| 欧美三级中文字| www.成人在线| 国产精品夜夜嗨| 激情综合一区二区三区| 婷婷国产在线综合| 洋洋成人永久网站入口| 亚洲免费资源在线播放| 中文字幕欧美一| 中文字幕欧美国产| 国产午夜亚洲精品不卡| 久久久91精品国产一区二区精品| 精品国产电影一区二区| 日韩精品一区二区三区中文不卡 | 日韩精品专区在线影院重磅| 5566中文字幕一区二区电影 | 精品国产1区二区| 精品国产乱码久久久久久久久| 日韩欧美一二区| 精品国内二区三区| 久久嫩草精品久久久久| 久久一区二区视频| 久久精品无码一区二区三区 | 日韩欧美成人午夜| 欧美精品一区二区三区久久久| 欧美va亚洲va国产综合| 欧美精品一区二区三区蜜桃视频| 26uuu精品一区二区| 久久亚洲春色中文字幕久久久| 国产性做久久久久久| 中文字幕在线视频一区| 亚洲天堂中文字幕| 亚洲一区二区三区三| 日韩在线a电影| 紧缚捆绑精品一区二区| 国产成人免费视频一区| 91视频com| 8v天堂国产在线一区二区| 久久综合色8888| 中文字幕一区二区三区四区不卡| 一区二区欧美视频| 蜜桃视频在线一区| 成人三级在线视频| 欧美日韩久久久| 久久日韩精品一区二区五区| 日韩一区中文字幕| 日韩av电影免费观看高清完整版在线观看| 男男视频亚洲欧美| www.欧美精品一二区| 欧美三级在线播放| 欧美精彩视频一区二区三区| 亚洲精品成人精品456| 免费欧美日韩国产三级电影| 成人一二三区视频| 欧美精品第1页| 国产欧美日韩麻豆91| 亚洲成人精品影院| 成人教育av在线| 91精品国产高清一区二区三区 | 日韩精品一二三四| 国产a视频精品免费观看| 欧美熟乱第一页| 国产亚洲一二三区| 五月婷婷久久丁香| 99久久精品国产观看| 欧美哺乳videos| 亚洲一区二区三区四区五区中文| 国产一区亚洲一区| 欧美理论片在线| 亚洲精品综合在线| 黑人精品欧美一区二区蜜桃| 色狠狠一区二区| 国产欧美一区二区在线观看| 日韩精品一区第一页| 91在线观看成人| 国产日韩欧美激情| 久久精品免费观看| 欧美日韩午夜影院| 一区二区日韩av| 99精品视频在线播放观看| wwwwxxxxx欧美| 青娱乐精品视频| 欧美欧美午夜aⅴ在线观看| 亚洲日本青草视频在线怡红院| 国产精品一区二区三区99| 日韩一区二区三区高清免费看看| 亚洲裸体在线观看| voyeur盗摄精品| 中文字幕av资源一区| 国产麻豆视频一区二区| 欧美一级国产精品| 美女脱光内衣内裤视频久久网站 | 中文字幕视频一区二区三区久| 国产精品一线二线三线精华| 日韩免费高清视频| 免费观看在线色综合| 日韩一区二区在线观看| 天天av天天翘天天综合网| 精品视频一区二区不卡| 一区二区三区加勒比av| 欧美少妇xxx| 午夜精品一区在线观看| 欧美日韩一区二区欧美激情| 亚洲成人一区在线| 欧美精品在线观看播放|