alias handling added
This commit is contained in:
+27
-3
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user