2003-12-08 05:55:28 +03:00
####################################################################
#
# This file was generated using Parse::Yapp version 1.05.
#
# Don't edit this file, use source file instead.
#
# ANY CHANGE MADE HERE WILL BE LOST !
#
####################################################################
2005-07-09 19:32:08 +04:00
package Parse::Pidl::IDL ;
2003-12-08 05:55:28 +03:00
use vars qw ( @ ISA ) ;
use strict ;
@ ISA = qw ( Parse::Yapp:: Driver ) ;
#Included Parse/Yapp/Driver.pm file----------------------------------------
{
#
# Module Parse::Yapp::Driver
#
# This module is part of the Parse::Yapp package available on your
# nearest CPAN
#
# Any use of this module in a standalone parser make the included
# text under the same copyright as the Parse::Yapp module itself.
#
# This notice should remain unchanged.
#
# (c) Copyright 1998-2001 Francois Desarmenien, all rights reserved.
# (see the pod text in Parse::Yapp module for use and distribution rights)
#
package Parse::Yapp::Driver ;
require 5.004 ;
use strict ;
use vars qw ( $ VERSION $ COMPATIBLE $ FILENAME ) ;
$ VERSION = '1.05' ;
$ COMPATIBLE = '0.07' ;
$ FILENAME = __FILE__ ;
use Carp ;
#Known parameters, all starting with YY (leading YY will be discarded)
my ( % params ) = ( YYLEX = > 'CODE' , 'YYERROR' = > 'CODE' , YYVERSION = > '' ,
YYRULES = > 'ARRAY' , YYSTATES = > 'ARRAY' , YYDEBUG = > '' ) ;
#Mandatory parameters
my ( @ params ) = ( 'LEX' , 'RULES' , 'STATES' ) ;
sub new {
my ( $ class ) = shift ;
my ( $ errst , $ nberr , $ token , $ value , $ check , $ dotpos ) ;
my ( $ self ) = { ERROR = > \ & _Error ,
ERRST = > \ $ errst ,
NBERR = > \ $ nberr ,
TOKEN = > \ $ token ,
VALUE = > \ $ value ,
DOTPOS = > \ $ dotpos ,
STACK = > [] ,
DEBUG = > 0 ,
CHECK = > \ $ check } ;
_CheckParams ( [] , \ % params , \ @ _ , $ self ) ;
exists ( $$ self { VERSION } )
and $$ self { VERSION } < $ COMPATIBLE
and croak "Yapp driver version $VERSION " .
"incompatible with version $$self{VERSION}:\n" .
"Please recompile parser module." ;
ref ( $ class )
and $ class = ref ( $ class ) ;
bless ( $ self , $ class ) ;
}
sub YYParse {
my ( $ self ) = shift ;
my ( $ retval ) ;
_CheckParams ( \ @ params , \ % params , \ @ _ , $ self ) ;
if ( $$ self { DEBUG } ) {
_DBLoad ( ) ;
$ retval = eval '$self->_DBParse()' ; #Do not create stab entry on compile
$@ and die $@ ;
}
else {
$ retval = $ self - > _Parse ( ) ;
}
$ retval
}
sub YYData {
my ( $ self ) = shift ;
exists ( $$ self { USER } )
or $$ self { USER } = { } ;
$$ self { USER } ;
}
sub YYErrok {
my ( $ self ) = shift ;
$ { $$ self { ERRST } } = 0 ;
undef ;
}
sub YYNberr {
my ( $ self ) = shift ;
$ { $$ self { NBERR } } ;
}
sub YYRecovering {
my ( $ self ) = shift ;
$ { $$ self { ERRST } } != 0 ;
}
sub YYAbort {
my ( $ self ) = shift ;
$ { $$ self { CHECK } } = 'ABORT' ;
undef ;
}
sub YYAccept {
my ( $ self ) = shift ;
$ { $$ self { CHECK } } = 'ACCEPT' ;
undef ;
}
sub YYError {
my ( $ self ) = shift ;
$ { $$ self { CHECK } } = 'ERROR' ;
undef ;
}
sub YYSemval {
my ( $ self ) = shift ;
my ( $ index ) = $ _ [ 0 ] - $ { $$ self { DOTPOS } } - 1 ;
$ index < 0
and - $ index <= @ { $$ self { STACK } }
and return $$ self { STACK } [ $ index ] [ 1 ] ;
undef ; #Invalid index
}
sub YYCurtok {
my ( $ self ) = shift ;
@ _
and $ { $$ self { TOKEN } } = $ _ [ 0 ] ;
$ { $$ self { TOKEN } } ;
}
sub YYCurval {
my ( $ self ) = shift ;
@ _
and $ { $$ self { VALUE } } = $ _ [ 0 ] ;
$ { $$ self { VALUE } } ;
}
sub YYExpect {
my ( $ self ) = shift ;
keys % { $ self - > { STATES } [ $ self - > { STACK } [ - 1 ] [ 0 ] ] { ACTIONS } }
}
sub YYLexer {
my ( $ self ) = shift ;
$$ self { LEX } ;
}
#################
# Private stuff #
#################
sub _CheckParams {
my ( $ mandatory , $ checklist , $ inarray , $ outhash ) = @ _ ;
my ( $ prm , $ value ) ;
my ( $ prmlst ) = { } ;
while ( ( $ prm , $ value ) = splice ( @$ inarray , 0 , 2 ) ) {
$ prm = uc ( $ prm ) ;
exists ( $$ checklist { $ prm } )
or croak ( "Unknow parameter '$prm'" ) ;
ref ( $ value ) eq $$ checklist { $ prm }
or croak ( "Invalid value for parameter '$prm'" ) ;
$ prm = unpack ( '@2A*' , $ prm ) ;
$$ outhash { $ prm } = $ value ;
}
for ( @$ mandatory ) {
exists ( $$ outhash { $ _ } )
or croak ( "Missing mandatory parameter '" . lc ( $ _ ) . "'" ) ;
}
}
sub _Error {
print "Parse error.\n" ;
}
sub _DBLoad {
{
no strict 'refs' ;
exists ( $ { __PACKAGE__ . '::' } { _DBParse } ) #Already loaded ?
and return ;
}
my ( $ fname ) = __FILE__ ;
my ( @ drv ) ;
open ( DRV , "<$fname" ) or die "Report this as a BUG: Cannot open $fname" ;
while ( <DRV> ) {
/^\s*sub\s+_Parse\s*{\s*$/ .. /^\s*}\s*#\s*_Parse\s*$/
and do {
s/^#DBG>// ;
push ( @ drv , $ _ ) ;
}
}
close ( DRV ) ;
$ drv [ 0 ] =~ s/_P/_DBP/ ;
eval join ( '' , @ drv ) ;
}
#Note that for loading debugging version of the driver,
#this file will be parsed from 'sub _Parse' up to '}#_Parse' inclusive.
#So, DO NOT remove comment at end of sub !!!
sub _Parse {
my ( $ self ) = shift ;
my ( $ rules , $ states , $ lex , $ error )
= @$ self { 'RULES' , 'STATES' , 'LEX' , 'ERROR' } ;
my ( $ errstatus , $ nberror , $ token , $ value , $ stack , $ check , $ dotpos )
= @$ self { 'ERRST' , 'NBERR' , 'TOKEN' , 'VALUE' , 'STACK' , 'CHECK' , 'DOTPOS' } ;
#DBG> my($debug)=$$self{DEBUG};
#DBG> my($dbgerror)=0;
#DBG> my($ShowCurToken) = sub {
#DBG> my($tok)='>';
#DBG> for (split('',$$token)) {
#DBG> $tok.= (ord($_) < 32 or ord($_) > 126)
#DBG> ? sprintf('<%02X>',ord($_))
#DBG> : $_;
#DBG> }
#DBG> $tok.='<';
#DBG> };
$$ errstatus = 0 ;
$$ nberror = 0 ;
( $$ token , $$ value ) = ( undef , undef ) ;
@$ stack = ( [ 0 , undef ] ) ;
$$ check = '' ;
while ( 1 ) {
my ( $ actions , $ act , $ stateno ) ;
$ stateno = $$ stack [ - 1 ] [ 0 ] ;
$ actions = $$ states [ $ stateno ] ;
#DBG> print STDERR ('-' x 40),"\n";
#DBG> $debug & 0x2
#DBG> and print STDERR "In state $stateno:\n";
#DBG> $debug & 0x08
#DBG> and print STDERR "Stack:[".
#DBG> join(',',map { $$_[0] } @$stack).
#DBG> "]\n";
if ( exists ( $$ actions { ACTIONS } ) ) {
defined ( $$ token )
or do {
( $$ token , $$ value ) = & $ lex ( $ self ) ;
#DBG> $debug & 0x01
#DBG> and print STDERR "Need token. Got ".&$ShowCurToken."\n";
} ;
$ act = exists ( $$ actions { ACTIONS } { $$ token } )
? $$ actions { ACTIONS } { $$ token }
: exists ( $$ actions { DEFAULT } )
? $$ actions { DEFAULT }
: undef ;
}
else {
$ act = $$ actions { DEFAULT } ;
#DBG> $debug & 0x01
#DBG> and print STDERR "Don't need token.\n";
}
defined ( $ act )
and do {
$ act > 0
and do { #shift
#DBG> $debug & 0x04
#DBG> and print STDERR "Shift and go to state $act.\n";
$$ errstatus
and do {
- - $$ errstatus ;
#DBG> $debug & 0x10
#DBG> and $dbgerror
#DBG> and $$errstatus == 0
#DBG> and do {
#DBG> print STDERR "**End of Error recovery.\n";
#DBG> $dbgerror=0;
#DBG> };
} ;
push ( @$ stack , [ $ act , $$ value ] ) ;
$$ token ne '' #Don't eat the eof
and $$ token = $$ value = undef ;
next ;
} ;
#reduce
my ( $ lhs , $ len , $ code , @ sempar , $ semval ) ;
( $ lhs , $ len , $ code ) = @ { $$ rules [ - $ act ] } ;
#DBG> $debug & 0x04
#DBG> and $act
#DBG> and print STDERR "Reduce using rule ".-$act." ($lhs,$len): ";
$ act
or $ self - > YYAccept ( ) ;
$$ dotpos = $ len ;
unpack ( 'A1' , $ lhs ) eq '@' #In line rule
and do {
$ lhs =~ /^\@[0-9]+\-([0-9]+)$/
or die "In line rule name '$lhs' ill formed: " .
"report it as a BUG.\n" ;
$$ dotpos = $ 1 ;
} ;
@ sempar = $$ dotpos
? map { $$ _ [ 1 ] } @$ stack [ - $$ dotpos .. - 1 ]
: ( ) ;
$ semval = $ code ? & $ code ( $ self , @ sempar )
: @ sempar ? $ sempar [ 0 ] : undef ;
splice ( @$ stack , - $ len , $ len ) ;
$$ check eq 'ACCEPT'
and do {
#DBG> $debug & 0x04
#DBG> and print STDERR "Accept.\n";
return ( $ semval ) ;
} ;
$$ check eq 'ABORT'
and do {
#DBG> $debug & 0x04
#DBG> and print STDERR "Abort.\n";
return ( undef ) ;
} ;
#DBG> $debug & 0x04
#DBG> and print STDERR "Back to state $$stack[-1][0], then ";
$$ check eq 'ERROR'
or do {
#DBG> $debug & 0x04
#DBG> and print STDERR
#DBG> "go to state $$states[$$stack[-1][0]]{GOTOS}{$lhs}.\n";
#DBG> $debug & 0x10
#DBG> and $dbgerror
#DBG> and $$errstatus == 0
#DBG> and do {
#DBG> print STDERR "**End of Error recovery.\n";
#DBG> $dbgerror=0;
#DBG> };
push ( @$ stack ,
[ $$ states [ $$ stack [ - 1 ] [ 0 ] ] { GOTOS } { $ lhs } , $ semval ] ) ;
$$ check = '' ;
next ;
} ;
#DBG> $debug & 0x04
#DBG> and print STDERR "Forced Error recovery.\n";
$$ check = '' ;
} ;
#Error
$$ errstatus
or do {
$$ errstatus = 1 ;
& $ error ( $ self ) ;
$$ errstatus # if 0, then YYErrok has been called
or next ; # so continue parsing
#DBG> $debug & 0x10
#DBG> and do {
#DBG> print STDERR "**Entering Error recovery.\n";
#DBG> ++$dbgerror;
#DBG> };
+ + $$ nberror ;
} ;
$$ errstatus == 3 #The next token is not valid: discard it
and do {
$$ token eq '' # End of input: no hope
and do {
#DBG> $debug & 0x10
#DBG> and print STDERR "**At eof: aborting.\n";
return ( undef ) ;
} ;
#DBG> $debug & 0x10
#DBG> and print STDERR "**Dicard invalid token ".&$ShowCurToken.".\n";
$$ token = $$ value = undef ;
} ;
$$ errstatus = 3 ;
while ( @$ stack
and ( not exists ( $$ states [ $$ stack [ - 1 ] [ 0 ] ] { ACTIONS } )
or not exists ( $$ states [ $$ stack [ - 1 ] [ 0 ] ] { ACTIONS } { error } )
or $$ states [ $$ stack [ - 1 ] [ 0 ] ] { ACTIONS } { error } <= 0 ) ) {
#DBG> $debug & 0x10
#DBG> and print STDERR "**Pop state $$stack[-1][0].\n";
pop ( @$ stack ) ;
}
@$ stack
or do {
#DBG> $debug & 0x10
#DBG> and print STDERR "**No state left on stack: aborting.\n";
return ( undef ) ;
} ;
#shift the error token
#DBG> $debug & 0x10
#DBG> and print STDERR "**Shift \$error token and go to state ".
#DBG> $$states[$$stack[-1][0]]{ACTIONS}{error}.
#DBG> ".\n";
push ( @$ stack , [ $$ states [ $$ stack [ - 1 ] [ 0 ] ] { ACTIONS } { error } , undef ] ) ;
}
#never reached
croak ( "Error in driver logic. Please, report it as a BUG" ) ;
} #_Parse
#DO NOT remove comment
1 ;
}
#End of include--------------------------------------------------
sub new {
my ( $ class ) = shift ;
ref ( $ class )
and $ class = ref ( $ class ) ;
my ( $ self ) = $ class - > SUPER:: new ( yyversion = > '1.05' ,
yystates = >
[
{ #State 0
2004-08-11 23:48:36 +04:00
DEFAULT = > - 1 ,
2003-12-08 05:55:28 +03:00
GOTOS = > {
2004-08-11 23:48:36 +04:00
'idl' = > 1
2003-12-08 05:55:28 +03:00
}
} ,
{ #State 1
ACTIONS = > {
2004-08-11 23:48:36 +04:00
'' = > 2
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 63 ,
2003-12-08 05:55:28 +03:00
GOTOS = > {
2004-08-11 23:48:36 +04:00
'interface' = > 3 ,
2004-11-02 00:10:46 +03:00
'coclass' = > 4 ,
'property_list' = > 5
2003-12-08 05:55:28 +03:00
}
} ,
2004-08-11 23:48:36 +04:00
{ #State 2
DEFAULT = > 0
} ,
2003-12-08 05:55:28 +03:00
{ #State 3
2004-08-11 23:48:36 +04:00
DEFAULT = > - 2
} ,
{ #State 4
2004-11-02 00:10:46 +03:00
DEFAULT = > - 3
2003-12-08 05:55:28 +03:00
} ,
2004-08-11 23:48:36 +04:00
{ #State 5
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
"coclass" = > 6 ,
"interface" = > 8 ,
"[" = > 7
2003-12-08 05:55:28 +03:00
}
} ,
{ #State 6
ACTIONS = > {
2004-11-02 00:10:46 +03:00
'IDENTIFIER' = > 9
2004-08-11 23:48:36 +04:00
} ,
GOTOS = > {
2004-11-02 00:10:46 +03:00
'identifier' = > 10
2003-12-08 05:55:28 +03:00
}
} ,
{ #State 7
2004-11-02 00:10:46 +03:00
ACTIONS = > {
'IDENTIFIER' = > 9
} ,
GOTOS = > {
'identifier' = > 11 ,
'properties' = > 13 ,
'property' = > 12
}
2003-12-08 05:55:28 +03:00
} ,
{ #State 8
2004-08-11 23:48:36 +04:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
'IDENTIFIER' = > 9
2004-08-11 23:48:36 +04:00
} ,
2004-11-02 00:10:46 +03:00
GOTOS = > {
'identifier' = > 14
}
2003-12-08 05:55:28 +03:00
} ,
{ #State 9
2005-07-20 03:34:02 +04:00
DEFAULT = > - 89
2003-12-08 05:55:28 +03:00
} ,
{ #State 10
2004-08-11 23:48:36 +04:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
"{" = > 15
2004-08-11 23:48:36 +04:00
}
2003-12-08 05:55:28 +03:00
} ,
{ #State 11
ACTIONS = > {
2004-11-02 00:10:46 +03:00
"(" = > 16
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 67
2003-12-08 05:55:28 +03:00
} ,
2004-08-11 23:48:36 +04:00
{ #State 12
2005-07-20 03:34:02 +04:00
DEFAULT = > - 65
2004-11-02 00:10:46 +03:00
} ,
{ #State 13
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
"," = > 17 ,
"]" = > 18
2003-12-08 05:55:28 +03:00
}
} ,
2004-11-02 00:10:46 +03:00
{ #State 14
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
":" = > 19
2003-12-08 05:55:28 +03:00
} ,
2004-11-02 00:10:46 +03:00
DEFAULT = > - 8 ,
2003-12-08 05:55:28 +03:00
GOTOS = > {
2004-11-02 00:10:46 +03:00
'base_interface' = > 20
2003-12-08 05:55:28 +03:00
}
} ,
{ #State 15
2004-11-02 00:10:46 +03:00
DEFAULT = > - 5 ,
2004-08-11 23:48:36 +04:00
GOTOS = > {
2005-02-21 15:13:42 +03:00
'interface_names' = > 21
2004-08-11 23:48:36 +04:00
}
2003-12-08 05:55:28 +03:00
} ,
{ #State 16
ACTIONS = > {
2004-11-02 00:10:46 +03:00
'CONSTANT' = > 28 ,
2004-11-29 14:08:15 +03:00
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
2004-11-02 00:10:46 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2004-11-02 00:10:46 +03:00
GOTOS = > {
'identifier' = > 23 ,
'listtext' = > 26 ,
'anytext' = > 25 ,
'text' = > 24 ,
'constant' = > 27
2003-12-08 05:55:28 +03:00
}
} ,
{ #State 17
2004-11-02 00:10:46 +03:00
ACTIONS = > {
'IDENTIFIER' = > 9
} ,
GOTOS = > {
'identifier' = > 11 ,
'property' = > 29
}
2003-12-08 05:55:28 +03:00
} ,
{ #State 18
2005-07-20 03:34:02 +04:00
DEFAULT = > - 64
2003-12-08 05:55:28 +03:00
} ,
{ #State 19
2004-11-02 00:10:46 +03:00
ACTIONS = > {
'IDENTIFIER' = > 9
} ,
GOTOS = > {
'identifier' = > 30
}
2003-12-08 05:55:28 +03:00
} ,
{ #State 20
ACTIONS = > {
2004-11-02 00:10:46 +03:00
"{" = > 31
}
2003-12-08 05:55:28 +03:00
} ,
{ #State 21
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"}" = > 32 ,
"interface" = > 33
2003-12-08 05:55:28 +03:00
}
} ,
{ #State 22
2005-07-20 03:34:02 +04:00
DEFAULT = > - 93
2003-12-08 05:55:28 +03:00
} ,
{ #State 23
2005-07-20 03:34:02 +04:00
DEFAULT = > - 74
2003-12-08 05:55:28 +03:00
} ,
{ #State 24
2005-07-20 03:34:02 +04:00
DEFAULT = > - 76
2003-12-08 05:55:28 +03:00
} ,
{ #State 25
2004-11-02 00:10:46 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"-" = > 34 ,
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"+" = > 37 ,
"~" = > 36 ,
"&" = > 39 ,
"{" = > 38 ,
"/" = > 40 ,
2005-02-21 15:13:42 +03:00
"(" = > 41 ,
2005-05-27 22:14:43 +04:00
"|" = > 42 ,
"*" = > 43 ,
"." = > 44 ,
">" = > 45
2004-11-02 00:10:46 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 69
2003-12-08 05:55:28 +03:00
} ,
{ #State 26
ACTIONS = > {
2005-05-27 22:14:43 +04:00
"," = > 46 ,
")" = > 47
2003-12-08 05:55:28 +03:00
}
} ,
{ #State 27
2005-07-20 03:34:02 +04:00
DEFAULT = > - 75
2003-12-08 05:55:28 +03:00
} ,
{ #State 28
2005-07-20 03:34:02 +04:00
DEFAULT = > - 92
2003-12-08 05:55:28 +03:00
} ,
{ #State 29
2005-07-20 03:34:02 +04:00
DEFAULT = > - 66
2003-12-08 05:55:28 +03:00
} ,
{ #State 30
2004-11-02 00:10:46 +03:00
DEFAULT = > - 9
2003-12-08 05:55:28 +03:00
} ,
{ #State 31
ACTIONS = > {
2005-05-27 22:14:43 +04:00
"typedef" = > 48 ,
2005-07-20 03:34:02 +04:00
"union" = > 49 ,
"enum" = > 62 ,
"bitmap" = > 63 ,
"declare" = > 55 ,
"const" = > 57 ,
"struct" = > 60
} ,
DEFAULT = > - 63 ,
GOTOS = > {
'typedecl' = > 61 ,
'function' = > 50 ,
'bitmap' = > 64 ,
'definitions' = > 51 ,
'definition' = > 54 ,
'property_list' = > 53 ,
'usertype' = > 52 ,
'declare' = > 66 ,
'const' = > 65 ,
'struct' = > 56 ,
'enum' = > 58 ,
'typedef' = > 59 ,
'union' = > 67
2003-12-08 05:55:28 +03:00
}
} ,
{ #State 32
ACTIONS = > {
2005-07-20 03:34:02 +04:00
";" = > 68
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 94 ,
2003-12-08 05:55:28 +03:00
GOTOS = > {
2005-07-20 03:34:02 +04:00
'optional_semicolon' = > 69
2003-12-08 05:55:28 +03:00
}
} ,
{ #State 33
ACTIONS = > {
2005-02-21 15:13:42 +03:00
'IDENTIFIER' = > 9
} ,
GOTOS = > {
2005-07-20 03:34:02 +04:00
'identifier' = > 70
2003-12-08 05:55:28 +03:00
}
} ,
2005-02-21 15:13:42 +03:00
{ #State 34
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2003-12-08 05:55:28 +03:00
GOTOS = > {
2004-11-02 00:10:46 +03:00
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 71 ,
2004-11-02 00:10:46 +03:00
'text' = > 24 ,
'constant' = > 27
2003-12-08 05:55:28 +03:00
}
} ,
2005-02-21 15:13:42 +03:00
{ #State 35
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2003-12-08 05:55:28 +03:00
GOTOS = > {
2004-11-02 00:10:46 +03:00
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 72 ,
2004-11-02 00:10:46 +03:00
'text' = > 24 ,
'constant' = > 27
2003-12-08 05:55:28 +03:00
}
} ,
2005-02-21 15:13:42 +03:00
{ #State 36
2004-11-02 00:10:46 +03:00
ACTIONS = > {
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2004-11-02 00:10:46 +03:00
GOTOS = > {
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 73 ,
2004-11-02 00:10:46 +03:00
'text' = > 24 ,
2005-01-21 09:46:07 +03:00
'constant' = > 27
2004-11-02 00:10:46 +03:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-02-21 15:13:42 +03:00
{ #State 37
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2003-12-08 05:55:28 +03:00
GOTOS = > {
2004-11-02 00:10:46 +03:00
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 74 ,
2004-11-02 00:10:46 +03:00
'text' = > 24 ,
2005-05-27 22:14:43 +04:00
'constant' = > 27
2003-12-08 05:55:28 +03:00
}
} ,
2005-02-21 15:13:42 +03:00
{ #State 38
2004-11-02 00:10:46 +03:00
ACTIONS = > {
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2004-11-02 00:10:46 +03:00
GOTOS = > {
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 75 ,
2004-11-02 00:10:46 +03:00
'text' = > 24 ,
2005-05-27 22:14:43 +04:00
'constant' = > 27 ,
2005-07-20 03:34:02 +04:00
'commalisttext' = > 76
2004-11-02 00:10:46 +03:00
}
2004-08-11 23:48:36 +04:00
} ,
2005-02-21 15:13:42 +03:00
{ #State 39
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
'CONSTANT' = > 28 ,
2004-11-29 14:08:15 +03:00
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2003-12-08 05:55:28 +03:00
GOTOS = > {
2004-11-02 00:10:46 +03:00
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 77 ,
2004-11-02 00:10:46 +03:00
'text' = > 24 ,
2004-11-29 14:08:15 +03:00
'constant' = > 27
2003-12-08 05:55:28 +03:00
}
} ,
2005-02-21 15:13:42 +03:00
{ #State 40
2004-08-11 23:48:36 +04:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
2004-08-11 23:48:36 +04:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2004-08-11 23:48:36 +04:00
GOTOS = > {
2004-11-02 00:10:46 +03:00
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 78 ,
2004-11-02 00:10:46 +03:00
'text' = > 24 ,
2005-01-21 09:46:07 +03:00
'constant' = > 27
2004-08-11 23:48:36 +04:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-02-21 15:13:42 +03:00
{ #State 41
2004-11-02 00:10:46 +03:00
ACTIONS = > {
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2004-11-02 00:10:46 +03:00
GOTOS = > {
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 75 ,
2004-11-02 00:10:46 +03:00
'text' = > 24 ,
2005-01-21 09:46:07 +03:00
'constant' = > 27 ,
2005-07-20 03:34:02 +04:00
'commalisttext' = > 79
2004-11-02 00:10:46 +03:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-02-21 15:13:42 +03:00
{ #State 42
2004-11-02 00:10:46 +03:00
ACTIONS = > {
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2004-11-02 00:10:46 +03:00
GOTOS = > {
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 80 ,
2004-11-02 00:10:46 +03:00
'text' = > 24 ,
'constant' = > 27
}
2004-08-11 23:48:36 +04:00
} ,
2005-02-21 15:13:42 +03:00
{ #State 43
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
'CONSTANT' = > 28 ,
2004-11-29 14:08:15 +03:00
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2003-12-08 05:55:28 +03:00
GOTOS = > {
2004-11-02 00:10:46 +03:00
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 81 ,
2004-11-02 00:10:46 +03:00
'text' = > 24 ,
'constant' = > 27
2003-12-08 05:55:28 +03:00
}
} ,
2005-02-21 15:13:42 +03:00
{ #State 44
2004-11-29 14:08:15 +03:00
ACTIONS = > {
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2004-11-29 14:08:15 +03:00
GOTOS = > {
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 82 ,
2004-11-29 14:08:15 +03:00
'text' = > 24 ,
'constant' = > 27
}
2003-12-08 05:55:28 +03:00
} ,
2005-02-21 15:13:42 +03:00
{ #State 45
2005-01-21 09:46:07 +03:00
ACTIONS = > {
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2005-01-21 09:46:07 +03:00
GOTOS = > {
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 83 ,
2005-01-21 09:46:07 +03:00
'text' = > 24 ,
'constant' = > 27
}
2004-11-29 14:08:15 +03:00
} ,
2005-02-21 15:13:42 +03:00
{ #State 46
2005-05-27 22:14:43 +04:00
ACTIONS = > {
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2005-05-27 22:14:43 +04:00
GOTOS = > {
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 84 ,
2005-05-27 22:14:43 +04:00
'text' = > 24 ,
'constant' = > 27
}
2005-01-21 09:46:07 +03:00
} ,
2005-02-21 15:13:42 +03:00
{ #State 47
2005-07-20 03:34:02 +04:00
DEFAULT = > - 68
2005-05-27 22:14:43 +04:00
} ,
{ #State 48
2005-07-20 03:34:02 +04:00
DEFAULT = > - 63 ,
2004-11-02 00:10:46 +03:00
GOTOS = > {
2005-07-20 03:34:02 +04:00
'property_list' = > 85
2004-11-02 00:10:46 +03:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-05-27 22:14:43 +04:00
{ #State 49
2004-11-02 00:10:46 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
'IDENTIFIER' = > 86
2004-11-02 00:10:46 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 91 ,
2004-11-02 00:10:46 +03:00
GOTOS = > {
2005-07-20 03:34:02 +04:00
'optional_identifier' = > 87
2004-11-02 00:10:46 +03:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 50
DEFAULT = > - 12
} ,
2005-05-27 22:14:43 +04:00
{ #State 51
2004-11-02 00:10:46 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"}" = > 88 ,
"typedef" = > 48 ,
"union" = > 49 ,
"enum" = > 62 ,
"bitmap" = > 63 ,
"declare" = > 55 ,
"const" = > 57 ,
"struct" = > 60
} ,
DEFAULT = > - 63 ,
GOTOS = > {
'typedecl' = > 61 ,
'function' = > 50 ,
'bitmap' = > 64 ,
'definition' = > 89 ,
'property_list' = > 53 ,
'usertype' = > 52 ,
'const' = > 65 ,
'struct' = > 56 ,
'declare' = > 66 ,
'enum' = > 58 ,
'typedef' = > 59 ,
'union' = > 67
2004-11-02 00:10:46 +03:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-05-27 22:14:43 +04:00
{ #State 52
2005-07-20 03:34:02 +04:00
ACTIONS = > {
";" = > 90
}
2004-08-11 23:48:36 +04:00
} ,
2005-05-27 22:14:43 +04:00
{ #State 53
2005-07-20 03:34:02 +04:00
ACTIONS = > {
'IDENTIFIER' = > 9 ,
"union" = > 49 ,
"enum" = > 62 ,
"bitmap" = > 63 ,
"[" = > 7 ,
'void' = > 91 ,
"struct" = > 60
} ,
2005-01-06 09:32:07 +03:00
GOTOS = > {
2005-07-20 03:34:02 +04:00
'identifier' = > 93 ,
'struct' = > 56 ,
'enum' = > 58 ,
'type' = > 94 ,
'union' = > 67 ,
'bitmap' = > 64 ,
'usertype' = > 92
2005-01-06 09:32:07 +03:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-05-27 22:14:43 +04:00
{ #State 54
2005-07-20 03:34:02 +04:00
DEFAULT = > - 10
2005-01-06 09:32:07 +03:00
} ,
2005-05-27 22:14:43 +04:00
{ #State 55
2005-07-20 03:34:02 +04:00
DEFAULT = > - 63 ,
GOTOS = > {
'property_list' = > 95
}
2005-01-06 09:32:07 +03:00
} ,
2005-05-27 22:14:43 +04:00
{ #State 56
2005-07-20 03:34:02 +04:00
DEFAULT = > - 26
} ,
{ #State 57
2004-10-14 14:30:08 +04:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
'IDENTIFIER' = > 9
} ,
GOTOS = > {
2005-07-20 03:34:02 +04:00
'identifier' = > 96
2004-10-14 14:30:08 +04:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-02-21 15:13:42 +03:00
{ #State 58
2005-07-20 03:34:02 +04:00
DEFAULT = > - 28
2003-12-08 05:55:28 +03:00
} ,
2005-02-21 15:13:42 +03:00
{ #State 59
2005-07-20 03:34:02 +04:00
DEFAULT = > - 14
2005-05-27 22:14:43 +04:00
} ,
{ #State 60
2005-02-21 15:13:42 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
'IDENTIFIER' = > 86
} ,
DEFAULT = > - 91 ,
GOTOS = > {
'optional_identifier' = > 97
2005-02-21 15:13:42 +03:00
}
} ,
2005-05-27 22:14:43 +04:00
{ #State 61
2005-07-20 03:34:02 +04:00
DEFAULT = > - 16
} ,
{ #State 62
ACTIONS = > {
'IDENTIFIER' = > 86
} ,
DEFAULT = > - 91 ,
GOTOS = > {
'optional_identifier' = > 98
}
} ,
{ #State 63
ACTIONS = > {
'IDENTIFIER' = > 86
} ,
DEFAULT = > - 91 ,
GOTOS = > {
'optional_identifier' = > 99
}
} ,
{ #State 64
DEFAULT = > - 29
} ,
{ #State 65
DEFAULT = > - 13
} ,
{ #State 66
DEFAULT = > - 15
} ,
{ #State 67
DEFAULT = > - 27
} ,
{ #State 68
DEFAULT = > - 95
} ,
{ #State 69
DEFAULT = > - 4
} ,
{ #State 70
ACTIONS = > {
";" = > 100
}
} ,
{ #State 71
2004-11-29 14:08:15 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"~" = > 36 ,
"{" = > 38
2004-11-29 14:08:15 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 77
2004-08-11 23:48:36 +04:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 72
2004-11-29 14:08:15 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"-" = > 34 ,
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"+" = > 37 ,
"~" = > 36 ,
"*" = > 43 ,
"{" = > 38 ,
"&" = > 39 ,
"/" = > 40 ,
2005-02-21 15:13:42 +03:00
"(" = > 41 ,
2005-07-20 03:34:02 +04:00
"|" = > 42 ,
2005-05-27 22:14:43 +04:00
"." = > 44 ,
">" = > 45
2004-11-29 14:08:15 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 81
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 73
2004-11-29 14:08:15 +03:00
ACTIONS = > {
2005-05-27 22:14:43 +04:00
"-" = > 34 ,
2005-02-21 15:13:42 +03:00
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"+" = > 37 ,
"~" = > 36 ,
"*" = > 43 ,
"{" = > 38 ,
"&" = > 39 ,
"/" = > 40 ,
"(" = > 41 ,
2005-07-20 03:34:02 +04:00
"|" = > 42 ,
2005-05-27 22:14:43 +04:00
"." = > 44 ,
">" = > 45
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 86
2005-05-27 22:14:43 +04:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 74
2005-05-27 22:14:43 +04:00
ACTIONS = > {
"<" = > 35 ,
"~" = > 36 ,
"{" = > 38
2005-01-21 09:46:07 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 85
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 75
2004-11-02 00:10:46 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"-" = > 34 ,
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"+" = > 37 ,
"~" = > 36 ,
"*" = > 43 ,
"{" = > 38 ,
"&" = > 39 ,
"/" = > 40 ,
2005-02-21 15:13:42 +03:00
"(" = > 41 ,
2005-07-20 03:34:02 +04:00
"|" = > 42 ,
2005-05-27 22:14:43 +04:00
"." = > 44 ,
">" = > 45
2004-11-02 00:10:46 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 71
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 76
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"}" = > 101 ,
"," = > 102
2005-01-21 09:46:07 +03:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 77
2004-11-29 14:08:15 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"~" = > 36 ,
"{" = > 38
2004-11-29 14:08:15 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 83
2004-11-02 00:10:46 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 78
2004-11-29 14:08:15 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"~" = > 36 ,
"{" = > 38
2005-01-21 09:46:07 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 84
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 79
2005-05-27 22:14:43 +04:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"," = > 102 ,
")" = > 103
2005-05-27 22:14:43 +04:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 80
2004-11-29 14:08:15 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"~" = > 36 ,
"{" = > 38
2004-11-29 14:08:15 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 82
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 81
2005-01-21 09:46:07 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"~" = > 36 ,
"{" = > 38
2005-01-21 09:46:07 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 79
2005-01-21 09:46:07 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 82
2005-01-21 09:46:07 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"~" = > 36 ,
"{" = > 38
2004-11-02 00:10:46 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 78
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 83
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"~" = > 36 ,
"{" = > 38
2004-11-29 14:08:15 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 80
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 84
2004-11-29 14:08:15 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"-" = > 34 ,
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"+" = > 37 ,
"~" = > 36 ,
"&" = > 39 ,
"{" = > 38 ,
"/" = > 40 ,
"|" = > 42 ,
2005-07-20 03:34:02 +04:00
"(" = > 41 ,
2005-05-27 22:14:43 +04:00
"*" = > 43 ,
"." = > 44 ,
">" = > 45
2004-11-29 14:08:15 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 70
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 85
2004-10-14 14:30:08 +04:00
ACTIONS = > {
2005-01-05 02:25:25 +03:00
'IDENTIFIER' = > 9 ,
2005-07-20 03:34:02 +04:00
"union" = > 49 ,
"enum" = > 62 ,
"bitmap" = > 63 ,
2005-01-05 02:25:25 +03:00
"[" = > 7 ,
2005-07-20 03:34:02 +04:00
'void' = > 91 ,
"struct" = > 60
2005-01-05 02:25:25 +03:00
} ,
GOTOS = > {
2005-07-20 03:34:02 +04:00
'identifier' = > 93 ,
'struct' = > 56 ,
'enum' = > 58 ,
'type' = > 104 ,
'union' = > 67 ,
'bitmap' = > 64 ,
'usertype' = > 92
2004-11-29 14:08:15 +03:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 86
DEFAULT = > - 90
2005-01-05 02:25:25 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 87
2005-01-05 02:25:25 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"{" = > 105
2005-01-05 02:25:25 +03:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 88
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
";" = > 68
} ,
DEFAULT = > - 94 ,
GOTOS = > {
'optional_semicolon' = > 106
2003-12-08 05:55:28 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 89
DEFAULT = > - 11
2005-01-05 03:14:29 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 90
2005-01-06 09:32:07 +03:00
DEFAULT = > - 30
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 91
DEFAULT = > - 33
2005-01-05 18:28:10 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 92
DEFAULT = > - 31
2005-01-06 09:32:07 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 93
DEFAULT = > - 32
2005-01-06 09:32:07 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 94
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
'IDENTIFIER' = > 9
} ,
GOTOS = > {
2005-07-20 03:34:02 +04:00
'identifier' = > 107
2004-08-11 23:48:36 +04:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 95
2005-01-06 09:32:07 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"enum" = > 111 ,
"bitmap" = > 112 ,
"[" = > 7
2005-01-06 09:32:07 +03:00
} ,
GOTOS = > {
2005-07-20 03:34:02 +04:00
'decl_enum' = > 108 ,
'decl_bitmap' = > 109 ,
'decl_type' = > 110
2005-01-06 09:32:07 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 96
2004-10-14 14:30:08 +04:00
ACTIONS = > {
2004-11-29 14:08:15 +03:00
'IDENTIFIER' = > 9
2004-10-14 14:30:08 +04:00
} ,
2004-11-02 00:10:46 +03:00
GOTOS = > {
2005-07-20 03:34:02 +04:00
'identifier' = > 113
2004-11-02 00:10:46 +03:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 97
ACTIONS = > {
"{" = > 114
}
} ,
{ #State 98
ACTIONS = > {
"{" = > 115
}
} ,
{ #State 99
ACTIONS = > {
"{" = > 116
}
} ,
{ #State 100
2005-02-21 15:13:42 +03:00
DEFAULT = > - 6
} ,
2005-07-20 03:34:02 +04:00
{ #State 101
2004-11-02 00:10:46 +03:00
ACTIONS = > {
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2004-11-02 00:10:46 +03:00
GOTOS = > {
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 117 ,
2004-11-02 00:10:46 +03:00
'text' = > 24 ,
'constant' = > 27
}
2004-10-14 14:30:08 +04:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 102
2004-11-29 14:08:15 +03:00
ACTIONS = > {
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2004-11-29 14:08:15 +03:00
GOTOS = > {
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 118 ,
2004-11-29 14:08:15 +03:00
'text' = > 24 ,
'constant' = > 27
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 103
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2005-01-05 03:14:29 +03:00
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
2004-11-02 00:10:46 +03:00
'IDENTIFIER' = > 9
2004-08-11 23:48:36 +04:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2004-11-02 00:10:46 +03:00
GOTOS = > {
2005-01-05 03:14:29 +03:00
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 119 ,
2005-01-05 03:14:29 +03:00
'text' = > 24 ,
'constant' = > 27
2004-11-02 00:10:46 +03:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 104
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2005-01-05 02:25:25 +03:00
'IDENTIFIER' = > 9
} ,
GOTOS = > {
2005-07-20 03:34:02 +04:00
'identifier' = > 120
2003-12-08 05:55:28 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 105
DEFAULT = > - 48 ,
2005-01-05 03:14:29 +03:00
GOTOS = > {
2005-07-20 03:34:02 +04:00
'union_elements' = > 121
2003-12-08 05:55:28 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 106
DEFAULT = > - 7
} ,
{ #State 107
2005-01-05 02:25:25 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"(" = > 122
2005-01-05 02:25:25 +03:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 108
DEFAULT = > - 21
} ,
{ #State 109
DEFAULT = > - 22
} ,
{ #State 110
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2005-01-05 18:28:10 +03:00
'IDENTIFIER' = > 9
} ,
GOTOS = > {
2005-07-20 03:34:02 +04:00
'identifier' = > 123
2003-12-08 05:55:28 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 111
DEFAULT = > - 23
} ,
{ #State 112
DEFAULT = > - 24
} ,
{ #State 113
2005-01-05 18:28:10 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"[" = > 124 ,
"=" = > 126
} ,
GOTOS = > {
'array_len' = > 125
2005-01-05 18:28:10 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 114
DEFAULT = > - 54 ,
2005-01-05 03:14:29 +03:00
GOTOS = > {
2005-07-20 03:34:02 +04:00
'element_list1' = > 127
2005-01-05 03:14:29 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 115
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2005-01-06 09:32:07 +03:00
'IDENTIFIER' = > 9
2004-11-29 14:08:15 +03:00
} ,
GOTOS = > {
2005-07-20 03:34:02 +04:00
'identifier' = > 128 ,
'enum_element' = > 129 ,
'enum_elements' = > 130
2003-12-08 05:55:28 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 116
2005-01-06 09:32:07 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
'IDENTIFIER' = > 9
2005-01-06 09:32:07 +03:00
} ,
GOTOS = > {
2005-07-20 03:34:02 +04:00
'identifier' = > 133 ,
'bitmap_elements' = > 132 ,
'bitmap_element' = > 131
2005-01-06 09:32:07 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 117
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"-" = > 34 ,
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"+" = > 37 ,
"~" = > 36 ,
"*" = > 43 ,
"{" = > 38 ,
"&" = > 39 ,
"/" = > 40 ,
2005-02-21 15:13:42 +03:00
"(" = > 41 ,
2005-07-20 03:34:02 +04:00
"|" = > 42 ,
2005-05-27 22:14:43 +04:00
"." = > 44 ,
">" = > 45
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 88
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 118
2004-11-29 14:08:15 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"-" = > 34 ,
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"+" = > 37 ,
"~" = > 36 ,
"*" = > 43 ,
"{" = > 38 ,
"&" = > 39 ,
"/" = > 40 ,
2005-02-21 15:13:42 +03:00
"(" = > 41 ,
2005-07-20 03:34:02 +04:00
"|" = > 42 ,
2005-05-27 22:14:43 +04:00
"." = > 44 ,
">" = > 45
2004-11-29 14:08:15 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 72
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 119
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"~" = > 36 ,
"{" = > 38
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 87
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 120
2004-11-29 14:08:15 +03:00
ACTIONS = > {
2005-05-27 22:14:43 +04:00
"[" = > 124
2004-11-29 14:08:15 +03:00
} ,
2005-02-11 05:05:47 +03:00
DEFAULT = > - 60 ,
2005-01-05 03:14:29 +03:00
GOTOS = > {
2005-07-20 03:34:02 +04:00
'array_len' = > 134
2005-01-05 03:14:29 +03:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 121
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"}" = > 135
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 63 ,
2003-12-08 05:55:28 +03:00
GOTOS = > {
2005-07-20 03:34:02 +04:00
'optional_base_element' = > 137 ,
2005-05-27 22:14:43 +04:00
'property_list' = > 136
2003-12-08 05:55:28 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 122
2004-11-02 00:10:46 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"," = > - 56 ,
"void" = > 141 ,
")" = > - 56
2005-01-05 03:14:29 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 63 ,
2005-01-05 03:14:29 +03:00
GOTOS = > {
2005-07-20 03:34:02 +04:00
'base_element' = > 138 ,
'element_list2' = > 140 ,
'property_list' = > 139
2004-11-02 00:10:46 +03:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 123
2005-01-06 09:32:07 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
";" = > 142
2005-01-06 09:32:07 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 124
2004-11-29 14:08:15 +03:00
ACTIONS = > {
2005-01-05 02:25:25 +03:00
'CONSTANT' = > 28 ,
2005-05-27 22:14:43 +04:00
'TEXT' = > 22 ,
2005-07-20 03:34:02 +04:00
"]" = > 143 ,
2005-05-27 22:14:43 +04:00
'IDENTIFIER' = > 9
2005-01-05 02:25:25 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2005-01-05 02:25:25 +03:00
GOTOS = > {
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 144 ,
2005-01-05 02:25:25 +03:00
'text' = > 24 ,
'constant' = > 27
2004-11-29 14:08:15 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 125
ACTIONS = > {
"=" = > 145
}
} ,
{ #State 126
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
'CONSTANT' = > 28 ,
2005-01-05 02:25:25 +03:00
'TEXT' = > 22 ,
2005-05-27 22:14:43 +04:00
'IDENTIFIER' = > 9
2004-11-02 00:10:46 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2004-11-02 00:10:46 +03:00
GOTOS = > {
'identifier' = > 23 ,
2005-07-20 03:34:02 +04:00
'anytext' = > 146 ,
2004-11-02 00:10:46 +03:00
'text' = > 24 ,
'constant' = > 27
2003-12-08 05:55:28 +03:00
}
} ,
2005-05-27 22:14:43 +04:00
{ #State 127
2005-01-05 03:14:29 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"}" = > 147
2005-02-11 05:05:47 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 63 ,
2005-02-11 05:05:47 +03:00
GOTOS = > {
2005-05-27 22:14:43 +04:00
'base_element' = > 148 ,
2005-07-20 03:34:02 +04:00
'property_list' = > 139
2005-01-05 03:14:29 +03:00
}
} ,
2005-05-27 22:14:43 +04:00
{ #State 128
2004-11-02 00:10:46 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"=" = > 149
2004-11-02 00:10:46 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 37
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 129
DEFAULT = > - 35
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 130
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"}" = > 150 ,
"," = > 151
2003-12-08 05:55:28 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 131
DEFAULT = > - 40
} ,
2005-05-27 22:14:43 +04:00
{ #State 132
2005-07-20 03:34:02 +04:00
ACTIONS = > {
"}" = > 152 ,
"," = > 153
}
2004-11-02 00:10:46 +03:00
} ,
2005-05-27 22:14:43 +04:00
{ #State 133
2005-01-05 18:28:10 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"=" = > 154
2005-01-05 18:28:10 +03:00
}
} ,
2005-05-27 22:14:43 +04:00
{ #State 134
2005-01-05 18:28:10 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
";" = > 155
2005-01-05 18:28:10 +03:00
}
} ,
2005-05-27 22:14:43 +04:00
{ #State 135
2005-07-20 03:34:02 +04:00
DEFAULT = > - 50
2005-01-05 18:28:10 +03:00
} ,
2005-05-27 22:14:43 +04:00
{ #State 136
2004-11-02 00:10:46 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"[" = > 7
2004-11-02 00:10:46 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 63 ,
2004-11-02 00:10:46 +03:00
GOTOS = > {
2005-07-20 03:34:02 +04:00
'base_or_empty' = > 156 ,
'base_element' = > 157 ,
'empty_element' = > 158 ,
'property_list' = > 159
2004-11-02 00:10:46 +03:00
}
} ,
2005-05-27 22:14:43 +04:00
{ #State 137
2005-07-20 03:34:02 +04:00
DEFAULT = > - 49
2004-11-02 00:10:46 +03:00
} ,
2005-05-27 22:14:43 +04:00
{ #State 138
2005-07-20 03:34:02 +04:00
DEFAULT = > - 58
2004-11-02 00:10:46 +03:00
} ,
2005-05-27 22:14:43 +04:00
{ #State 139
2005-07-20 03:34:02 +04:00
ACTIONS = > {
'IDENTIFIER' = > 9 ,
"union" = > 49 ,
"enum" = > 62 ,
"bitmap" = > 63 ,
"[" = > 7 ,
'void' = > 91 ,
"struct" = > 60
} ,
GOTOS = > {
'identifier' = > 93 ,
'struct' = > 56 ,
'enum' = > 58 ,
'type' = > 160 ,
'union' = > 67 ,
'bitmap' = > 64 ,
'usertype' = > 92
}
2005-01-05 03:14:29 +03:00
} ,
2005-05-27 22:14:43 +04:00
{ #State 140
2005-01-05 03:14:29 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"," = > 161 ,
")" = > 162
2005-01-05 03:14:29 +03:00
}
} ,
2005-05-27 22:14:43 +04:00
{ #State 141
2005-07-20 03:34:02 +04:00
DEFAULT = > - 57
2005-01-06 09:32:07 +03:00
} ,
2005-05-27 22:14:43 +04:00
{ #State 142
2005-07-20 03:34:02 +04:00
DEFAULT = > - 20
} ,
{ #State 143
2004-11-29 14:08:15 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
"[" = > 124
2004-11-29 14:08:15 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 60 ,
2004-11-29 14:08:15 +03:00
GOTOS = > {
2005-07-20 03:34:02 +04:00
'array_len' = > 163
2004-11-29 14:08:15 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 144
2004-11-02 00:10:46 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"-" = > 34 ,
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"+" = > 37 ,
"~" = > 36 ,
"&" = > 39 ,
"{" = > 38 ,
"/" = > 40 ,
"|" = > 42 ,
2005-07-20 03:34:02 +04:00
"(" = > 41 ,
2005-05-27 22:14:43 +04:00
"*" = > 43 ,
"." = > 44 ,
2005-07-20 03:34:02 +04:00
"]" = > 164 ,
2005-05-27 22:14:43 +04:00
">" = > 45
2004-11-02 00:10:46 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 145
ACTIONS = > {
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
} ,
DEFAULT = > - 73 ,
GOTOS = > {
'identifier' = > 23 ,
'anytext' = > 165 ,
'text' = > 24 ,
'constant' = > 27
}
} ,
{ #State 146
2005-01-05 02:25:25 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"-" = > 34 ,
"<" = > 35 ,
2005-07-20 03:34:02 +04:00
";" = > 166 ,
2005-05-27 22:14:43 +04:00
"+" = > 37 ,
"~" = > 36 ,
"&" = > 39 ,
"{" = > 38 ,
"/" = > 40 ,
"|" = > 42 ,
2005-07-20 03:34:02 +04:00
"(" = > 41 ,
2005-05-27 22:14:43 +04:00
"*" = > 43 ,
"." = > 44 ,
">" = > 45
2005-01-05 02:25:25 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 147
DEFAULT = > - 43
} ,
{ #State 148
2005-05-27 18:01:22 +04:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
";" = > 167
}
} ,
{ #State 149
ACTIONS = > {
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
2005-05-27 18:01:22 +04:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 73 ,
2005-05-27 18:01:22 +04:00
GOTOS = > {
2005-07-20 03:34:02 +04:00
'identifier' = > 23 ,
'anytext' = > 168 ,
'text' = > 24 ,
'constant' = > 27
2005-05-27 18:01:22 +04:00
}
2005-01-05 02:25:25 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 150
DEFAULT = > - 34
2005-01-05 02:25:25 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 151
ACTIONS = > {
'IDENTIFIER' = > 9
} ,
GOTOS = > {
'identifier' = > 128 ,
'enum_element' = > 169
}
2005-02-11 05:05:47 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 152
DEFAULT = > - 39
} ,
{ #State 153
2005-01-05 03:14:29 +03:00
ACTIONS = > {
2005-07-20 03:34:02 +04:00
'IDENTIFIER' = > 9
} ,
GOTOS = > {
'identifier' = > 133 ,
'bitmap_element' = > 170
2005-01-05 03:14:29 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 154
ACTIONS = > {
'CONSTANT' = > 28 ,
'TEXT' = > 22 ,
'IDENTIFIER' = > 9
} ,
DEFAULT = > - 73 ,
GOTOS = > {
'identifier' = > 23 ,
'anytext' = > 171 ,
'text' = > 24 ,
'constant' = > 27
}
2005-02-11 05:05:47 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 155
DEFAULT = > - 25
} ,
{ #State 156
DEFAULT = > - 47
} ,
{ #State 157
ACTIONS = > {
";" = > 172
}
} ,
{ #State 158
DEFAULT = > - 46
} ,
{ #State 159
2005-01-05 03:14:29 +03:00
ACTIONS = > {
2005-02-11 05:05:47 +03:00
'IDENTIFIER' = > 9 ,
2005-07-20 03:34:02 +04:00
"union" = > 49 ,
";" = > 173 ,
"enum" = > 62 ,
"bitmap" = > 63 ,
'void' = > 91 ,
2005-02-11 05:05:47 +03:00
"[" = > 7 ,
2005-07-20 03:34:02 +04:00
"struct" = > 60
2005-01-05 03:14:29 +03:00
} ,
GOTOS = > {
2005-07-20 03:34:02 +04:00
'identifier' = > 93 ,
'struct' = > 56 ,
'enum' = > 58 ,
'type' = > 160 ,
'union' = > 67 ,
'bitmap' = > 64 ,
'usertype' = > 92
2005-01-05 03:14:29 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 160
DEFAULT = > - 52 ,
GOTOS = > {
'pointers' = > 174
}
} ,
{ #State 161
DEFAULT = > - 63 ,
GOTOS = > {
'base_element' = > 175 ,
'property_list' = > 139
}
} ,
{ #State 162
ACTIONS = > {
";" = > 176
}
} ,
{ #State 163
DEFAULT = > - 61
} ,
{ #State 164
ACTIONS = > {
"[" = > 124
} ,
DEFAULT = > - 60 ,
GOTOS = > {
'array_len' = > 177
}
} ,
{ #State 165
2004-11-02 00:10:46 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"-" = > 34 ,
"<" = > 35 ,
2005-07-20 03:34:02 +04:00
";" = > 178 ,
2005-05-27 22:14:43 +04:00
"+" = > 37 ,
"~" = > 36 ,
"&" = > 39 ,
"{" = > 38 ,
"/" = > 40 ,
"|" = > 42 ,
2005-07-20 03:34:02 +04:00
"(" = > 41 ,
2005-05-27 22:14:43 +04:00
"*" = > 43 ,
"." = > 44 ,
">" = > 45
2005-07-20 03:34:02 +04:00
}
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 166
DEFAULT = > - 17
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 167
DEFAULT = > - 55
2005-01-05 18:28:10 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 168
2005-01-05 18:28:10 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"-" = > 34 ,
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"+" = > 37 ,
"~" = > 36 ,
"&" = > 39 ,
"{" = > 38 ,
"/" = > 40 ,
"|" = > 42 ,
2005-07-20 03:34:02 +04:00
"(" = > 41 ,
2005-05-27 22:14:43 +04:00
"*" = > 43 ,
"." = > 44 ,
">" = > 45
2005-01-05 18:28:10 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 38
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 169
DEFAULT = > - 36
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 170
DEFAULT = > - 41
2005-01-05 03:14:29 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 171
2004-11-29 14:08:15 +03:00
ACTIONS = > {
2005-02-21 15:13:42 +03:00
"-" = > 34 ,
"<" = > 35 ,
2005-05-27 22:14:43 +04:00
"+" = > 37 ,
"~" = > 36 ,
"&" = > 39 ,
"{" = > 38 ,
"/" = > 40 ,
"|" = > 42 ,
2005-07-20 03:34:02 +04:00
"(" = > 41 ,
2005-05-27 22:14:43 +04:00
"*" = > 43 ,
"." = > 44 ,
">" = > 45
2005-05-27 18:01:22 +04:00
} ,
DEFAULT = > - 42
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 172
DEFAULT = > - 45
2005-05-27 18:01:22 +04:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 173
DEFAULT = > - 44
} ,
{ #State 174
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2004-11-02 00:10:46 +03:00
'IDENTIFIER' = > 9 ,
2005-07-20 03:34:02 +04:00
"*" = > 180
2003-12-08 05:55:28 +03:00
} ,
GOTOS = > {
2005-07-20 03:34:02 +04:00
'identifier' = > 179
2003-12-08 05:55:28 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 175
DEFAULT = > - 59
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 176
DEFAULT = > - 19
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 177
DEFAULT = > - 62
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 178
DEFAULT = > - 18
2005-05-27 18:01:22 +04:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 179
2003-12-08 05:55:28 +03:00
ACTIONS = > {
2005-05-27 22:14:43 +04:00
"[" = > 124
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
DEFAULT = > - 60 ,
2003-12-08 05:55:28 +03:00
GOTOS = > {
2005-07-20 03:34:02 +04:00
'array_len' = > 181
2003-12-08 05:55:28 +03:00
}
} ,
2005-07-20 03:34:02 +04:00
{ #State 180
DEFAULT = > - 53
2003-12-08 05:55:28 +03:00
} ,
2005-07-20 03:34:02 +04:00
{ #State 181
DEFAULT = > - 51
2003-12-08 05:55:28 +03:00
}
] ,
yyrules = >
[
[ #Rule 0
'$start' , 2 , undef
] ,
[ #Rule 1
2004-08-11 23:48:36 +04:00
'idl' , 0 , undef
2003-12-08 05:55:28 +03:00
] ,
[ #Rule 2
'idl' , 2 ,
sub
2005-08-22 04:06:35 +04:00
#line 19 "idl.yp"
2004-11-02 00:10:46 +03:00
{ push ( @ { $ _ [ 1 ] } , $ _ [ 2 ] ) ; $ _ [ 1 ] }
2003-12-08 05:55:28 +03:00
] ,
[ #Rule 3
2004-11-02 00:10:46 +03:00
'idl' , 2 ,
sub
2005-08-22 04:06:35 +04:00
#line 20 "idl.yp"
2004-11-02 00:10:46 +03:00
{ push ( @ { $ _ [ 1 ] } , $ _ [ 2 ] ) ; $ _ [ 1 ] }
] ,
[ #Rule 4
'coclass' , 7 ,
sub
2005-08-22 04:06:35 +04:00
#line 24 "idl.yp"
2004-11-02 00:10:46 +03:00
{ $ _ [ 3 ] = > {
"TYPE" = > "COCLASS" ,
2005-01-05 03:31:28 +03:00
"PROPERTIES" = > $ _ [ 1 ] ,
"NAME" = > $ _ [ 3 ] ,
"DATA" = > $ _ [ 5 ] ,
r6973: Merge new version of pidl into the main SAMBA_4_0 branch.
The main difference in this new version is the extra data structure generated
between the IDL data structure and the NDR parser:
IDL -> NDR -> { ndr_parser, ndr_header, eparser, etc }
This makes the ndr_parser.pm internals much more sane.
Other changes include:
- Remove unnecessary calls with NDR_BUFFERS (for example, GUID doesn't have any buffers, just scalars) as well as some (unnecessary) nested setting of flags.
- Parse array loops in the C code rather then calling ndr_pull_array(). This allows us to have, for example, arrays of pointers or arrays of pointers to arrays, etc..
- Use if() {} rather then if () goto foo; everywhere
- NDR_IN no longer implies LIBNDR_FLAG_REF_ALLOC
- By default, top level pointers are now "ref" (as is the default in
most other IDL compilers). This can be overridden using the
default_pointer_top() property.
- initial work on new ethereal parser generators by Alan DeKok and me
- pidl now writes errors in the standard format used by compilers, which
is parsable by most editors
- ability to warn about the fact that pidl extension(s) have been used,
useful for making sure IDL files work with other IDL compilers.
oh, and there's probably some other things I can't think of right now..
(This used to be commit 13cf227615f6b9e0e5fa62e59197024410254f01)
2005-05-25 17:50:27 +04:00
"FILE" = > $ _ [ 0 ] - > YYData - > { INPUT_FILENAME } ,
"LINE" = > $ _ [ 0 ] - > YYData - > { LINE } ,
2004-11-02 00:10:46 +03:00
} }
] ,
[ #Rule 5
2005-02-21 15:13:42 +03:00
'interface_names' , 0 , undef
2004-11-02 00:10:46 +03:00
] ,
[ #Rule 6
2005-02-21 15:13:42 +03:00
'interface_names' , 4 ,
2004-11-02 00:10:46 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 36 "idl.yp"
2004-11-02 00:10:46 +03:00
{ push ( @ { $ _ [ 1 ] } , $ _ [ 2 ] ) ; $ _ [ 1 ] }
] ,
[ #Rule 7
2004-11-01 15:26:59 +03:00
'interface' , 8 ,
2003-12-08 05:55:28 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 40 "idl.yp"
2004-08-11 23:48:36 +04:00
{ $ _ [ 3 ] = > {
"TYPE" = > "INTERFACE" ,
2005-01-05 03:31:28 +03:00
"PROPERTIES" = > $ _ [ 1 ] ,
"NAME" = > $ _ [ 3 ] ,
"BASE" = > $ _ [ 4 ] ,
"DATA" = > $ _ [ 6 ] ,
r6973: Merge new version of pidl into the main SAMBA_4_0 branch.
The main difference in this new version is the extra data structure generated
between the IDL data structure and the NDR parser:
IDL -> NDR -> { ndr_parser, ndr_header, eparser, etc }
This makes the ndr_parser.pm internals much more sane.
Other changes include:
- Remove unnecessary calls with NDR_BUFFERS (for example, GUID doesn't have any buffers, just scalars) as well as some (unnecessary) nested setting of flags.
- Parse array loops in the C code rather then calling ndr_pull_array(). This allows us to have, for example, arrays of pointers or arrays of pointers to arrays, etc..
- Use if() {} rather then if () goto foo; everywhere
- NDR_IN no longer implies LIBNDR_FLAG_REF_ALLOC
- By default, top level pointers are now "ref" (as is the default in
most other IDL compilers). This can be overridden using the
default_pointer_top() property.
- initial work on new ethereal parser generators by Alan DeKok and me
- pidl now writes errors in the standard format used by compilers, which
is parsable by most editors
- ability to warn about the fact that pidl extension(s) have been used,
useful for making sure IDL files work with other IDL compilers.
oh, and there's probably some other things I can't think of right now..
(This used to be commit 13cf227615f6b9e0e5fa62e59197024410254f01)
2005-05-25 17:50:27 +04:00
"FILE" = > $ _ [ 0 ] - > YYData - > { INPUT_FILENAME } ,
"LINE" = > $ _ [ 0 ] - > YYData - > { LINE } ,
2003-12-08 05:55:28 +03:00
} }
] ,
2004-11-02 00:10:46 +03:00
[ #Rule 8
2004-08-11 23:48:36 +04:00
'base_interface' , 0 , undef
2003-12-08 05:55:28 +03:00
] ,
2004-11-02 00:10:46 +03:00
[ #Rule 9
2004-08-11 23:48:36 +04:00
'base_interface' , 2 ,
2003-12-08 05:55:28 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 53 "idl.yp"
2004-08-11 23:48:36 +04:00
{ $ _ [ 2 ] }
2003-12-08 05:55:28 +03:00
] ,
2004-11-02 00:10:46 +03:00
[ #Rule 10
2003-12-08 05:55:28 +03:00
'definitions' , 1 ,
sub
2005-08-22 04:06:35 +04:00
#line 57 "idl.yp"
2003-12-08 05:55:28 +03:00
{ [ $ _ [ 1 ] ] }
] ,
2004-11-02 00:10:46 +03:00
[ #Rule 11
2003-12-08 05:55:28 +03:00
'definitions' , 2 ,
sub
2005-08-22 04:06:35 +04:00
#line 58 "idl.yp"
2003-12-08 05:55:28 +03:00
{ push ( @ { $ _ [ 1 ] } , $ _ [ 2 ] ) ; $ _ [ 1 ] }
] ,
2004-11-02 00:10:46 +03:00
[ #Rule 12
2003-12-08 05:55:28 +03:00
'definition' , 1 , undef
] ,
2004-11-02 00:10:46 +03:00
[ #Rule 13
2003-12-08 05:55:28 +03:00
'definition' , 1 , undef
] ,
2004-11-02 00:10:46 +03:00
[ #Rule 14
2003-12-08 05:55:28 +03:00
'definition' , 1 , undef
] ,
2004-11-02 00:10:46 +03:00
[ #Rule 15
2005-01-06 09:32:07 +03:00
'definition' , 1 , undef
] ,
[ #Rule 16
2005-07-20 03:34:02 +04:00
'definition' , 1 , undef
] ,
[ #Rule 17
2003-12-08 05:55:28 +03:00
'const' , 6 ,
sub
2005-08-22 04:06:35 +04:00
#line 66 "idl.yp"
2003-12-08 05:55:28 +03:00
{ {
"TYPE" = > "CONST" ,
"DTYPE" = > $ _ [ 2 ] ,
"NAME" = > $ _ [ 3 ] ,
r6973: Merge new version of pidl into the main SAMBA_4_0 branch.
The main difference in this new version is the extra data structure generated
between the IDL data structure and the NDR parser:
IDL -> NDR -> { ndr_parser, ndr_header, eparser, etc }
This makes the ndr_parser.pm internals much more sane.
Other changes include:
- Remove unnecessary calls with NDR_BUFFERS (for example, GUID doesn't have any buffers, just scalars) as well as some (unnecessary) nested setting of flags.
- Parse array loops in the C code rather then calling ndr_pull_array(). This allows us to have, for example, arrays of pointers or arrays of pointers to arrays, etc..
- Use if() {} rather then if () goto foo; everywhere
- NDR_IN no longer implies LIBNDR_FLAG_REF_ALLOC
- By default, top level pointers are now "ref" (as is the default in
most other IDL compilers). This can be overridden using the
default_pointer_top() property.
- initial work on new ethereal parser generators by Alan DeKok and me
- pidl now writes errors in the standard format used by compilers, which
is parsable by most editors
- ability to warn about the fact that pidl extension(s) have been used,
useful for making sure IDL files work with other IDL compilers.
oh, and there's probably some other things I can't think of right now..
(This used to be commit 13cf227615f6b9e0e5fa62e59197024410254f01)
2005-05-25 17:50:27 +04:00
"VALUE" = > $ _ [ 5 ] ,
"FILE" = > $ _ [ 0 ] - > YYData - > { INPUT_FILENAME } ,
"LINE" = > $ _ [ 0 ] - > YYData - > { LINE } ,
2003-12-08 05:55:28 +03:00
} }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 18
2004-11-29 14:08:15 +03:00
'const' , 7 ,
sub
2005-08-22 04:06:35 +04:00
#line 75 "idl.yp"
2004-11-29 14:08:15 +03:00
{ {
"TYPE" = > "CONST" ,
"DTYPE" = > $ _ [ 2 ] ,
"NAME" = > $ _ [ 3 ] ,
"ARRAY_LEN" = > $ _ [ 4 ] ,
"VALUE" = > $ _ [ 6 ] ,
r6973: Merge new version of pidl into the main SAMBA_4_0 branch.
The main difference in this new version is the extra data structure generated
between the IDL data structure and the NDR parser:
IDL -> NDR -> { ndr_parser, ndr_header, eparser, etc }
This makes the ndr_parser.pm internals much more sane.
Other changes include:
- Remove unnecessary calls with NDR_BUFFERS (for example, GUID doesn't have any buffers, just scalars) as well as some (unnecessary) nested setting of flags.
- Parse array loops in the C code rather then calling ndr_pull_array(). This allows us to have, for example, arrays of pointers or arrays of pointers to arrays, etc..
- Use if() {} rather then if () goto foo; everywhere
- NDR_IN no longer implies LIBNDR_FLAG_REF_ALLOC
- By default, top level pointers are now "ref" (as is the default in
most other IDL compilers). This can be overridden using the
default_pointer_top() property.
- initial work on new ethereal parser generators by Alan DeKok and me
- pidl now writes errors in the standard format used by compilers, which
is parsable by most editors
- ability to warn about the fact that pidl extension(s) have been used,
useful for making sure IDL files work with other IDL compilers.
oh, and there's probably some other things I can't think of right now..
(This used to be commit 13cf227615f6b9e0e5fa62e59197024410254f01)
2005-05-25 17:50:27 +04:00
"FILE" = > $ _ [ 0 ] - > YYData - > { INPUT_FILENAME } ,
"LINE" = > $ _ [ 0 ] - > YYData - > { LINE } ,
2004-11-29 14:08:15 +03:00
} }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 19
2003-12-08 05:55:28 +03:00
'function' , 7 ,
sub
2005-08-22 04:06:35 +04:00
#line 88 "idl.yp"
2003-12-08 05:55:28 +03:00
{ {
"TYPE" = > "FUNCTION" ,
"NAME" = > $ _ [ 3 ] ,
"RETURN_TYPE" = > $ _ [ 2 ] ,
"PROPERTIES" = > $ _ [ 1 ] ,
r6973: Merge new version of pidl into the main SAMBA_4_0 branch.
The main difference in this new version is the extra data structure generated
between the IDL data structure and the NDR parser:
IDL -> NDR -> { ndr_parser, ndr_header, eparser, etc }
This makes the ndr_parser.pm internals much more sane.
Other changes include:
- Remove unnecessary calls with NDR_BUFFERS (for example, GUID doesn't have any buffers, just scalars) as well as some (unnecessary) nested setting of flags.
- Parse array loops in the C code rather then calling ndr_pull_array(). This allows us to have, for example, arrays of pointers or arrays of pointers to arrays, etc..
- Use if() {} rather then if () goto foo; everywhere
- NDR_IN no longer implies LIBNDR_FLAG_REF_ALLOC
- By default, top level pointers are now "ref" (as is the default in
most other IDL compilers). This can be overridden using the
default_pointer_top() property.
- initial work on new ethereal parser generators by Alan DeKok and me
- pidl now writes errors in the standard format used by compilers, which
is parsable by most editors
- ability to warn about the fact that pidl extension(s) have been used,
useful for making sure IDL files work with other IDL compilers.
oh, and there's probably some other things I can't think of right now..
(This used to be commit 13cf227615f6b9e0e5fa62e59197024410254f01)
2005-05-25 17:50:27 +04:00
"ELEMENTS" = > $ _ [ 5 ] ,
"FILE" = > $ _ [ 0 ] - > YYData - > { INPUT_FILENAME } ,
"LINE" = > $ _ [ 0 ] - > YYData - > { LINE } ,
} }
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 20
2005-01-06 09:32:07 +03:00
'declare' , 5 ,
2003-12-08 05:55:28 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 100 "idl.yp"
2005-01-06 09:32:07 +03:00
{ {
"TYPE" = > "DECLARE" ,
"PROPERTIES" = > $ _ [ 2 ] ,
"NAME" = > $ _ [ 4 ] ,
"DATA" = > $ _ [ 3 ] ,
r6973: Merge new version of pidl into the main SAMBA_4_0 branch.
The main difference in this new version is the extra data structure generated
between the IDL data structure and the NDR parser:
IDL -> NDR -> { ndr_parser, ndr_header, eparser, etc }
This makes the ndr_parser.pm internals much more sane.
Other changes include:
- Remove unnecessary calls with NDR_BUFFERS (for example, GUID doesn't have any buffers, just scalars) as well as some (unnecessary) nested setting of flags.
- Parse array loops in the C code rather then calling ndr_pull_array(). This allows us to have, for example, arrays of pointers or arrays of pointers to arrays, etc..
- Use if() {} rather then if () goto foo; everywhere
- NDR_IN no longer implies LIBNDR_FLAG_REF_ALLOC
- By default, top level pointers are now "ref" (as is the default in
most other IDL compilers). This can be overridden using the
default_pointer_top() property.
- initial work on new ethereal parser generators by Alan DeKok and me
- pidl now writes errors in the standard format used by compilers, which
is parsable by most editors
- ability to warn about the fact that pidl extension(s) have been used,
useful for making sure IDL files work with other IDL compilers.
oh, and there's probably some other things I can't think of right now..
(This used to be commit 13cf227615f6b9e0e5fa62e59197024410254f01)
2005-05-25 17:50:27 +04:00
"FILE" = > $ _ [ 0 ] - > YYData - > { INPUT_FILENAME } ,
"LINE" = > $ _ [ 0 ] - > YYData - > { LINE } ,
2005-01-06 09:32:07 +03:00
} }
] ,
[ #Rule 21
'decl_type' , 1 , undef
] ,
[ #Rule 22
2005-07-20 03:34:02 +04:00
'decl_type' , 1 , undef
] ,
[ #Rule 23
2005-01-06 09:32:07 +03:00
'decl_enum' , 1 ,
sub
2005-08-22 04:06:35 +04:00
#line 114 "idl.yp"
2005-01-06 09:32:07 +03:00
{ {
"TYPE" = > "ENUM"
} }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 24
2005-01-06 09:32:07 +03:00
'decl_bitmap' , 1 ,
sub
2005-08-22 04:06:35 +04:00
#line 120 "idl.yp"
2005-01-06 09:32:07 +03:00
{ {
"TYPE" = > "BITMAP"
} }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 25
2005-01-06 09:32:07 +03:00
'typedef' , 6 ,
sub
2005-08-22 04:06:35 +04:00
#line 126 "idl.yp"
2003-12-08 05:55:28 +03:00
{ {
2005-01-05 02:25:25 +03:00
"TYPE" = > "TYPEDEF" ,
"PROPERTIES" = > $ _ [ 2 ] ,
"NAME" = > $ _ [ 4 ] ,
"DATA" = > $ _ [ 3 ] ,
r6973: Merge new version of pidl into the main SAMBA_4_0 branch.
The main difference in this new version is the extra data structure generated
between the IDL data structure and the NDR parser:
IDL -> NDR -> { ndr_parser, ndr_header, eparser, etc }
This makes the ndr_parser.pm internals much more sane.
Other changes include:
- Remove unnecessary calls with NDR_BUFFERS (for example, GUID doesn't have any buffers, just scalars) as well as some (unnecessary) nested setting of flags.
- Parse array loops in the C code rather then calling ndr_pull_array(). This allows us to have, for example, arrays of pointers or arrays of pointers to arrays, etc..
- Use if() {} rather then if () goto foo; everywhere
- NDR_IN no longer implies LIBNDR_FLAG_REF_ALLOC
- By default, top level pointers are now "ref" (as is the default in
most other IDL compilers). This can be overridden using the
default_pointer_top() property.
- initial work on new ethereal parser generators by Alan DeKok and me
- pidl now writes errors in the standard format used by compilers, which
is parsable by most editors
- ability to warn about the fact that pidl extension(s) have been used,
useful for making sure IDL files work with other IDL compilers.
oh, and there's probably some other things I can't think of right now..
(This used to be commit 13cf227615f6b9e0e5fa62e59197024410254f01)
2005-05-25 17:50:27 +04:00
"ARRAY_LEN" = > $ _ [ 5 ] ,
"FILE" = > $ _ [ 0 ] - > YYData - > { INPUT_FILENAME } ,
"LINE" = > $ _ [ 0 ] - > YYData - > { LINE } ,
2003-12-08 05:55:28 +03:00
} }
] ,
2005-01-06 09:32:07 +03:00
[ #Rule 26
2005-07-20 03:34:02 +04:00
'usertype' , 1 , undef
2003-12-08 05:55:28 +03:00
] ,
2005-01-06 09:32:07 +03:00
[ #Rule 27
2005-07-20 03:34:02 +04:00
'usertype' , 1 , undef
2003-12-08 05:55:28 +03:00
] ,
2005-01-06 09:32:07 +03:00
[ #Rule 28
2005-07-20 03:34:02 +04:00
'usertype' , 1 , undef
2004-11-29 14:08:15 +03:00
] ,
2005-01-06 09:32:07 +03:00
[ #Rule 29
2005-07-20 03:34:02 +04:00
'usertype' , 1 , undef
2005-01-05 18:28:10 +03:00
] ,
2005-01-06 09:32:07 +03:00
[ #Rule 30
2005-07-20 03:34:02 +04:00
'typedecl' , 2 ,
sub
2005-08-22 04:06:35 +04:00
#line 139 "idl.yp"
2005-07-20 03:34:02 +04:00
{ $ _ [ 1 ] }
] ,
[ #Rule 31
'type' , 1 , undef
] ,
[ #Rule 32
'type' , 1 , undef
] ,
[ #Rule 33
2003-12-08 05:55:28 +03:00
'type' , 1 ,
sub
2005-08-22 04:06:35 +04:00
#line 142 "idl.yp"
2003-12-08 05:55:28 +03:00
{ "void" }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 34
'enum' , 5 ,
2003-12-08 05:55:28 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 146 "idl.yp"
2003-12-08 05:55:28 +03:00
{ {
r6973: Merge new version of pidl into the main SAMBA_4_0 branch.
The main difference in this new version is the extra data structure generated
between the IDL data structure and the NDR parser:
IDL -> NDR -> { ndr_parser, ndr_header, eparser, etc }
This makes the ndr_parser.pm internals much more sane.
Other changes include:
- Remove unnecessary calls with NDR_BUFFERS (for example, GUID doesn't have any buffers, just scalars) as well as some (unnecessary) nested setting of flags.
- Parse array loops in the C code rather then calling ndr_pull_array(). This allows us to have, for example, arrays of pointers or arrays of pointers to arrays, etc..
- Use if() {} rather then if () goto foo; everywhere
- NDR_IN no longer implies LIBNDR_FLAG_REF_ALLOC
- By default, top level pointers are now "ref" (as is the default in
most other IDL compilers). This can be overridden using the
default_pointer_top() property.
- initial work on new ethereal parser generators by Alan DeKok and me
- pidl now writes errors in the standard format used by compilers, which
is parsable by most editors
- ability to warn about the fact that pidl extension(s) have been used,
useful for making sure IDL files work with other IDL compilers.
oh, and there's probably some other things I can't think of right now..
(This used to be commit 13cf227615f6b9e0e5fa62e59197024410254f01)
2005-05-25 17:50:27 +04:00
"TYPE" = > "ENUM" ,
2005-07-20 03:34:02 +04:00
"NAME" = > $ _ [ 2 ] ,
"ELEMENTS" = > $ _ [ 4 ]
2003-12-08 05:55:28 +03:00
} }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 35
2003-12-08 05:55:28 +03:00
'enum_elements' , 1 ,
sub
2005-08-22 04:06:35 +04:00
#line 154 "idl.yp"
2003-12-08 05:55:28 +03:00
{ [ $ _ [ 1 ] ] }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 36
2003-12-08 05:55:28 +03:00
'enum_elements' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 155 "idl.yp"
2003-12-08 05:55:28 +03:00
{ push ( @ { $ _ [ 1 ] } , $ _ [ 3 ] ) ; $ _ [ 1 ] }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 37
2003-12-08 05:55:28 +03:00
'enum_element' , 1 , undef
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 38
2003-12-08 05:55:28 +03:00
'enum_element' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 159 "idl.yp"
2003-12-08 05:55:28 +03:00
{ "$_[1]$_[2]$_[3]" }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 39
'bitmap' , 5 ,
2003-12-08 05:55:28 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 163 "idl.yp"
2005-01-05 18:28:10 +03:00
{ {
2005-07-20 03:34:02 +04:00
"TYPE" = > "BITMAP" ,
"NAME" = > $ _ [ 2 ] ,
"ELEMENTS" = > $ _ [ 4 ]
2005-01-05 18:28:10 +03:00
} }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 40
2005-01-05 18:28:10 +03:00
'bitmap_elements' , 1 ,
sub
2005-08-22 04:06:35 +04:00
#line 171 "idl.yp"
2005-01-05 18:28:10 +03:00
{ [ $ _ [ 1 ] ] }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 41
2005-01-05 18:28:10 +03:00
'bitmap_elements' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 172 "idl.yp"
2005-01-05 18:28:10 +03:00
{ push ( @ { $ _ [ 1 ] } , $ _ [ 3 ] ) ; $ _ [ 1 ] }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 42
2005-01-05 18:28:10 +03:00
'bitmap_element' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 175 "idl.yp"
2005-01-05 18:28:10 +03:00
{ "$_[1] ( $_[3] )" }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 43
'struct' , 5 ,
2005-01-05 18:28:10 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 179 "idl.yp"
2003-12-08 05:55:28 +03:00
{ {
2005-07-20 03:34:02 +04:00
"TYPE" = > "STRUCT" ,
"NAME" = > $ _ [ 2 ] ,
"ELEMENTS" = > $ _ [ 4 ]
2003-12-08 05:55:28 +03:00
} }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 44
2005-02-11 05:05:47 +03:00
'empty_element' , 2 ,
2003-12-08 05:55:28 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 187 "idl.yp"
2003-12-08 05:55:28 +03:00
{ {
2005-02-11 05:05:47 +03:00
"NAME" = > "" ,
"TYPE" = > "EMPTY" ,
2005-03-28 22:22:45 +04:00
"PROPERTIES" = > $ _ [ 1 ] ,
r6973: Merge new version of pidl into the main SAMBA_4_0 branch.
The main difference in this new version is the extra data structure generated
between the IDL data structure and the NDR parser:
IDL -> NDR -> { ndr_parser, ndr_header, eparser, etc }
This makes the ndr_parser.pm internals much more sane.
Other changes include:
- Remove unnecessary calls with NDR_BUFFERS (for example, GUID doesn't have any buffers, just scalars) as well as some (unnecessary) nested setting of flags.
- Parse array loops in the C code rather then calling ndr_pull_array(). This allows us to have, for example, arrays of pointers or arrays of pointers to arrays, etc..
- Use if() {} rather then if () goto foo; everywhere
- NDR_IN no longer implies LIBNDR_FLAG_REF_ALLOC
- By default, top level pointers are now "ref" (as is the default in
most other IDL compilers). This can be overridden using the
default_pointer_top() property.
- initial work on new ethereal parser generators by Alan DeKok and me
- pidl now writes errors in the standard format used by compilers, which
is parsable by most editors
- ability to warn about the fact that pidl extension(s) have been used,
useful for making sure IDL files work with other IDL compilers.
oh, and there's probably some other things I can't think of right now..
(This used to be commit 13cf227615f6b9e0e5fa62e59197024410254f01)
2005-05-25 17:50:27 +04:00
"POINTERS" = > 0 ,
2005-05-27 18:01:22 +04:00
"ARRAY_LEN" = > [] ,
r6973: Merge new version of pidl into the main SAMBA_4_0 branch.
The main difference in this new version is the extra data structure generated
between the IDL data structure and the NDR parser:
IDL -> NDR -> { ndr_parser, ndr_header, eparser, etc }
This makes the ndr_parser.pm internals much more sane.
Other changes include:
- Remove unnecessary calls with NDR_BUFFERS (for example, GUID doesn't have any buffers, just scalars) as well as some (unnecessary) nested setting of flags.
- Parse array loops in the C code rather then calling ndr_pull_array(). This allows us to have, for example, arrays of pointers or arrays of pointers to arrays, etc..
- Use if() {} rather then if () goto foo; everywhere
- NDR_IN no longer implies LIBNDR_FLAG_REF_ALLOC
- By default, top level pointers are now "ref" (as is the default in
most other IDL compilers). This can be overridden using the
default_pointer_top() property.
- initial work on new ethereal parser generators by Alan DeKok and me
- pidl now writes errors in the standard format used by compilers, which
is parsable by most editors
- ability to warn about the fact that pidl extension(s) have been used,
useful for making sure IDL files work with other IDL compilers.
oh, and there's probably some other things I can't think of right now..
(This used to be commit 13cf227615f6b9e0e5fa62e59197024410254f01)
2005-05-25 17:50:27 +04:00
"FILE" = > $ _ [ 0 ] - > YYData - > { INPUT_FILENAME } ,
"LINE" = > $ _ [ 0 ] - > YYData - > { LINE } ,
2003-12-08 05:55:28 +03:00
} }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 45
2005-02-11 05:05:47 +03:00
'base_or_empty' , 2 , undef
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 46
2005-02-11 05:05:47 +03:00
'base_or_empty' , 1 , undef
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 47
2005-02-11 05:05:47 +03:00
'optional_base_element' , 2 ,
2003-12-08 05:55:28 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 201 "idl.yp"
2005-07-09 19:32:08 +04:00
{ $ _ [ 2 ] - > { PROPERTIES } = Parse::Pidl::Util:: FlattenHash ( [ $ _ [ 1 ] , $ _ [ 2 ] - > { PROPERTIES } ] ) ; $ _ [ 2 ] }
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 48
2005-02-11 05:05:47 +03:00
'union_elements' , 0 , undef
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 49
2005-02-11 05:05:47 +03:00
'union_elements' , 2 ,
2003-12-08 05:55:28 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 206 "idl.yp"
2005-02-11 05:05:47 +03:00
{ push ( @ { $ _ [ 1 ] } , $ _ [ 2 ] ) ; $ _ [ 1 ] }
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 50
'union' , 5 ,
2003-12-08 05:55:28 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 210 "idl.yp"
2003-12-08 05:55:28 +03:00
{ {
2005-07-20 03:34:02 +04:00
"TYPE" = > "UNION" ,
"NAME" = > $ _ [ 2 ] ,
"ELEMENTS" = > $ _ [ 4 ]
2005-02-11 05:05:47 +03:00
} }
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 51
2003-12-08 05:55:28 +03:00
'base_element' , 5 ,
sub
2005-08-22 04:06:35 +04:00
#line 218 "idl.yp"
2003-12-08 05:55:28 +03:00
{ {
"NAME" = > $ _ [ 4 ] ,
"TYPE" = > $ _ [ 2 ] ,
"PROPERTIES" = > $ _ [ 1 ] ,
"POINTERS" = > $ _ [ 3 ] ,
r6973: Merge new version of pidl into the main SAMBA_4_0 branch.
The main difference in this new version is the extra data structure generated
between the IDL data structure and the NDR parser:
IDL -> NDR -> { ndr_parser, ndr_header, eparser, etc }
This makes the ndr_parser.pm internals much more sane.
Other changes include:
- Remove unnecessary calls with NDR_BUFFERS (for example, GUID doesn't have any buffers, just scalars) as well as some (unnecessary) nested setting of flags.
- Parse array loops in the C code rather then calling ndr_pull_array(). This allows us to have, for example, arrays of pointers or arrays of pointers to arrays, etc..
- Use if() {} rather then if () goto foo; everywhere
- NDR_IN no longer implies LIBNDR_FLAG_REF_ALLOC
- By default, top level pointers are now "ref" (as is the default in
most other IDL compilers). This can be overridden using the
default_pointer_top() property.
- initial work on new ethereal parser generators by Alan DeKok and me
- pidl now writes errors in the standard format used by compilers, which
is parsable by most editors
- ability to warn about the fact that pidl extension(s) have been used,
useful for making sure IDL files work with other IDL compilers.
oh, and there's probably some other things I can't think of right now..
(This used to be commit 13cf227615f6b9e0e5fa62e59197024410254f01)
2005-05-25 17:50:27 +04:00
"ARRAY_LEN" = > $ _ [ 5 ] ,
"FILE" = > $ _ [ 0 ] - > YYData - > { INPUT_FILENAME } ,
"LINE" = > $ _ [ 0 ] - > YYData - > { LINE } ,
2003-12-08 05:55:28 +03:00
} }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 52
2003-12-08 05:55:28 +03:00
'pointers' , 0 ,
sub
2005-08-22 04:06:35 +04:00
#line 232 "idl.yp"
2003-12-08 05:55:28 +03:00
{ 0 }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 53
2003-12-08 05:55:28 +03:00
'pointers' , 2 ,
sub
2005-08-22 04:06:35 +04:00
#line 233 "idl.yp"
2003-12-08 05:55:28 +03:00
{ $ _ [ 1 ] + 1 }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 54
2003-12-08 05:55:28 +03:00
'element_list1' , 0 , undef
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 55
2003-12-08 05:55:28 +03:00
'element_list1' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 238 "idl.yp"
2003-12-08 05:55:28 +03:00
{ push ( @ { $ _ [ 1 ] } , $ _ [ 2 ] ) ; $ _ [ 1 ] }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 56
2003-12-08 05:55:28 +03:00
'element_list2' , 0 , undef
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 57
2003-12-08 05:55:28 +03:00
'element_list2' , 1 , undef
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 58
2003-12-08 05:55:28 +03:00
'element_list2' , 1 ,
sub
2005-08-22 04:06:35 +04:00
#line 244 "idl.yp"
2003-12-08 05:55:28 +03:00
{ [ $ _ [ 1 ] ] }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 59
2003-12-08 05:55:28 +03:00
'element_list2' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 245 "idl.yp"
2003-12-08 05:55:28 +03:00
{ push ( @ { $ _ [ 1 ] } , $ _ [ 3 ] ) ; $ _ [ 1 ] }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 60
2003-12-08 05:55:28 +03:00
'array_len' , 0 , undef
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 61
2005-05-27 18:01:22 +04:00
'array_len' , 3 ,
2003-12-08 05:55:28 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 250 "idl.yp"
2005-05-27 18:01:22 +04:00
{ push ( @ { $ _ [ 3 ] } , "*" ) ; $ _ [ 3 ] }
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 62
2005-05-27 18:01:22 +04:00
'array_len' , 4 ,
2003-12-08 05:55:28 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 251 "idl.yp"
2005-05-27 18:01:22 +04:00
{ push ( @ { $ _ [ 4 ] } , "$_[2]" ) ; $ _ [ 4 ] }
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 63
2003-12-08 05:55:28 +03:00
'property_list' , 0 , undef
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 64
2003-12-08 05:55:28 +03:00
'property_list' , 4 ,
sub
2005-08-22 04:06:35 +04:00
#line 257 "idl.yp"
2005-07-09 19:32:08 +04:00
{ Parse::Pidl::Util:: FlattenHash ( [ $ _ [ 1 ] , $ _ [ 3 ] ] ) ; }
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 65
2003-12-08 05:55:28 +03:00
'properties' , 1 ,
sub
2005-08-22 04:06:35 +04:00
#line 260 "idl.yp"
2003-12-08 05:55:28 +03:00
{ $ _ [ 1 ] }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 66
2003-12-08 05:55:28 +03:00
'properties' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 261 "idl.yp"
2005-07-09 19:32:08 +04:00
{ Parse::Pidl::Util:: FlattenHash ( [ $ _ [ 1 ] , $ _ [ 3 ] ] ) ; }
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 67
2003-12-08 05:55:28 +03:00
'property' , 1 ,
sub
2005-08-22 04:06:35 +04:00
#line 264 "idl.yp"
2003-12-08 05:55:28 +03:00
{ { "$_[1]" = > "1" } }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 68
2003-12-08 05:55:28 +03:00
'property' , 4 ,
sub
2005-08-22 04:06:35 +04:00
#line 265 "idl.yp"
2003-12-08 05:55:28 +03:00
{ { "$_[1]" = > "$_[3]" } }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 69
2003-12-08 05:55:28 +03:00
'listtext' , 1 , undef
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 70
2003-12-08 05:55:28 +03:00
'listtext' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 270 "idl.yp"
2003-12-08 05:55:28 +03:00
{ "$_[1] $_[3]" }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 71
2004-10-14 14:30:08 +04:00
'commalisttext' , 1 , undef
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 72
2004-10-14 14:30:08 +04:00
'commalisttext' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 275 "idl.yp"
2004-10-14 14:30:08 +04:00
{ "$_[1],$_[3]" }
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 73
2004-10-14 14:30:08 +04:00
'anytext' , 0 ,
sub
2005-08-22 04:06:35 +04:00
#line 279 "idl.yp"
2004-10-14 14:30:08 +04:00
{ "" }
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 74
2004-10-14 14:30:08 +04:00
'anytext' , 1 , undef
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 75
2004-10-14 14:30:08 +04:00
'anytext' , 1 , undef
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 76
2004-11-29 14:08:15 +03:00
'anytext' , 1 , undef
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 77
2003-12-08 05:55:28 +03:00
'anytext' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 281 "idl.yp"
2003-12-08 05:55:28 +03:00
{ "$_[1]$_[2]$_[3]" }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 78
2003-12-08 05:55:28 +03:00
'anytext' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 282 "idl.yp"
2003-12-08 05:55:28 +03:00
{ "$_[1]$_[2]$_[3]" }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 79
2003-12-08 05:55:28 +03:00
'anytext' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 283 "idl.yp"
2003-12-08 05:55:28 +03:00
{ "$_[1]$_[2]$_[3]" }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 80
2003-12-08 05:55:28 +03:00
'anytext' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 284 "idl.yp"
2003-12-08 05:55:28 +03:00
{ "$_[1]$_[2]$_[3]" }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 81
2003-12-08 05:55:28 +03:00
'anytext' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 285 "idl.yp"
2003-12-08 05:55:28 +03:00
{ "$_[1]$_[2]$_[3]" }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 82
2004-10-14 14:30:08 +04:00
'anytext' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 286 "idl.yp"
2004-10-14 14:30:08 +04:00
{ "$_[1]$_[2]$_[3]" }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 83
2004-10-14 14:30:08 +04:00
'anytext' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 287 "idl.yp"
2004-10-14 14:30:08 +04:00
{ "$_[1]$_[2]$_[3]" }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 84
2004-11-29 14:08:15 +03:00
'anytext' , 3 ,
sub
2005-08-22 04:06:35 +04:00
#line 288 "idl.yp"
2004-11-29 14:08:15 +03:00
{ "$_[1]$_[2]$_[3]" }
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 85
2005-01-21 09:46:07 +03:00
'anytext' , 3 ,
2003-12-08 05:55:28 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 289 "idl.yp"
2005-01-21 09:46:07 +03:00
{ "$_[1]$_[2]$_[3]" }
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 86
2005-05-27 22:14:43 +04:00
'anytext' , 3 ,
2004-11-29 14:08:15 +03:00
sub
2005-08-22 04:06:35 +04:00
#line 290 "idl.yp"
2005-05-27 22:14:43 +04:00
{ "$_[1]$_[2]$_[3]" }
2004-11-29 14:08:15 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 87
2005-01-21 09:46:07 +03:00
'anytext' , 5 ,
sub
2005-08-22 04:06:35 +04:00
#line 291 "idl.yp"
2005-01-21 09:46:07 +03:00
{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 88
2005-05-27 22:14:43 +04:00
'anytext' , 5 ,
sub
2005-08-22 04:06:35 +04:00
#line 292 "idl.yp"
2005-05-27 22:14:43 +04:00
{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }
2003-12-08 05:55:28 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 89
2005-05-27 22:14:43 +04:00
'identifier' , 1 , undef
2005-01-21 09:46:07 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 90
'optional_identifier' , 1 , undef
] ,
[ #Rule 91
'optional_identifier' , 0 , undef
] ,
[ #Rule 92
2005-05-27 22:14:43 +04:00
'constant' , 1 , undef
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 93
2003-12-08 05:55:28 +03:00
'text' , 1 ,
sub
2005-08-22 04:06:35 +04:00
#line 306 "idl.yp"
2003-12-08 05:55:28 +03:00
{ "\"$_[1]\"" }
2004-11-01 15:26:59 +03:00
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 94
2004-11-01 15:26:59 +03:00
'optional_semicolon' , 0 , undef
] ,
2005-07-20 03:34:02 +04:00
[ #Rule 95
2004-11-01 15:26:59 +03:00
'optional_semicolon' , 1 , undef
2003-12-08 05:55:28 +03:00
]
] ,
@ _ ) ;
bless ( $ self , $ class ) ;
}
2005-08-22 04:06:35 +04:00
#line 317 "idl.yp"
2003-12-08 05:55:28 +03:00
2005-07-09 19:32:08 +04:00
use Parse::Pidl::Util ;
2003-12-08 05:55:28 +03:00
2005-07-10 05:16:02 +04:00
#####################################################################
# traverse a perl data structure removing any empty arrays or
# hashes and any hash elements that map to undef
sub CleanData ($)
{
sub CleanData ($) ;
my ( $ v ) = shift ;
if ( ref ( $ v ) eq "ARRAY" ) {
foreach my $ i ( 0 .. $# { $ v } ) {
CleanData ( $ v - > [ $ i ] ) ;
if ( ref ( $ v - > [ $ i ] ) eq "ARRAY" && $# { $ v - > [ $ i ] } == - 1 ) {
$ v - > [ $ i ] = undef ;
next ;
}
}
# 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 ; }
if ( ref ( $ v - > { $ x } ) eq "ARRAY" && $# { $ v - > { $ x } } == - 1 ) { delete ( $ v - > { $ x } ) ; next ; }
}
}
return $ v ;
}
2003-12-08 05:55:28 +03:00
sub _Error {
r6973: Merge new version of pidl into the main SAMBA_4_0 branch.
The main difference in this new version is the extra data structure generated
between the IDL data structure and the NDR parser:
IDL -> NDR -> { ndr_parser, ndr_header, eparser, etc }
This makes the ndr_parser.pm internals much more sane.
Other changes include:
- Remove unnecessary calls with NDR_BUFFERS (for example, GUID doesn't have any buffers, just scalars) as well as some (unnecessary) nested setting of flags.
- Parse array loops in the C code rather then calling ndr_pull_array(). This allows us to have, for example, arrays of pointers or arrays of pointers to arrays, etc..
- Use if() {} rather then if () goto foo; everywhere
- NDR_IN no longer implies LIBNDR_FLAG_REF_ALLOC
- By default, top level pointers are now "ref" (as is the default in
most other IDL compilers). This can be overridden using the
default_pointer_top() property.
- initial work on new ethereal parser generators by Alan DeKok and me
- pidl now writes errors in the standard format used by compilers, which
is parsable by most editors
- ability to warn about the fact that pidl extension(s) have been used,
useful for making sure IDL files work with other IDL compilers.
oh, and there's probably some other things I can't think of right now..
(This used to be commit 13cf227615f6b9e0e5fa62e59197024410254f01)
2005-05-25 17:50:27 +04:00
if ( exists $ _ [ 0 ] - > YYData - > { ERRMSG } ) {
2003-12-08 05:55:28 +03:00
print $ _ [ 0 ] - > YYData - > { ERRMSG } ;
delete $ _ [ 0 ] - > YYData - > { ERRMSG } ;
return ;
} ;
my $ line = $ _ [ 0 ] - > YYData - > { LINE } ;
my $ last_token = $ _ [ 0 ] - > YYData - > { LAST_TOKEN } ;
my $ file = $ _ [ 0 ] - > YYData - > { INPUT_FILENAME } ;
2004-05-14 22:35:51 +04:00
print "$file:$line: Syntax error near '$last_token'\n" ;
2003-12-08 05:55:28 +03:00
}
sub _Lexer ($)
{
my ( $ parser ) = shift ;
2005-07-22 01:27:39 +04:00
$ parser - > YYData - > { INPUT } or return ( '' , undef ) ;
2003-12-08 05:55:28 +03:00
again:
$ parser - > YYData - > { INPUT } =~ s/^[ \t]*// ;
for ( $ parser - > YYData - > { INPUT } ) {
if ( /^\#/ ) {
if ( s/^\# (\d+) \"(.*?)\"( \d+|)// ) {
$ parser - > YYData - > { LINE } = $ 1 - 1 ;
$ parser - > YYData - > { INPUT_FILENAME } = $ 2 ;
goto again ;
}
2003-12-16 03:38:33 +03:00
if ( s/^\#line (\d+) \"(.*?)\"( \d+|)// ) {
$ parser - > YYData - > { LINE } = $ 1 - 1 ;
$ parser - > YYData - > { INPUT_FILENAME } = $ 2 ;
goto again ;
}
if ( s/^(\#.*)$//m ) {
goto again ;
}
2003-12-08 05:55:28 +03:00
}
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 =~
2005-01-06 09:32:07 +03:00
/ ^ ( coclass | interface | const | typedef | declare | union
2005-02-11 05:05:47 +03:00
| struct | enum | bitmap | void ) $ / x ) {
2003-12-08 05:55:28 +03:00
return $ 1 ;
}
return ( 'IDENTIFIER' , $ 1 ) ;
}
if ( s/^(.)//s ) {
$ parser - > YYData - > { LAST_TOKEN } = $ 1 ;
return ( $ 1 , $ 1 ) ;
}
}
}
sub parse_idl ($$)
{
2005-07-22 01:27:39 +04:00
my ( $ self , $ filename ) = @ _ ;
2003-12-08 05:55:28 +03:00
my $ saved_delim = $/ ;
undef $/ ;
2003-12-16 01:06:18 +03:00
my $ cpp = $ ENV { CPP } ;
if ( ! defined $ cpp ) {
$ cpp = "cpp"
}
2005-06-01 04:34:28 +04:00
my $ data = `$cpp -D__PIDL__ -xc $filename` ;
2003-12-08 05:55:28 +03:00
$/ = $ saved_delim ;
2004-08-11 23:48:36 +04:00
$ self - > YYData - > { INPUT } = $ data ;
$ self - > YYData - > { LINE } = 0 ;
$ self - > YYData - > { LAST_TOKEN } = "NONE" ;
my $ idl = $ self - > YYParse ( yylex = > \ & _Lexer , yyerror = > \ & _Error ) ;
2005-07-10 05:16:02 +04:00
return CleanData ( $ idl ) ;
2003-12-08 05:55:28 +03:00
}
1 ;