This looks Quite promising.. Thank you again.
From: [email protected] [mailto:[email protected]] On Behalf Of Nigel Thorne Sent: Sunday, March 09, 2014 8:25 AM To: [email protected] Subject: Re: [ruby.parslet] transformation on parser with optional fields Ok.. Here's a trick... If you "as" something twice.. you can transform the inner one for 'nil' (if it's optional) to something you want. https://gist.github.com/NigelThorne/9425445#file-example2-rb parser... rule(:format) { (offset.maybe.as(:offset_val).as(:offset) >> format_code).as(:format) } transform rule({:offset_val => simple(:v)}) { v || 5 } --- "No man is an island... except Philip" On Sun, Mar 9, 2014 at 12:23 AM, Foster, Ron <[email protected]<mailto:[email protected]>> wrote: Nigel, Thank you very much for putting that together. I was wondering if there might be a more general technique for optionals. The truth of the matter is that this is just a small piece of the grammar. There are several more elements, and some of those will also be optional. I was trying to avoid a combinatorial explosion to deal with every case. It sounds as if you were thinking the same, but hit some of the snags I ran into. You gave me some new ideas I hadn't thought of. That's always good. I very much appreciate that you looked into my question. From: [email protected]<mailto:[email protected]> [mailto:[email protected]<mailto:[email protected]>] On Behalf Of Nigel Thorne Sent: Friday, March 07, 2014 10:42 PM To: [email protected]<mailto:[email protected]> Subject: Re: [ruby.parslet] transformation on parser with optional fields see https://gist.github.com/NigelThorne/9425445#file-example-rb Have two rules, one for the default v ersion and one for the 'with offset' version. I thought you could transform to add a default value, then have other rules just match it... but that didn't work for me. Cheers Nigel --- "Man, I'm going to have so many chickens when this lot hatch!" On Sat, Mar 8, 2014 at 4:25 AM, Foster, Ron <[email protected]<mailto:[email protected]>> wrote: Hi. Am having some trouble composing a transform on a grammar that has an optional field. A simple example: I& #8217;m looking for a formatting code: e.g. " d ", But it could include an optional offset specification: " [16] d " If that optional field is there, I need to grab the number between the brackets. Ot herwise, I can assume it to be zero. I can parse both forms ok, But haven't figured out how to build a transform to handle both the presence or absence of the optional digits in brackets. Any suggestions would be greatly appreciated. Thanks.
