Thank you both! I will merge your grammars into one beautiful and Mozilla
approved kv-parser :-)

Lpeg is so much nicer than writing miles of unreadable regular expressions!


Thanks again,
Anton


2015-02-01 19:18 GMT+01:00 Michael Trinkala <[email protected]>:

> Oops, didn't respond to all yesterday...
>
>
> ---------- Forwarded message ----------
> From: Michael Trinkala <[email protected]>
> Date: Sat, Jan 31, 2015 at 2:16 PM
> Subject: Re: [heka] Help with lpeg grammar for KV-tuples
> To: Anton Lindström <[email protected]>
>
>
> Added the message grammar and cleaned up the pair grammar.
> http://lpeg.trink.com/share/12944348678422514771
>
> Trink
>
> On Sat, Jan 31, 2015 at 5:11 AM, Anton Lindström <
> [email protected]> wrote:
>
>> Hi!
>>
>> I'm trying to write a lpeg grammar for parsing key-value tuples with a
>> "suffix message". I got the key-value part working, but I can't figure out
>> how to extract the rest of the message.
>> My input data looks like this:
>>
>> x="a string" status=200 hello world
>>
>> I want to parse this into:
>>   message: "hello world"
>>   x: "a string"
>>   status: 200
>>
>> The grammar currently looks like this (
>> http://lpeg.trink.com/share/17121232195128835076):
>>
>> local l = require 'lpeg'
>> l.locale(l)
>> local sp = l.space
>> local key = l.C((1 - l.S('= '))^1)
>> local rawString    = l.C((1 - sp)^1)
>> local quotedString = l.C((l.P('\\"') + (1 - l.P('"')))^0)
>> local integer      = l.digit^1 / tonumber
>>
>>
>> local double       = l.digit^1 * "." * l.digit^1 / tonumber
>>
>> local pair = (
>>   l.Cg(key * "=" * '"' * quotedString * '"' )  +
>>   l.Cg(key * "=" * (double + integer + rawString))
>> )  * sp^0
>>
>> grammar = l.Cf(l.Ct("") * pair^0, rawset)
>>
>>
>> I don't understand how to extract "hello world" into the result table.
>> Any pointers on how to do this?
>>
>>
>> Thanks,
>> Anton
>>
>> _______________________________________________
>> Heka mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/heka
>>
>>
>
>
> _______________________________________________
> Heka mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/heka
>
>
_______________________________________________
Heka mailing list
[email protected]
https://mail.mozilla.org/listinfo/heka

Reply via email to