Re: [Factor-talk] EBNF peg parser ensuring full parse

2017-01-20 Thread John Benediktsson
I think most EBNF uses would want to use ``parse-and-throw`` and not the
current ``parse-and-ignore``, but perhaps it makes sense to define both.  I
would be a little concerned about word explosion also, plus discoverability
/ subtle bugs if both ways are defined.

I like the idea of adding your additional parse words, and perhaps
refactoring a little bit their names ``(parse)`` more like ``parse``, and
``parse`` seems more like a ``parse-result``.  Pull requests welcome!


On Tue, Jan 17, 2017 at 12:46 PM, Chris Double 
wrote:

> On Wed, Jan 18, 2017 at 4:24 AM, Jon Harper 
> wrote:
> >
> > Should we add words to do this more easily ?
> > maybe
> > : parse* ( string parser -- ast remaining )
> > : parse-all ( string parser -- ast ) ! throws when remaining not empty
> >
> > Maybe EBNF: can define several words ? (but it's bad for grepability...)
>
> I think the parse* and parse-all words are a good approach, and
> document the usage with . Having EBNF: define multiple words can
> result in a bit of word explosion but I think it's useful too. You can
> get the functionality from an EBNF: word with code like:
>
> EBNF: foo rule= ("a" | "b")* ;EBNF
> "abbaXbba" "rule" \ foo rule (parse) remaining>>
>
> Having EBNF: generate a foo* and  a foo-remaining would probably be more
> useful.
>
> --
> http://bluishcoder.co.nz
>
> 
> --
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> ___
> Factor-talk mailing list
> Factor-talk@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/factor-talk
>
--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] EBNF peg parser ensuring full parse

2017-01-17 Thread Chris Double
On Wed, Jan 18, 2017 at 4:24 AM, Jon Harper  wrote:
>
> Should we add words to do this more easily ?
> maybe
> : parse* ( string parser -- ast remaining )
> : parse-all ( string parser -- ast ) ! throws when remaining not empty
>
> Maybe EBNF: can define several words ? (but it's bad for grepability...)

I think the parse* and parse-all words are a good approach, and
document the usage with . Having EBNF: define multiple words can
result in a bit of word explosion but I think it's useful too. You can
get the functionality from an EBNF: word with code like:

EBNF: foo rule= ("a" | "b")* ;EBNF
"abbaXbba" "rule" \ foo rule (parse) remaining>>

Having EBNF: generate a foo* and  a foo-remaining would probably be more useful.

-- 
http://bluishcoder.co.nz

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk