[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-886-g558ff91
Stefan Metzmacher
metze at samba.org
Fri Aug 7 03:50:38 MDT 2009
The branch, master has been updated
via 558ff911df1e16e28e3a1efa0849c9083d08c617 (commit)
via 20a6fb5cdb15b138021076e14c1df8f4ebb06184 (commit)
via bfa9624946a35e5645effbb20e02abba2c34a8c2 (commit)
via 7d7a9210cddd291f86e313554c83affb73dfda52 (commit)
via cdfaaed9a87e27b1019cc119be4296f66a389c56 (commit)
via 282375791297b83806d9d9ed6e47b5408e3da850 (commit)
from 8e419aab48ace1fe0d075e2a25935e650805a23c (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 558ff911df1e16e28e3a1efa0849c9083d08c617
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Aug 5 13:40:38 2009 +0200
pidl: parse idl 'pipe' typedefs, but print out a not supported message for now
metze
commit 20a6fb5cdb15b138021076e14c1df8f4ebb06184
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Aug 4 15:00:13 2009 +0200
pidl: fix formatting in expr.yp
metze
commit bfa9624946a35e5645effbb20e02abba2c34a8c2
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Aug 4 14:59:33 2009 +0200
pidl: fix formatting in idl.yp
metze
commit 7d7a9210cddd291f86e313554c83affb73dfda52
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Aug 5 13:03:37 2009 +0200
librpc: fix callers after epmapper.idl changes
metze
commit cdfaaed9a87e27b1019cc119be4296f66a389c56
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Aug 5 13:05:20 2009 +0200
librpc: rerun 'make idl' after epmapper.idl changes
metze
commit 282375791297b83806d9d9ed6e47b5408e3da850
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Aug 5 13:04:59 2009 +0200
epmapper.idl: avoid usage of 'pipe', this is a reserved word in IDL
We now use 'named_pipe' instead.
metze
-----------------------------------------------------------------------
Summary of changes:
librpc/gen_ndr/epmapper.h | 8 +-
librpc/gen_ndr/ndr_epmapper.c | 26 +-
librpc/gen_ndr/ndr_epmapper.h | 2 +-
librpc/idl/epmapper.idl | 8 +-
librpc/rpc/binding.c | 18 +-
pidl/expr.yp | 202 +++--
pidl/idl.yp | 708 +++++++++------
pidl/lib/Parse/Pidl/Expr.pm | 116 ++--
pidl/lib/Parse/Pidl/IDL.pm | 2137 +++++++++++++++++++++--------------------
pidl/lib/Parse/Pidl/NDR.pm | 20 +-
10 files changed, 1785 insertions(+), 1460 deletions(-)
Changeset truncated at 500 lines:
diff --git a/librpc/gen_ndr/epmapper.h b/librpc/gen_ndr/epmapper.h
index ff80fbb..2030e1e 100644
--- a/librpc/gen_ndr/epmapper.h
+++ b/librpc/gen_ndr/epmapper.h
@@ -26,7 +26,7 @@ enum epm_protocol
EPM_PROTOCOL_UUID=0x0d,
EPM_PROTOCOL_IPX=0x0e,
EPM_PROTOCOL_SMB=0x0f,
- EPM_PROTOCOL_PIPE=0x10,
+ EPM_PROTOCOL_NAMED_PIPE=0x10,
EPM_PROTOCOL_NETBIOS=0x11,
EPM_PROTOCOL_NETBEUI=0x12,
EPM_PROTOCOL_SPX=0x13,
@@ -55,7 +55,7 @@ enum epm_protocol
#define EPM_PROTOCOL_UUID ( 0x0d )
#define EPM_PROTOCOL_IPX ( 0x0e )
#define EPM_PROTOCOL_SMB ( 0x0f )
-#define EPM_PROTOCOL_PIPE ( 0x10 )
+#define EPM_PROTOCOL_NAMED_PIPE ( 0x10 )
#define EPM_PROTOCOL_NETBIOS ( 0x11 )
#define EPM_PROTOCOL_NETBEUI ( 0x12 )
#define EPM_PROTOCOL_SPX ( 0x13 )
@@ -116,7 +116,7 @@ struct epm_rhs_smb {
const char * unc;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
};
-struct epm_rhs_pipe {
+struct epm_rhs_named_pipe {
const char * path;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
};
@@ -189,7 +189,7 @@ union epm_rhs {
struct epm_rhs_uuid uuid;/* [case(EPM_PROTOCOL_UUID)] */
struct epm_rhs_ipx ipx;/* [case(EPM_PROTOCOL_IPX)] */
struct epm_rhs_smb smb;/* [case(EPM_PROTOCOL_SMB)] */
- struct epm_rhs_pipe pipe;/* [case(EPM_PROTOCOL_PIPE)] */
+ struct epm_rhs_named_pipe named_pipe;/* [case(EPM_PROTOCOL_NAMED_PIPE)] */
struct epm_rhs_netbios netbios;/* [case(EPM_PROTOCOL_NETBIOS)] */
struct epm_rhs_netbeui netbeui;/* [case(EPM_PROTOCOL_NETBEUI)] */
struct epm_rhs_spx spx;/* [case(EPM_PROTOCOL_SPX)] */
diff --git a/librpc/gen_ndr/ndr_epmapper.c b/librpc/gen_ndr/ndr_epmapper.c
index e39356f..7bcd8dd 100644
--- a/librpc/gen_ndr/ndr_epmapper.c
+++ b/librpc/gen_ndr/ndr_epmapper.c
@@ -35,7 +35,7 @@ _PUBLIC_ void ndr_print_epm_protocol(struct ndr_print *ndr, const char *name, en
case EPM_PROTOCOL_UUID: val = "EPM_PROTOCOL_UUID"; break;
case EPM_PROTOCOL_IPX: val = "EPM_PROTOCOL_IPX"; break;
case EPM_PROTOCOL_SMB: val = "EPM_PROTOCOL_SMB"; break;
- case EPM_PROTOCOL_PIPE: val = "EPM_PROTOCOL_PIPE"; break;
+ case EPM_PROTOCOL_NAMED_PIPE: val = "EPM_PROTOCOL_NAMED_PIPE"; break;
case EPM_PROTOCOL_NETBIOS: val = "EPM_PROTOCOL_NETBIOS"; break;
case EPM_PROTOCOL_NETBEUI: val = "EPM_PROTOCOL_NETBEUI"; break;
case EPM_PROTOCOL_SPX: val = "EPM_PROTOCOL_SPX"; break;
@@ -391,7 +391,7 @@ _PUBLIC_ void ndr_print_epm_rhs_smb(struct ndr_print *ndr, const char *name, con
ndr->depth--;
}
-static enum ndr_err_code ndr_push_epm_rhs_pipe(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_pipe *r)
+static enum ndr_err_code ndr_push_epm_rhs_named_pipe(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_named_pipe *r)
{
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_push_align(ndr, 4));
@@ -407,7 +407,7 @@ static enum ndr_err_code ndr_push_epm_rhs_pipe(struct ndr_push *ndr, int ndr_fla
return NDR_ERR_SUCCESS;
}
-static enum ndr_err_code ndr_pull_epm_rhs_pipe(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_pipe *r)
+static enum ndr_err_code ndr_pull_epm_rhs_named_pipe(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_named_pipe *r)
{
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_pull_align(ndr, 4));
@@ -423,9 +423,9 @@ static enum ndr_err_code ndr_pull_epm_rhs_pipe(struct ndr_pull *ndr, int ndr_fla
return NDR_ERR_SUCCESS;
}
-_PUBLIC_ void ndr_print_epm_rhs_pipe(struct ndr_print *ndr, const char *name, const struct epm_rhs_pipe *r)
+_PUBLIC_ void ndr_print_epm_rhs_named_pipe(struct ndr_print *ndr, const char *name, const struct epm_rhs_named_pipe *r)
{
- ndr_print_struct(ndr, name, "epm_rhs_pipe");
+ ndr_print_struct(ndr, name, "epm_rhs_named_pipe");
ndr->depth++;
ndr_print_string(ndr, "path", r->path);
ndr->depth--;
@@ -916,8 +916,8 @@ static enum ndr_err_code ndr_push_epm_rhs(struct ndr_push *ndr, int ndr_flags, c
NDR_CHECK(ndr_push_epm_rhs_smb(ndr, NDR_SCALARS, &r->smb));
break; }
- case EPM_PROTOCOL_PIPE: {
- NDR_CHECK(ndr_push_epm_rhs_pipe(ndr, NDR_SCALARS, &r->pipe));
+ case EPM_PROTOCOL_NAMED_PIPE: {
+ NDR_CHECK(ndr_push_epm_rhs_named_pipe(ndr, NDR_SCALARS, &r->named_pipe));
break; }
case EPM_PROTOCOL_NETBIOS: {
@@ -1022,7 +1022,7 @@ static enum ndr_err_code ndr_push_epm_rhs(struct ndr_push *ndr, int ndr_flags, c
case EPM_PROTOCOL_SMB:
break;
- case EPM_PROTOCOL_PIPE:
+ case EPM_PROTOCOL_NAMED_PIPE:
break;
case EPM_PROTOCOL_NETBIOS:
@@ -1131,8 +1131,8 @@ static enum ndr_err_code ndr_pull_epm_rhs(struct ndr_pull *ndr, int ndr_flags, u
NDR_CHECK(ndr_pull_epm_rhs_smb(ndr, NDR_SCALARS, &r->smb));
break; }
- case EPM_PROTOCOL_PIPE: {
- NDR_CHECK(ndr_pull_epm_rhs_pipe(ndr, NDR_SCALARS, &r->pipe));
+ case EPM_PROTOCOL_NAMED_PIPE: {
+ NDR_CHECK(ndr_pull_epm_rhs_named_pipe(ndr, NDR_SCALARS, &r->named_pipe));
break; }
case EPM_PROTOCOL_NETBIOS: {
@@ -1236,7 +1236,7 @@ static enum ndr_err_code ndr_pull_epm_rhs(struct ndr_pull *ndr, int ndr_flags, u
case EPM_PROTOCOL_SMB:
break;
- case EPM_PROTOCOL_PIPE:
+ case EPM_PROTOCOL_NAMED_PIPE:
break;
case EPM_PROTOCOL_NETBIOS:
@@ -1345,8 +1345,8 @@ _PUBLIC_ void ndr_print_epm_rhs(struct ndr_print *ndr, const char *name, const u
ndr_print_epm_rhs_smb(ndr, "smb", &r->smb);
break;
- case EPM_PROTOCOL_PIPE:
- ndr_print_epm_rhs_pipe(ndr, "pipe", &r->pipe);
+ case EPM_PROTOCOL_NAMED_PIPE:
+ ndr_print_epm_rhs_named_pipe(ndr, "named_pipe", &r->named_pipe);
break;
case EPM_PROTOCOL_NETBIOS:
diff --git a/librpc/gen_ndr/ndr_epmapper.h b/librpc/gen_ndr/ndr_epmapper.h
index 797c68d..8053d07 100644
--- a/librpc/gen_ndr/ndr_epmapper.h
+++ b/librpc/gen_ndr/ndr_epmapper.h
@@ -40,7 +40,7 @@ void ndr_print_epm_rhs_ncacn(struct ndr_print *ndr, const char *name, const stru
void ndr_print_epm_rhs_uuid(struct ndr_print *ndr, const char *name, const struct epm_rhs_uuid *r);
void ndr_print_epm_rhs_ipx(struct ndr_print *ndr, const char *name, const struct epm_rhs_ipx *r);
void ndr_print_epm_rhs_smb(struct ndr_print *ndr, const char *name, const struct epm_rhs_smb *r);
-void ndr_print_epm_rhs_pipe(struct ndr_print *ndr, const char *name, const struct epm_rhs_pipe *r);
+void ndr_print_epm_rhs_named_pipe(struct ndr_print *ndr, const char *name, const struct epm_rhs_named_pipe *r);
void ndr_print_epm_rhs_netbios(struct ndr_print *ndr, const char *name, const struct epm_rhs_netbios *r);
void ndr_print_epm_rhs_netbeui(struct ndr_print *ndr, const char *name, const struct epm_rhs_netbeui *r);
void ndr_print_epm_rhs_spx(struct ndr_print *ndr, const char *name, const struct epm_rhs_spx *r);
diff --git a/librpc/idl/epmapper.idl b/librpc/idl/epmapper.idl
index 0a110a1..3d91138 100644
--- a/librpc/idl/epmapper.idl
+++ b/librpc/idl/epmapper.idl
@@ -52,7 +52,7 @@ interface epmapper
EPM_PROTOCOL_UUID = 0x0d,
EPM_PROTOCOL_IPX = 0x0e,
EPM_PROTOCOL_SMB = 0x0f,
- EPM_PROTOCOL_PIPE = 0x10,
+ EPM_PROTOCOL_NAMED_PIPE = 0x10,
EPM_PROTOCOL_NETBIOS = 0x11,
EPM_PROTOCOL_NETBEUI = 0x12,
EPM_PROTOCOL_SPX = 0x13,
@@ -113,8 +113,8 @@ interface epmapper
} epm_rhs_smb;
typedef struct {
- astring path;
- } epm_rhs_pipe;
+ astring path;
+ } epm_rhs_named_pipe;
typedef struct {
astring name;
@@ -178,7 +178,7 @@ interface epmapper
[case(EPM_PROTOCOL_UUID)] epm_rhs_uuid uuid;
[case(EPM_PROTOCOL_IPX)] epm_rhs_ipx ipx;
[case(EPM_PROTOCOL_SMB)] epm_rhs_smb smb;
- [case(EPM_PROTOCOL_PIPE)] epm_rhs_pipe pipe;
+ [case(EPM_PROTOCOL_NAMED_PIPE)] epm_rhs_named_pipe named_pipe;
[case(EPM_PROTOCOL_NETBIOS)] epm_rhs_netbios netbios;
[case(EPM_PROTOCOL_NETBEUI)] epm_rhs_netbeui netbeui;
[case(EPM_PROTOCOL_SPX)] epm_rhs_spx spx;
diff --git a/librpc/rpc/binding.c b/librpc/rpc/binding.c
index ba99239..652927b 100644
--- a/librpc/rpc/binding.c
+++ b/librpc/rpc/binding.c
@@ -45,7 +45,7 @@ static const struct {
{ "ncadg_ip_udp", NCACN_IP_UDP, 3,
{ EPM_PROTOCOL_NCADG, EPM_PROTOCOL_UDP, EPM_PROTOCOL_IP } },
{ "ncalrpc", NCALRPC, 2,
- { EPM_PROTOCOL_NCALRPC, EPM_PROTOCOL_PIPE } },
+ { EPM_PROTOCOL_NCALRPC, EPM_PROTOCOL_NAMED_PIPE } },
{ "ncacn_unix_stream", NCACN_UNIX_STREAM, 2,
{ EPM_PROTOCOL_NCACN, EPM_PROTOCOL_UNIX_DS } },
{ "ncadg_unix_dgram", NCADG_UNIX_DGRAM, 2,
@@ -130,8 +130,8 @@ const char *epm_floor_string(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor)
case EPM_PROTOCOL_IP:
return talloc_asprintf(mem_ctx, "IP:%s", epm_floor->rhs.ip.ipaddr);
- case EPM_PROTOCOL_PIPE:
- return talloc_asprintf(mem_ctx, "PIPE:%s", epm_floor->rhs.pipe.path);
+ case EPM_PROTOCOL_NAMED_PIPE:
+ return talloc_asprintf(mem_ctx, "NAMED-PIPE:%s", epm_floor->rhs.named_pipe.path);
case EPM_PROTOCOL_SMB:
return talloc_asprintf(mem_ctx, "SMB:%s", epm_floor->rhs.smb.unc);
@@ -440,9 +440,9 @@ const char *dcerpc_floor_get_rhs_data(TALLOC_CTX *mem_ctx, struct epm_floor *epm
if (strlen(epm_floor->rhs.smb.unc) == 0) return NULL;
return talloc_strdup(mem_ctx, epm_floor->rhs.smb.unc);
- case EPM_PROTOCOL_PIPE:
- if (strlen(epm_floor->rhs.pipe.path) == 0) return NULL;
- return talloc_strdup(mem_ctx, epm_floor->rhs.pipe.path);
+ case EPM_PROTOCOL_NAMED_PIPE:
+ if (strlen(epm_floor->rhs.named_pipe.path) == 0) return NULL;
+ return talloc_strdup(mem_ctx, epm_floor->rhs.named_pipe.path);
case EPM_PROTOCOL_NETBIOS:
if (strlen(epm_floor->rhs.netbios.name) == 0) return NULL;
@@ -510,9 +510,9 @@ static NTSTATUS dcerpc_floor_set_rhs_data(TALLOC_CTX *mem_ctx,
NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.smb.unc);
return NT_STATUS_OK;
- case EPM_PROTOCOL_PIPE:
- epm_floor->rhs.pipe.path = talloc_strdup(mem_ctx, data);
- NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.pipe.path);
+ case EPM_PROTOCOL_NAMED_PIPE:
+ epm_floor->rhs.named_pipe.path = talloc_strdup(mem_ctx, data);
+ NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.named_pipe.path);
return NT_STATUS_OK;
case EPM_PROTOCOL_NETBIOS:
diff --git a/pidl/expr.yp b/pidl/expr.yp
index a807487..ef8eee3 100644
--- a/pidl/expr.yp
+++ b/pidl/expr.yp
@@ -2,70 +2,120 @@
# Copyright (C) 2006 Jelmer Vernooij <jelmer at samba.org>
# Published under the GNU GPL
#
-%left '->'
-%right '!' '~'
-%left '*' '/' '%'
-%left '+' '-'
+%left '->'
+%right '!' '~'
+%left '*' '/' '%'
+%left '+' '-'
%left '<<' '>>'
-%left '>' '<'
-%left '==' '!='
-%left '&'
-%left '|'
-%left '&&'
-%left '||'
+%left '>' '<'
+%left '==' '!='
+%left '&'
+%left '|'
+%left '&&'
+%left '||'
%left '?' ':'
-%left NEG DEREF ADDROF INV
-%left '.'
+%left NEG DEREF ADDROF INV
+%left '.'
%%
-exp: NUM
- | TEXT { "\"$_[1]\"" }
- | func
- | var
- | '~' exp %prec INV { "~$_[2]" }
- | exp '+' exp { "$_[1] + $_[3]" }
- | exp '-' exp { "$_[1] - $_[3]" }
- | exp '*' exp { "$_[1] * $_[3]" }
- | exp '%' exp { "$_[1] % $_[3]" }
- | exp '<' exp { "$_[1] < $_[3]" }
- | exp '>' exp { "$_[1] > $_[3]" }
- | exp '|' exp { "$_[1] | $_[3]" }
- | exp '==' exp { "$_[1] == $_[3]" }
- | exp '<=' exp { "$_[1] <= $_[3]" }
- | exp '=>' exp { "$_[1] => $_[3]" }
- | exp '<<' exp { "$_[1] << $_[3]" }
- | exp '>>' exp { "$_[1] >> $_[3]" }
- | exp '!=' exp { "$_[1] != $_[3]" }
- | exp '||' exp { "$_[1] || $_[3]" }
- | exp '&&' exp { "$_[1] && $_[3]" }
- | exp '&' exp { "$_[1] & $_[3]" }
- | exp '?' exp ':' exp { "$_[1]?$_[3]:$_[5]" }
- | '~' exp { "~$_[1]" }
- | '!' exp { "not $_[1]" }
- | exp '/' exp { "$_[1] / $_[3]" }
- | '-' exp %prec NEG { "-$_[2]" }
- | '&' exp %prec ADDROF { "&$_[2]" }
- | exp '^' exp { "$_[1]^$_[3]" }
- | '(' exp ')' { "($_[2])" }
+exp:
+ NUM
+ |
+ TEXT { "\"$_[1]\"" }
+ |
+ func
+ |
+ var
+ |
+ '~' exp %prec INV { "~$_[2]" }
+ |
+ exp '+' exp { "$_[1] + $_[3]" }
+ |
+ exp '-' exp { "$_[1] - $_[3]" }
+ |
+ exp '*' exp { "$_[1] * $_[3]" }
+ |
+ exp '%' exp { "$_[1] % $_[3]" }
+ |
+ exp '<' exp { "$_[1] < $_[3]" }
+ |
+ exp '>' exp { "$_[1] > $_[3]" }
+ |
+ exp '|' exp { "$_[1] | $_[3]" }
+ |
+ exp '==' exp { "$_[1] == $_[3]" }
+ |
+ exp '<=' exp { "$_[1] <= $_[3]" }
+ |
+ exp '=>' exp { "$_[1] => $_[3]" }
+ |
+ exp '<<' exp { "$_[1] << $_[3]" }
+ |
+ exp '>>' exp { "$_[1] >> $_[3]" }
+ |
+ exp '!=' exp { "$_[1] != $_[3]" }
+ |
+ exp '||' exp { "$_[1] || $_[3]" }
+ |
+ exp '&&' exp { "$_[1] && $_[3]" }
+ |
+ exp '&' exp { "$_[1] & $_[3]" }
+ |
+ exp '?' exp ':' exp { "$_[1]?$_[3]:$_[5]" }
+ |
+ '~' exp { "~$_[1]" }
+ |
+ '!' exp { "not $_[1]" }
+ |
+ exp '/' exp { "$_[1] / $_[3]" }
+ |
+ '-' exp %prec NEG { "-$_[2]" }
+ |
+ '&' exp %prec ADDROF { "&$_[2]" }
+ |
+ exp '^' exp { "$_[1]^$_[3]" }
+ |
+ '(' exp ')' { "($_[2])" }
;
-possible_pointer:
- VAR { $_[0]->_Lookup($_[1]) }
- | '*' possible_pointer %prec DEREF { $_[0]->_Dereference($_[2]); "*$_[2]" }
- ;
+possible_pointer:
+ VAR { $_[0]->_Lookup($_[1]) }
+ |
+ '*' possible_pointer %prec DEREF { $_[0]->_Dereference($_[2]); "*$_[2]" }
+;
+
+var:
+ possible_pointer { $_[0]->_Use($_[1]) }
+ |
+ var '.' VAR { $_[0]->_Use("$_[1].$_[3]") }
+ |
+ '(' var ')' { "($_[2])" }
+ |
+ var '->' VAR { $_[0]->_Use("*$_[1]"); $_[1]."->".$_[3] }
+;
+
+
+func:
+ VAR '(' opt_args ')' { "$_[1]($_[3])" }
+;
-var: possible_pointer { $_[0]->_Use($_[1]) }
- | var '.' VAR { $_[0]->_Use("$_[1].$_[3]") }
- | '(' var ')' { "($_[2])" }
- | var '->' VAR { $_[0]->_Use("*$_[1]"); $_[1]."->".$_[3] }
+opt_args:
+ #empty
+ { "" }
+ |
+ args
;
+exp_or_possible_pointer:
+ exp
+ |
+ possible_pointer
+;
-func: VAR '(' opt_args ')' { "$_[1]($_[3])" };
-opt_args: { "" } | args;
-exp_or_possible_pointer: exp | possible_pointer;
-args: exp_or_possible_pointer
- | exp_or_possible_pointer ',' args { "$_[1], $_[3]" }
+args:
+ exp_or_possible_pointer
+ |
+ exp_or_possible_pointer ',' args { "$_[1], $_[3]" }
;
%%
@@ -73,22 +123,22 @@ args: exp_or_possible_pointer
package Parse::Pidl::Expr;
sub _Lexer {
- my($parser)=shift;
+ my($parser)=shift;
- $parser->YYData->{INPUT}=~s/^[ \t]//;
+ $parser->YYData->{INPUT}=~s/^[ \t]//;
- for ($parser->YYData->{INPUT}) {
- if (s/^(0x[0-9A-Fa-f]+)//) {
+ for ($parser->YYData->{INPUT}) {
+ if (s/^(0x[0-9A-Fa-f]+)//) {
$parser->YYData->{LAST_TOKEN} = $1;
- return('NUM',$1);
+ return('NUM',$1);
}
- if (s/^([0-9]+(?:\.[0-9]+)?)//) {
+ if (s/^([0-9]+(?:\.[0-9]+)?)//) {
$parser->YYData->{LAST_TOKEN} = $1;
- return('NUM',$1);
+ return('NUM',$1);
}
- if (s/^([A-Za-z_][A-Za-z0-9_]*)//) {
+ if (s/^([A-Za-z_][A-Za-z0-9_]*)//) {
$parser->YYData->{LAST_TOKEN} = $1;
- return('VAR',$1);
+ return('VAR',$1);
}
if (s/^\"(.*?)\"//) {
$parser->YYData->{LAST_TOKEN} = $1;
@@ -96,13 +146,13 @@ sub _Lexer {
}
if (s/^(==|!=|<=|>=|->|\|\||<<|>>|&&)//s) {
$parser->YYData->{LAST_TOKEN} = $1;
- return($1,$1);
+ return($1,$1);
}
- if (s/^(.)//s) {
+ if (s/^(.)//s) {
$parser->YYData->{LAST_TOKEN} = $1;
- return($1,$1);
+ return($1,$1);
}
- }
+ }
}
sub _Use($$)
@@ -139,12 +189,14 @@ sub _Error($)
}
sub Run {
- my($self, $data, $error, $lookup, $deref, $use) = @_;
- $self->YYData->{FULL_INPUT} = $data;
- $self->YYData->{INPUT} = $data;
- $self->YYData->{LOOKUP} = $lookup;
- $self->YYData->{DEREFERENCE} = $deref;
- $self->YYData->{ERROR} = $error;
- $self->YYData->{USE} = $use;
- return $self->YYParse( yylex => \&_Lexer, yyerror => \&_Error);
+ my($self, $data, $error, $lookup, $deref, $use) = @_;
+
+ $self->YYData->{FULL_INPUT} = $data;
+ $self->YYData->{INPUT} = $data;
+ $self->YYData->{LOOKUP} = $lookup;
+ $self->YYData->{DEREFERENCE} = $deref;
+ $self->YYData->{ERROR} = $error;
+ $self->YYData->{USE} = $use;
+
+ return $self->YYParse( yylex => \&_Lexer, yyerror => \&_Error);
}
diff --git a/pidl/idl.yp b/pidl/idl.yp
index d557590..dc8e293 100644
--- a/pidl/idl.yp
+++ b/pidl/idl.yp
@@ -16,119 +16,148 @@
%%
idl:
#empty { {} }
- | idl interface { push(@{$_[1]}, $_[2]); $_[1] }
- | idl coclass { push(@{$_[1]}, $_[2]); $_[1] }
- | idl import { push(@{$_[1]}, $_[2]); $_[1] }
- | idl include { push(@{$_[1]}, $_[2]); $_[1] }
- | idl importlib { push(@{$_[1]}, $_[2]); $_[1] }
- | idl cpp_quote { push(@{$_[1]}, $_[2]); $_[1] }
-;
-
-import: 'import' commalist ';' {{
- "TYPE" => "IMPORT",
--
Samba Shared Repository
More information about the samba-cvs
mailing list