diff options
-rw-r--r-- | source4/build/pidl/Makefile | 2 | ||||
-rw-r--r-- | source4/build/pidl/idl.yp | 15 | ||||
-rwxr-xr-x | source4/script/build_idl.sh | 5 |
3 files changed, 14 insertions, 8 deletions
diff --git a/source4/build/pidl/Makefile b/source4/build/pidl/Makefile index 76229ac925..e2cc7be3eb 100644 --- a/source4/build/pidl/Makefile +++ b/source4/build/pidl/Makefile @@ -1,5 +1,5 @@ idl.pm: idl.yp - yapp idl.yp + yapp -s idl.yp clean: rm -f idl.pm diff --git a/source4/build/pidl/idl.yp b/source4/build/pidl/idl.yp index 13f9b05df4..b38104fa02 100644 --- a/source4/build/pidl/idl.yp +++ b/source4/build/pidl/idl.yp @@ -5,6 +5,12 @@ +# the precedence actually doesn't matter at all for this grammer, but +# by providing a precedence we reduce the number of conflicts +# enormously +%left '-' '+' '&' '|' '*' '>' '.' '/' '(' ')' '[' ',' ';' + + ################ # grammer %% @@ -166,28 +172,25 @@ pointers: element_list1: #empty - | base_element ';' { [ $_[1] ] } | element_list1 base_element ';' { push(@{$_[1]}, $_[2]); $_[1] } ; element_list2: #empty - | 'void' - | base_element { [ $_[1] ] } + | 'void' + | base_element { [ $_[1] ] } | element_list2 ',' base_element { push(@{$_[1]}, $_[3]); $_[1] } ; array_len: #empty | '[' ']' { "*" } - | '[' '*' ']' { "*" } | '[' anytext ']' { "$_[2]" } ; property_list: - #empty - | '[' properties ']' { $_[2] } + #empty | property_list '[' properties ']' { util::FlattenArray([$_[1],$_[3]]); } ; diff --git a/source4/script/build_idl.sh b/source4/script/build_idl.sh index 8c04db6f37..c9594f8a80 100755 --- a/source4/script/build_idl.sh +++ b/source4/script/build_idl.sh @@ -4,7 +4,10 @@ FULLBUILD=$1 [ -d librpc/gen_ndr ] || mkdir -p librpc/gen_ndr || exit 1 -( cd build/pidl && make ) || exit 1 +if [ ! -f build/pidl/idl.pm -o build/pidl/idl.yp -nt build/pidl/idl.pm ]; then + echo Rebuilding IDL parser + ( cd build/pidl && make ) || exit 1; +fi PIDL="build/pidl/pidl.pl --output librpc/gen_ndr/ndr_ --parse --header --parser" TABLES="build/pidl/tables.pl --output librpc/gen_ndr/tables" |