I am making steady progress thanks to your help. Now parentheses
require some different logic
I have a text fragment
*VALUE NT_Services.Display_Name_U *IN
('MSSQL$SQL027301','SQLAgent$SQL027301','SQL Server Agent
(SQL027303)','SQL Server (SQL027303)')
BNF rule looks like this
<value_condition_in> ::= '*VALUE' <attribute> '*IN' '('
<comma_separated_list> ')' action => do_value_in
The problem I have is that there is a ')' within the quoted
string and it is matching on this rule... so only a partial
string is worked on.
That results in a parse error. [The good news for me is that this
is happening on maybe 0.5% of the data.]
I will put a gist if needed,
but was hoping someone could point me to an example of handling
this sort of case.
John Alvord
On Wed, Mar 19, 2014 at 10:23 AM, John Alvord
<[email protected] <mailto:[email protected]>>
wrote:
Thanks also, Ron. I have a lot to learn about good Perl
style. My examples are just the starting point in an
investigation.
After some head scratching, I installed Marpa::R2 2.082000
[instead of 2.080000 - current Activestate level] and things
started working very much better indeed. It was an
Activestate on Windows learning experience - had to install
mingw64 and then run cpan. Not a big deal.
Now things are moving along nicely.
This mini language translates to SQL of sorts. That SQL is
used to gather performance data - mostly from
Linux/Unix/Windows/zOS agents. There is filtering involved
and sometimes filtering happens on the agents and sometimes
the data gets transmitted to a server for filtering. BIG
performance differences. There has been a question forever
about how to determine agent filtering or server filtering -
so people can fix/avoid performance problems. This will be
folded into a public example tool which any customer can
use... and I can use on problem reports.
Also, I have collected dozens of categories of cases that
cause performance problems or just plain do not work. A later
extension will expose those in sort of a "critic" report.
Thanks again!!
John Alvord
On Tue, Mar 18, 2014 at 5:48 PM, Ron Savage
<[email protected] <mailto:[email protected]>> wrote:
Actually, I made some other changes:
use Data::Dumper::Concise; # For Dumper().
And:
sub My_Actions::do_attribute
{
my($hash, $t1, $t2, $t3) = @_;
=pod
print "do_attribute()\n";
print '$t1: ', Dumper($t1);
print '$t2: ', Dumper($t2);
print '$t3: ', Dumper($t3);
=cut
return [$t1, $t2, $t3];
}
sub My_Actions::do_basic {
my ($hash, $t1, $t2, $t3, $t4 ) = @_;
=pod
print "do_basic()\n";
print '$t1: ', Dumper($t1);
print '$t2: ', Dumper($t2);
print '$t3: ', Dumper($t3);
print '$t4: ', Dumper($t4);
=cut
return [$t1, $t2, $t3, $t4];
}
The output is:
Setting trace_terminals option
Setting trace_values option
Lexer "L0" accepted lexeme L1c1-3: '*IF'; value="*IF"
Lexer "L0" discarded lexeme L1c4: ws
Lexer "L0" accepted lexeme L1c5-10: '*VALUE'; value="*VALUE"
Lexer "L0" discarded lexeme L1c11: ws
Lexer "L0" accepted lexeme L1c12-33: id;
value="i5OS_IOA_Cache_Battery"
Lexer "L0" accepted lexeme L1c34: '.'; value="."
Lexer "L0" accepted lexeme L1c35-39: id; value="State"
Lexer "L0" discarded lexeme L1c40: ws
Lexer "L0" accepted lexeme L1c41-43: '*EQ'; value="*EQ"
Lexer "L0" discarded lexeme L1c44: ws
Lexer "L0" forgave lexeme L1c45-49: id; value="Error"
Lexer "L0" accepted lexeme L1c45-49: literal_word;
value="Error"
Popping 4 values to evaluate R2:4@1-7C11@6, rule: 2:
basic_condition -> [Lex-1] attribute comparison
compare_string
Calculated and pushed value: [
'*VALUE',
[
[
'i5OS_IOA_Cache_Battery'
],
'.',
[
'State'
]
],
[
'*EQ'
],
[
[
'Error'
]
]
]
--
You received this message because you are subscribed to
the Google Groups "marpa parser" group.
To unsubscribe from this group and stop receiving emails
from it, send an email to
[email protected]
<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the
Google Groups "marpa parser" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to [email protected]
<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.