Skip to content

Conversation

@kanaka
Copy link

@kanaka kanaka commented May 11, 2018

This proposed change keeps track of all the paths take through the grammar during parsing. I'm using instaparse with this change to analyze a corpus of test cases and then use test.check to generate new tests cases that are probabilistically "similar" to the corpus. I use the path log to create a weight file for my test.check generators.

I don't necessarily consider this in final form but it's currently working for me so I'm creating this PR to get feedback/discussion.

I know that performance behavior of instaparse is critical. Do you have performance tests that I could use to test this change to characterize what impact if any it has on performance?

When a Tramp record is created by make-tramp, the grammar tree is
walked and the get-in style path is attached as metadata to each node
in the grammar tree. Also a new :path-log atom is added to the Tramp
record.

In push-result (during parsing) the current path is retrieved from the
metadata of node in the grammar tree being processed. The path is then
added to the :path-log of the tramp object.

When the final result is returned, the :path-log from the tramp object
is added to the metadata of the top of the result returned.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant