alias handling added

This commit is contained in:
zimoch
2013-02-26 14:35:08 +00:00
parent c9195005cf
commit 39cba73088
+27 -3
View File
@@ -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