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 <
juanvaccare...@gmail.com> wrote:

> Doru,
> thanks for the answer.
>
> I'm doing it in the way you suggest.
>
> What I ment by know how to add to the result is the following: (Modifing a
> bit the example you gave me)
>
> a := 'AAA' asParser flatten ==> [:token | ResultSelfAdder new objectToAdd:
> token; selector:#addA ].
> b := 'BBB' asParser flatten ==> [:token | ResultSelfAdder new objectToAdd:
> token; selector:#addB ].
> c := 'CCC' asParser flatten ==> [:token | ResultSelfAdder new objectToAdd:
> token; selector:#addC ].
>
> 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'.
>
> niceObject := ParseResult new.
> result do: [:eachResult | eachResult addYourselfTo: niceObject]
>
>
> ResutlSelfAdder>>addYourselfTo: aParseResult
>     aParseResult perform: self selector with: self objectToAdd.
>
> I hope is clear now, Im pretty new at asking on mailists, and sometimes I
> forget to add crucial information
> Thanks again for your time!
>
> Juan
>
>
> On Tue, May 28, 2013 at 2:08 AM, Tudor Girba <tu...@tudorgirba.com> wrote:
>
>> 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 <
>> juanvaccare...@gmail.com> 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."
>>
>>
>>
>


-- 
www.tudorgirba.com

"Every thing has its own flow"

Reply via email to