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]>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]> 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].
>> 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].
For more options, visit https://groups.google.com/d/optout.

Reply via email to