⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 idl.pm

📁 wireshark 0.99.7 最新源码
💻 PM
📖 第 1 页 / 共 3 页
字号:
	},	{#State 220		DEFAULT => -26	},	{#State 221		DEFAULT => -79	}],                                  yyrules  =>[	[#Rule 0		 '$start', 2, undef	],	[#Rule 1		 'idl', 0, undef	],	[#Rule 2		 'idl', 2,sub#line 19 "idl.yp"{ push(@{$_[1]}, $_[2]); $_[1] }	],	[#Rule 3		 'idl', 2,sub#line 20 "idl.yp"{ push(@{$_[1]}, $_[2]); $_[1] }	],	[#Rule 4		 'idl', 2,sub#line 21 "idl.yp"{ push(@{$_[1]}, $_[2]); $_[1] }	],	[#Rule 5		 'idl', 2,sub#line 22 "idl.yp"{ push(@{$_[1]}, $_[2]); $_[1] }	],	[#Rule 6		 'idl', 2,sub#line 23 "idl.yp"{ push(@{$_[1]}, $_[2]); $_[1] }	],	[#Rule 7		 'idl', 2,sub#line 24 "idl.yp"{ push(@{$_[1]}, $_[2]); $_[1] }	],	[#Rule 8		 'import', 3,sub#line 27 "idl.yp"{{			"TYPE" => "IMPORT", 			"PATHS" => $_[2],		   "FILE" => $_[0]->YYData->{FILE},		   "LINE" => $_[0]->YYData->{LINE}		}}	],	[#Rule 9		 'include', 3,sub#line 34 "idl.yp"{{ 			"TYPE" => "INCLUDE", 			"PATHS" => $_[2],		   "FILE" => $_[0]->YYData->{FILE},		   "LINE" => $_[0]->YYData->{LINE}		}}	],	[#Rule 10		 'importlib', 3,sub#line 41 "idl.yp"{{ 			"TYPE" => "IMPORTLIB", 			"PATHS" => $_[2],		   "FILE" => $_[0]->YYData->{FILE},		   "LINE" => $_[0]->YYData->{LINE}		}}	],	[#Rule 11		 'commalist', 1,sub#line 50 "idl.yp"{ [ $_[1] ] }	],	[#Rule 12		 'commalist', 3,sub#line 51 "idl.yp"{ push(@{$_[1]}, $_[3]); $_[1] }	],	[#Rule 13		 'coclass', 7,sub#line 55 "idl.yp"{{               "TYPE" => "COCLASS", 	       "PROPERTIES" => $_[1],	       "NAME" => $_[3],	       "DATA" => $_[5],		   "FILE" => $_[0]->YYData->{FILE},		   "LINE" => $_[0]->YYData->{LINE},          }}	],	[#Rule 14		 'interface_names', 0, undef	],	[#Rule 15		 'interface_names', 4,sub#line 67 "idl.yp"{ push(@{$_[1]}, $_[2]); $_[1] }	],	[#Rule 16		 'interface', 7,sub#line 71 "idl.yp"{{               "TYPE" => "INTERFACE", 	       "PROPERTIES" => $_[1],	       "NAME" => $_[3],	       "DATA" => $_[5],		   "FILE" => $_[0]->YYData->{FILE},		   "LINE" => $_[0]->YYData->{LINE},          }}	],	[#Rule 17		 'cpp_quote', 4,sub#line 82 "idl.yp"{{		 "TYPE" => "CPP_QUOTE",		 "FILE" => $_[0]->YYData->{FILE},		 "LINE" => $_[0]->YYData->{LINE},		 "DATA" => $_[3]	}}	],	[#Rule 18		 'definitions', 1,sub#line 91 "idl.yp"{ [ $_[1] ] }	],	[#Rule 19		 'definitions', 2,sub#line 92 "idl.yp"{ push(@{$_[1]}, $_[2]); $_[1] }	],	[#Rule 20		 'definition', 1, undef	],	[#Rule 21		 'definition', 1, undef	],	[#Rule 22		 'definition', 1, undef	],	[#Rule 23		 'definition', 1, undef	],	[#Rule 24		 'definition', 1, undef	],	[#Rule 25		 'const', 7,sub#line 100 "idl.yp"{{                     "TYPE"  => "CONST", 		     "DTYPE"  => $_[2],			 "POINTERS" => $_[3],		     "NAME"  => $_[4],		     "VALUE" => $_[6],		     "FILE" => $_[0]->YYData->{FILE},		     "LINE" => $_[0]->YYData->{LINE},        }}	],	[#Rule 26		 'const', 8,sub#line 110 "idl.yp"{{                     "TYPE"  => "CONST", 		     "DTYPE"  => $_[2],			 "POINTERS" => $_[3],		     "NAME"  => $_[4],		     "ARRAY_LEN" => $_[5],		     "VALUE" => $_[7],		     "FILE" => $_[0]->YYData->{FILE},		     "LINE" => $_[0]->YYData->{LINE},        }}	],	[#Rule 27		 'function', 7,sub#line 124 "idl.yp"{{		"TYPE" => "FUNCTION",		"NAME" => $_[3],		"RETURN_TYPE" => $_[2],		"PROPERTIES" => $_[1],		"ELEMENTS" => $_[5],		"FILE" => $_[0]->YYData->{FILE},		"LINE" => $_[0]->YYData->{LINE},	  }}	],	[#Rule 28		 'declare', 4,sub#line 136 "idl.yp"{{	             "TYPE" => "DECLARE", 		     "NAME" => $_[3],		     "DATA" => $_[2],		     "FILE" => $_[0]->YYData->{FILE},		     "LINE" => $_[0]->YYData->{LINE},        }}	],	[#Rule 29		 'decl_type', 1, undef	],	[#Rule 30		 'decl_type', 1, undef	],	[#Rule 31		 'decl_type', 1, undef	],	[#Rule 32		 'decl_enum', 2,sub#line 149 "idl.yp"{{                     "TYPE" => "ENUM",                     "PROPERTIES" => $_[1]        }}	],	[#Rule 33		 'decl_bitmap', 2,sub#line 156 "idl.yp"{{                     "TYPE" => "BITMAP",                     "PROPERTIES" => $_[1]        }}	],	[#Rule 34		 'decl_union', 2,sub#line 163 "idl.yp"{{                     "TYPE" => "UNION",                     "PROPERTIES" => $_[1]        }}	],	[#Rule 35		 'typedef', 6,sub#line 170 "idl.yp"{{	             "TYPE" => "TYPEDEF",                      "PROPERTIES" => $_[1],		     "NAME" => $_[4],		     "DATA" => $_[3],		     "ARRAY_LEN" => $_[5],		     "FILE" => $_[0]->YYData->{FILE},		     "LINE" => $_[0]->YYData->{LINE},        }}	],	[#Rule 36		 'usertype', 1, undef	],	[#Rule 37		 'usertype', 1, undef	],	[#Rule 38		 'usertype', 1, undef	],	[#Rule 39		 'usertype', 1, undef	],	[#Rule 40		 'typedecl', 2,sub#line 183 "idl.yp"{ $_[1] }	],	[#Rule 41		 'sign', 1, undef	],	[#Rule 42		 'sign', 1, undef	],	[#Rule 43		 'existingtype', 2,sub#line 188 "idl.yp"{ ($_[1]?$_[1]:"signed") ." $_[2]" }	],	[#Rule 44		 'existingtype', 1, undef	],	[#Rule 45		 'type', 1, undef	],	[#Rule 46		 'type', 1, undef	],	[#Rule 47		 'type', 1,sub#line 192 "idl.yp"{ "void" }	],	[#Rule 48		 'enum_body', 3,sub#line 194 "idl.yp"{ $_[2] }	],	[#Rule 49		 'opt_enum_body', 0, undef	],	[#Rule 50		 'opt_enum_body', 1, undef	],	[#Rule 51		 'enum', 4,sub#line 197 "idl.yp"{{             "TYPE" => "ENUM", 			 "PROPERTIES" => $_[1],			 "NAME" => $_[3],		     "ELEMENTS" => $_[4]        }}	],	[#Rule 52		 'enum_elements', 1,sub#line 206 "idl.yp"{ [ $_[1] ] }	],	[#Rule 53		 'enum_elements', 3,sub#line 207 "idl.yp"{ push(@{$_[1]}, $_[3]); $_[1] }	],	[#Rule 54		 'enum_element', 1, undef	],	[#Rule 55		 'enum_element', 3,sub#line 211 "idl.yp"{ "$_[1]$_[2]$_[3]" }	],	[#Rule 56		 'bitmap_body', 3,sub#line 214 "idl.yp"{ $_[2] }	],	[#Rule 57		 'opt_bitmap_body', 0, undef	],	[#Rule 58		 'opt_bitmap_body', 1, undef	],	[#Rule 59		 'bitmap', 4,sub#line 217 "idl.yp"{{             "TYPE" => "BITMAP", 		     "PROPERTIES" => $_[1],			 "NAME" => $_[3],		     "ELEMENTS" => $_[4]        }}	],	[#Rule 60		 'bitmap_elements', 1,sub#line 226 "idl.yp"{ [ $_[1] ] }	],	[#Rule 61		 'bitmap_elements', 3,sub#line 227 "idl.yp"{ push(@{$_[1]}, $_[3]); $_[1] }	],	[#Rule 62		 'opt_bitmap_elements', 0, undef	],	[#Rule 63		 'opt_bitmap_elements', 1, undef	],	[#Rule 64		 'bitmap_element', 3,sub#line 232 "idl.yp"{ "$_[1] ( $_[3] )" }	],	[#Rule 65		 'struct_body', 3,sub#line 235 "idl.yp"{ $_[2] }	],	[#Rule 66		 'opt_struct_body', 0, undef	],	[#Rule 67		 'opt_struct_body', 1, undef	],	[#Rule 68		 'struct', 4,sub#line 239 "idl.yp"{{             "TYPE" => "STRUCT", 			 "PROPERTIES" => $_[1],			 "NAME" => $_[3],		     "ELEMENTS" => $_[4]        }}	],	[#Rule 69		 'empty_element', 2,sub#line 248 "idl.yp"{{		 "NAME" => "",		 "TYPE" => "EMPTY",		 "PROPERTIES" => $_[1],		 "POINTERS" => 0,		 "ARRAY_LEN" => [],		 "FILE" => $_[0]->YYData->{FILE},		 "LINE" => $_[0]->YYData->{LINE},	 }}	],	[#Rule 70		 'base_or_empty', 2, undef	],	[#Rule 71		 'base_or_empty', 1, undef	],	[#Rule 72		 'optional_base_element', 2,sub#line 262 "idl.yp"{ $_[2]->{PROPERTIES} = FlattenHash([$_[1],$_[2]->{PROPERTIES}]); $_[2] }	],	[#Rule 73		 'union_elements', 0, undef	],	[#Rule 74		 'union_elements', 2,sub#line 267 "idl.yp"{ push(@{$_[1]}, $_[2]); $_[1] }	],	[#Rule 75		 'union_body', 3,sub#line 270 "idl.yp"{ $_[2] }	],	[#Rule 76		 'opt_union_body', 0, undef	],	[#Rule 77		 'opt_union_body', 1, undef	],	[#Rule 78		 'union', 4,sub#line 274 "idl.yp"{{             "TYPE" => "UNION", 			 "PROPERTIES" => $_[1],		     "NAME" => $_[3],		     "ELEMENTS" => $_[4]        }}	],	[#Rule 79		 'base_element', 5,sub#line 283 "idl.yp"{{			   "NAME" => $_[4],			   "TYPE" => $_[2],			   "PROPERTIES" => $_[1],			   "POINTERS" => $_[3],			   "ARRAY_LEN" => $_[5],		       "FILE" => $_[0]->YYData->{FILE},		       "LINE" => $_[0]->YYData->{LINE},              }}	],	[#Rule 80		 'pointers', 0,sub#line 297 "idl.yp"{ 0 }	],	[#Rule 81		 'pointers', 2,sub#line 298 "idl.yp"{ $_[1]+1 }	],	[#Rule 82		 'element_list1', 0,sub#line 302 "idl.yp"{ [] }	],	[#Rule 83		 'element_list1', 3,sub#line 303 "idl.yp"{ push(@{$_[1]}, $_[2]); $_[1] }	],	[#Rule 84		 'element_list2', 0, undef	],	[#Rule 85		 'element_list2', 1, undef	],	[#Rule 86		 'element_list2', 1,sub#line 309 "idl.yp"{ [ $_[1] ] }	],	[#Rule 87		 'element_list2', 3,sub#line 310 "idl.yp"{ push(@{$_[1]}, $_[3]); $_[1] }	],	[#Rule 88		 'array_len', 0, undef	],	[#Rule 89		 'array_len', 3,sub#line 315 "idl.yp"{ push(@{$_[3]}, "*"); $_[3] }	],	[#Rule 90		 'array_len', 4,sub#line 316 "idl.yp"{ push(@{$_[4]}, "$_[2]"); $_[4] }	],	[#Rule 91		 'property_list', 0, undef	],	[#Rule 92		 'property_list', 4,sub#line 322 "idl.yp"{ FlattenHash([$_[1],$_[3]]); }	],	[#Rule 93		 'properties', 1,sub#line 325 "idl.yp"{ $_[1] }	],	[#Rule 94		 'properties', 3,sub#line 326 "idl.yp"{ FlattenHash([$_[1], $_[3]]); }	],	[#Rule 95		 'property', 1,sub#line 329 "idl.yp"{{ "$_[1]" => "1"     }}	],	[#Rule 96		 'property', 4,sub#line 330 "idl.yp"{{ "$_[1]" => "$_[3]" }}	],	[#Rule 97		 'listtext', 1, undef	],	[#Rule 98		 'listtext', 3,sub#line 335 "idl.yp"{ "$_[1] $_[3]" }	],	[#Rule 99		 'commalisttext', 1, undef	],	[#Rule 100		 'commalisttext', 3,sub#line 340 "idl.yp"{ "$_[1],$_[3]" }	],	[#Rule 101		 'anytext', 0,sub#line 344 "idl.yp"{ "" }	],	[#Rule 102		 'anytext', 1, undef	],	[#Rule 103		 'anytext', 1, undef	],	[#Rule 104		 'anytext', 1, undef	],	[#Rule 105		 'anytext', 3,sub#line 346 "idl.yp"{ "$_[1]$_[2]$_[3]" }	],	[#Rule 106		 'anytext', 3,sub#line 347 "idl.yp"{ "$_[1]$_[2]$_[3]" }	],	[#Rule 107		 'anytext', 3,sub#line 348 "idl.yp"{ "$_[1]$_[2]$_[3]" }	],	[#Rule 108		 'anytext', 3,sub#line 349 "idl.yp"{ "$_[1]$_[2]$_[3]" }	],	[#Rule 109		 'anytext', 3,sub#line 350 "idl.yp"{ "$_[1]$_[2]$_[3]" }	],	[#Rule 110		 'anytext', 3,sub#line 351 "idl.yp"{ "$_[1]$_[2]$_[3]" }	],	[#Rule 111		 'anytext', 3,sub#line 352 "idl.yp"{ "$_[1]$_[2]$_[3]" }	],	[#Rule 112		 'anytext', 3,sub#line 353 "idl.yp"{ "$_[1]$_[2]$_[3]" }	],	[#Rule 113		 'anytext', 3,sub#line 354 "idl.yp"{ "$_[1]$_[2]$_[3]" }	],	[#Rule 114		 'anytext', 3,sub#line 355 "idl.yp"{ "$_[1]$_[2]$_[3]" }	],	[#Rule 115		 'anytext', 3,sub#line 356 "idl.yp"{ "$_[1]$_[2]$_[3]" }	],	[#Rule 116		 'anytext', 3,sub#line 357 "idl.yp"{ "$_[1]$_[2]$_[3]" }	],	[#Rule 117		 'anytext', 3,sub#line 358 "idl.yp"{ "$_[1]$_[2]$_[3]" }	],	[#Rule 118		 'anytext', 5,sub#line 359 "idl.yp"{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }	],	[#Rule 119		 'anytext', 5,sub#line 360 "idl.yp"{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }	],	[#Rule 120		 'identifier', 1, undef	],	[#Rule 121		 'optional_identifier', 1, undef	],	[#Rule 122		 'optional_identifier', 0, undef	],	[#Rule 123		 'constant', 1, undef	],	[#Rule 124		 'text', 1,sub#line 374 "idl.yp"{ "\"$_[1]\"" }	],	[#Rule 125		 'optional_semicolon', 0, undef	],	[#Rule 126		 'optional_semicolon', 1, undef	]],                                  @_);    bless($self,$class);}#line 385 "idl.yp"use Parse::Pidl qw(error);###################################################################### flatten an array of hashes into a single hashsub FlattenHash($) {     my $a = shift;    my %b;    for my $d (@{$a}) {	for my $k (keys %{$d}) {	    $b{$k} = $d->{$k};	}    }    return \%b;}###################################################################### traverse a perl data structure removing any empty arrays or# hashes and any hash elements that map to undefsub CleanData($){    sub CleanData($);    my($v) = shift;	return undef if (not defined($v));    if (ref($v) eq "ARRAY") {	foreach my $i (0 .. $#{$v}) {	    CleanData($v->[$i]);	}	# this removes any undefined elements from the array	@{$v} = grep { defined $_ } @{$v};    } elsif (ref($v) eq "HASH") {	foreach my $x (keys %{$v}) {	    CleanData($v->{$x});	    if (!defined $v->{$x}) { delete($v->{$x}); next; }	}    }	return $v;}sub _Error {    if (exists $_[0]->YYData->{ERRMSG}) {		error($_[0]->YYData, $_[0]->YYData->{ERRMSG});		delete $_[0]->YYData->{ERRMSG};		return;	};	my $last_token = $_[0]->YYData->{LAST_TOKEN};		error($_[0]->YYData, "Syntax error near '$last_token'");}sub _Lexer($){	my($parser)=shift;    $parser->YYData->{INPUT} or return('',undef);again:	$parser->YYData->{INPUT} =~ s/^[ \t]*//;	for ($parser->YYData->{INPUT}) {		if (/^\#/) {			if (s/^\# (\d+) \"(.*?)\"( \d+|)//) {				$parser->YYData->{LINE} = $1-1;				$parser->YYData->{FILE} = $2;				goto again;			}			if (s/^\#line (\d+) \"(.*?)\"( \d+|)//) {				$parser->YYData->{LINE} = $1-1;				$parser->YYData->{FILE} = $2;				goto again;			}			if (s/^(\#.*)$//m) {				goto again;			}		}		if (s/^(\n)//) {			$parser->YYData->{LINE}++;			goto again;		}		if (s/^\"(.*?)\"//) {			$parser->YYData->{LAST_TOKEN} = $1;			return('TEXT',$1); 		}		if (s/^(\d+)(\W|$)/$2/) {			$parser->YYData->{LAST_TOKEN} = $1;			return('CONSTANT',$1); 		}		if (s/^([\w_]+)//) {			$parser->YYData->{LAST_TOKEN} = $1;			if ($1 =~ 			    /^(coclass|interface|const|typedef|declare|union|cpp_quote			      |struct|enum|bitmap|void|unsigned|signed|import|include				  |importlib)$/x) {				return $1;			}			return('IDENTIFIER',$1);		}		if (s/^(.)//s) {			$parser->YYData->{LAST_TOKEN} = $1;			return($1,$1);		}	}}sub parse_string{	my ($data,$filename) = @_;	my $self = new Parse::Pidl::IDL;    $self->YYData->{FILE} = $filename;    $self->YYData->{INPUT} = $data;    $self->YYData->{LINE} = 0;    $self->YYData->{LAST_TOKEN} = "NONE";	my $idl = $self->YYParse( yylex => \&_Lexer, yyerror => \&_Error );	return CleanData($idl);}sub parse_file($$){	my ($filename,$incdirs) = @_;	my $saved_delim = $/;	undef $/;	my $cpp = $ENV{CPP};	if (! defined $cpp) {		$cpp = "cpp";	}	my $includes = join('',map { " -I$_" } @$incdirs);	my $data = `$cpp -D__PIDL__$includes -xc $filename`;	$/ = $saved_delim;	return parse_string($data, $filename);}1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -