Grammatica Hangs

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Grammatica Hangs

lmaturo
I have a grammar I was debugging, and after a fix to the grammar, Grammitica
just hangs with no output.  I've seen that it has code to detect infinite loops, but
it sure looks like it's in one that isn't detected.

Any idea of what I should try next?

-- Larry
_______________________________________________
Grammatica-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users
Reply | Threaded
Open this post in threaded view
|

Re: Grammatica Hangs

Per Cederberg
If it's not secret or too large, try posting the grammar file to this group.

Also. Are you using the Java or the .NET version?

Cheers,

/Per


On Wed, Apr 3, 2013 at 5:44 PM, <[hidden email]> wrote:
I have a grammar I was debugging, and after a fix to the grammar, Grammitica
just hangs with no output.  I've seen that it has code to detect infinite loops, but
it sure looks like it's in one that isn't detected.

Any idea of what I should try next?

-- Larry
_______________________________________________
Grammatica-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users



_______________________________________________
Grammatica-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users
Reply | Threaded
Open this post in threaded view
|

Re: Grammatica Hangs

lmaturo
I'm generating C#, and I'm using it on .Net, but my command line is:
"C:\Program Files (x86)\Java\jre6\bin\java" -jar lib/grammatica-1.5.jar  XSLTableCreator2.parser --parse Test.txt

The grammar is attached.





From:        Per Cederberg <[hidden email]>
To:        [hidden email]
Date:        04/03/2013 10:47 AM
Subject:        Re: [Grammatica-users] Grammatica Hangs
Sent by:        grammatica-users-bounces+lmaturo=[hidden email]




If it's not secret or too large, try posting the grammar file to this group.

Also. Are you using the Java or the .NET version?

Cheers,

/Per


On Wed, Apr 3, 2013 at 5:44 PM, <lmaturo@...> wrote:
I have a grammar I was debugging, and after a fix to the grammar, Grammitica
just hangs with no output.  I've seen that it has code to detect infinite loops, but

it sure looks like it's in one that isn't detected.


Any idea of what I should try next?


-- Larry

_______________________________________________
Grammatica-users mailing list

[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users

_______________________________________________
Grammatica-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users


_______________________________________________
Grammatica-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users

XSLTableCreator2.parser (8K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Grammatica Hangs

Per Cederberg
Ah, yes. It is always java... Guess it shows how much time has passed since I used Grammatica myself. ;-)

The problem is in the rule CellParameterList (found that out by commenting out the suspicious rule bodies one by one). It seems that the rule bodies "... (A B C?)? ..." are problematic, i.e. using nested optional elements. Better to break this out as separate rules.

The reason for the loop here is probably related to the Grammatica analysis of the tokens used in each rule. When too much is optional, this set grows very large and risks triggering these kind of issues.

Solution:

CellParameterList = "(" CellParameters ")" ;

CellParameters = CellParameter ("," CellParameter)* ;

CellParameter = "width" "=" NUMBER
    | "height" "=" NUMBER
    | "verticaloffset" "=" NUMBER
    ...

Better still might be to break out these even further:

HeightParameter = "height" "=" NUMBER ;
VerticalOffsetParameter = "verticaloffset" "=" NUMBER ;

A few further comments:

1. XML is hard to parse properly with a tool like Grammatica, since its structure cannot be fully captured in regex tokens and LL(k) productions in a sensible manner. That said, it is still possible to create something useful for machine-generated inputs.

2. The grammar would be easier and faster if fewer regexes were used. Use case-insensitive tokens for example. And create tokens that have a "higher level". Like this:

CASESENSITIVE = false
...
WHEN_START = "<xsl:when>"
WHEN_END = "</xsl:when>"

3. Use the token strings in the rules to make things more readable. Such as in the example Cell* rules above.

Cheers,

/Per



On Wed, Apr 3, 2013 at 5:57 PM, <[hidden email]> wrote:
I'm generating C#, and I'm using it on .Net, but my command line is:
"C:\Program Files (x86)\Java\jre6\bin\java" -jar lib/grammatica-1.5.jar  XSLTableCreator2.parser --parse Test.txt

The grammar is attached.





From:        Per Cederberg <[hidden email]>
To:        [hidden email]
Date:        04/03/2013 10:47 AM
Subject:        Re: [Grammatica-users] Grammatica Hangs
Sent by:        grammatica-users-bounces+lmaturo=[hidden email]




If it's not secret or too large, try posting the grammar file to this group.

Also. Are you using the Java or the .NET version?

Cheers,

/Per


On Wed, Apr 3, 2013 at 5:44 PM, <[hidden email]> wrote:
I have a grammar I was debugging, and after a fix to the grammar, Grammitica
just hangs with no output.  I've seen that it has code to detect infinite loops, but

it sure looks like it's in one that isn't detected.


Any idea of what I should try next?


-- Larry

_______________________________________________
Grammatica-users mailing list

[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users

_______________________________________________
Grammatica-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users


_______________________________________________
Grammatica-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users



_______________________________________________
Grammatica-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users
Reply | Threaded
Open this post in threaded view
|

Re: Grammatica Hangs

lmaturo
Thank you.  I didn't know about being able to turn off
case sensitivity.  That makes things a lot easier just
by itself.  I at one point put the token strings in the rules,
but had problems with it.  I'll try it again, now that the
grammar is more debugged.  I also wasn't sure about
whether breaking things down further was better or
worse.  I assumed more rules would be worse, so
I didn't break things down as far as might have.

Thank you again for your help.

-- Larry



From:        Per Cederberg <[hidden email]>
To:        [hidden email]
Date:        04/03/2013 11:49 AM
Subject:        Re: [Grammatica-users] Grammatica Hangs
Sent by:        grammatica-users-bounces+lmaturo=[hidden email]




Ah, yes. It is always java... Guess it shows how much time has passed since I used Grammatica myself. ;-)

The problem is in the rule CellParameterList (found that out by commenting out the suspicious rule bodies one by one). It seems that the rule bodies "... (A B C?)? ..." are problematic, i.e. using nested optional elements. Better to break this out as separate rules.

The reason for the loop here is probably related to the Grammatica analysis of the tokens used in each rule. When too much is optional, this set grows very large and risks triggering these kind of issues.

Solution:

CellParameterList = "(" CellParameters ")" ;

CellParameters = CellParameter ("," CellParameter)* ;

CellParameter = "width" "=" NUMBER

    | "height" "=" NUMBER
    | "verticaloffset" "=" NUMBER
    ...

Better still might be to break out these even further:

HeightParameter = "height" "=" NUMBER ;
VerticalOffsetParameter = "verticaloffset" "=" NUMBER ;

A few further comments:

1. XML is hard to parse properly with a tool like Grammatica, since its structure cannot be fully captured in regex tokens and LL(k) productions in a sensible manner. That said, it is still possible to create something useful for machine-generated inputs.

2. The grammar would be easier and faster if fewer regexes were used. Use case-insensitive tokens for example. And create tokens that have a "higher level". Like this:

CASESENSITIVE = false
...

WHEN_START = "<xsl:when>"
WHEN_END = "</xsl:when>"


3. Use the token strings in the rules to make things more readable. Such as in the example Cell* rules above.

Cheers,

/Per



On Wed, Apr 3, 2013 at 5:57 PM, <lmaturo@...> wrote:
I'm generating C#, and I'm using it on .Net, but my command line is:
"C:\Program Files (x86)\Java\jre6\bin\java" -jar lib/grammatica-1.5.jar  XSLTableCreator2.parser --parse Test.txt


The grammar is attached.






From:        
Per Cederberg <per@...>
To:        
[hidden email]
Date:        
04/03/2013 10:47 AM
Subject:        
Re: [Grammatica-users] Grammatica Hangs
Sent by:        
grammatica-users-bounces+lmaturo=mmm.com@...





If it's not secret or too large, try posting the grammar file to this group.

Also. Are you using the Java or the .NET version?

Cheers,

/Per


On Wed, Apr 3, 2013 at 5:44 PM, <
lmaturo@...> wrote:
I have a grammar I was debugging, and after a fix to the grammar, Grammitica

just hangs with no output.  I've seen that it has code to detect infinite loops, but

it sure looks like it's in one that isn't detected.


Any idea of what I should try next?


-- Larry

_______________________________________________
Grammatica-users mailing list

[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users

_______________________________________________
Grammatica-users mailing list

[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users


_______________________________________________
Grammatica-users mailing list

[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users

_______________________________________________
Grammatica-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users


_______________________________________________
Grammatica-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/grammatica-users