diff --git a/dbLoadTemplate b/dbLoadTemplate index fa034c4..8ab8245 100755 --- a/dbLoadTemplate +++ b/dbLoadTemplate @@ -1,6 +1,6 @@ #!/usr/bin/env perl -# $Header: /cvs/G/EPICS/App/scripts/dbLoadTemplate,v 1.6 2013/02/26 13:35:32 zimoch Exp $ +# $Header: /cvs/G/EPICS/App/scripts/dbLoadTemplate,v 1.7 2013/02/26 14:35:08 zimoch Exp $ use strict; @@ -67,26 +67,44 @@ sub expect { } sub handleRecord; +sub handleAlias; sub parseRecord { - eval { expect "g?record 'record' or 'grecord'" }; + eval { expect "g?record|alias 'record' or 'grecord' or 'alias'" }; # print STDERR "parseRecord $ARGV line $.\n"; if ($@) { $@ =~ /end of file/ or die $@; return 0; } + if ($_ eq "alias") { + my $name = expect "(", "$STRING quoted record name"; + my $alias = expect ",", "$STRING quoted alias name"; + expect ")"; + handleAlias $name, $alias; + return 1; + } + my $rtype = expect "(", "$WORD record type"; my $name = expect ",", "$STRING quoted record name"; expect ")", "{"; my @fields; + my @aliases; while (1) { - expect "field|} 'field'"; + expect "field|alias|} 'field or alias'"; + if ($_ eq "alias") { + push @aliases, expect "(", "$STRING quoted alias name"; + expect ")"; + next; + } last if $_ eq "}"; push @fields, expect "(", "$WORD field name"; push @fields, expect ",", "$STRING quoted field value"; expect ")"; } handleRecord $rtype,$name,@fields; + while (@aliases) { + handleAlias $name, shift @aliases; + } return 1; } @@ -186,4 +204,10 @@ sub handleRecord { print "}\n"; } +sub handleAlias { + my $rname = shift; + my $alias = shift; + print "alias(\"$rname\",\"$alias\")\n"; +} + parseFiles @ARGV