Hi, I have been working recently on LALR parser to parse atomese to JSON(code can be found here <https://github.com/Habush/annotation-scheme/blob/de66cd29c375321e5c7a14741a91c40ac40fb0b9/helpers/atomese-parser.scm#L98>). I initially used the same LALR parser generator used by GHOST found in *(system base lalr)* module with a similar lexer generator (in my case I precompiled the regex patterns for performance gain). However, I was getting very bad performance and it took way too long to parse moderately sized atomese files. It didn't help that the module didn't provided its own lexer generator and in the case of the GHOST code, the regex patterns were not precompiled which would further degrade the performance. As a result, I started looking at alternatives and found the nyacc project.
After rewriting the code using nyacc, I found that the nyacc parser generator on average is 5-6X faster than the previous parser generator (which used by GHOST) for the same file. In addition to the performance improvement, it removes the need to provide a manually written lexer generator, has support for mid-rule context actions for complicated production rules, has a better debugging and "logging" capabilities and (although minor) doesn't require to list all the terminal symbols. Also the project is also being actively developed. Hence, I deduced the GHOST parser could also benefit the same performance improvements and thought sharing this here. I am happy to work on porting the LALR parser from the current one to nyacc if this gets traction. -- You received this message because you are subscribed to the Google Groups "opencog" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/opencog. To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/f3d23857-71b2-40a8-b99d-86249f9bd71a%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
