Hi,
I am not sure what you mean when you say an object that knows how to add to the result. Basically, you would need to build for each production the object and collect the meaningful ones in the outer scope. Here is something that would work for your example: a := 'AAA' asParser ==> [:token | #a]. b := 'BBB' asParser ==> [:token | #b]. c := 'CCC' asParser ==> [:token | #c]. meaningful := a / b / c. other := (meaningful / #newline asParser) negate star flatten. log := (meaningful / other) delimitedBy: #newline asParser. result := log end parse: 'AAA AAA BBB CCC AAA other text CCC BBB other text'. result select: #isSymbol I am CC-ing the moose mailing list because these questions tend to find better answers there. Cheers, Doru On May 27, 2013, at 11:07 PM, Juan Ignacio Vaccarezza <[hidden email]> wrote: > Hi all, > > First of all thanks for the amazing work and aswers to all. Having said that, the problem: > > I need to parse a log, a model that represents the lo is the following: > > ' > AAA > AAA > BBB > Line I don't care which can contain anything that is not AAA BBB or CCC > CCC > AAA > CCC > BBB > Line I don't care which can contain anything that is not AAA BBB or CCC > ' > > I manage to write the grammar which parses this, but then I would lilke to have all the log info digested on a result object which behaves something like this: > > resutlObject as size --> 3 > resultObject bs size --> 2 > restulIbject cs size -->2 > > The option that im using now is that individual parsers (meaning the parser for AAA,BBB,CCC,etc) actually retunrs an object that knows how to add themselves to the result and then, I iterate over the parser's array result asking to each object to add itself to the result. > > Is there a better solution? > > Thanks to all, > Juan. -- www.tudorgirba.com "It's not how it is, it is how we see it." _______________________________________________ Moose-dev mailing list [hidden email] https://www.iam.unibe.ch/mailman/listinfo/moose-dev |
Hi, I would more do it the other way around (from large to small): niceObject := ParseResult new. result do: [:eachResult | niceObject add: eachResult ] Cheers, Doru On Tue, May 28, 2013 at 2:23 PM, Juan Ignacio Vaccarezza <[hidden email]> wrote:
"Every thing has its own flow"
_______________________________________________ Moose-dev mailing list [hidden email] https://www.iam.unibe.ch/mailman/listinfo/moose-dev |
Free forum by Nabble | Edit this page |