1#************************************************************************* 2# 3# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4# 5# Copyright 2000, 2010 Oracle and/or its affiliates. 6# 7# OpenOffice.org - a multi-platform office productivity suite 8# 9# This file is part of OpenOffice.org. 10# 11# OpenOffice.org is free software: you can redistribute it and/or modify 12# it under the terms of the GNU Lesser General Public License version 3 13# only, as published by the Free Software Foundation. 14# 15# OpenOffice.org is distributed in the hope that it will be useful, 16# but WITHOUT ANY WARRANTY; without even the implied warranty of 17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18# GNU Lesser General Public License version 3 for more details 19# (a copy is included in the LICENSE file that accompanied this code). 20# 21# You should have received a copy of the GNU Lesser General Public License 22# version 3 along with OpenOffice.org. If not, see 23# <http://www.openoffice.org/license.html> 24# for a copy of the LGPLv3 License. 25# 26#************************************************************************* 27 28$ARGV = shift @ARGV; 29my %tokens; 30 31my @files = glob("$ARGV/*.rnc"); 32 33open( TOKEN, ">tokens.txt" ) || die "can't write token file"; 34 35foreach( @files ) 36{ 37 print( "parsing $_\n" ); 38 open ( XSD, $_ ) || die "can't open token file: $!"; 39 while( <XSD> ) 40 { 41 chomp($_); 42 if( /element (\S*:)?(\S*)/ ) 43 { 44 $tokens{$2} = 1; 45 print("."); 46 } 47 elsif( /attribute (\S*:)?(\S*)/ ) 48 { 49 $tokens{$2} = 1; 50 print("."); 51 } 52 elsif( /list\s*\{/ ) 53 { 54 while( <XSD> ) 55 { 56 chomp($_); 57 last if( /^\s*\}/ ); 58 if( /"(\S*?)\"/ ) 59 { 60 $tokens{$1} = 1; 61 print("."); 62 } 63 } 64 } 65 } 66 close ( XSD ); 67 68 print("\n" ); 69} 70 71foreach( sort(keys(%tokens)) ) 72{ 73 print TOKEN "$_\n"; 74} 75close( TOKEN ); 76