Yes, here's how (currently depending on the implementation behavior, but this has worked for a long time).
For example, in the urls.private vocabulary there's a parser for URLs, and you can get the peg parser from an EBNF: word. \ parse-url "ebnf-parser" word-prop main of Most of our EBNF: words have been converted to use multiline strings, which avoid the escaping issue if you want to do the same: EBNF-PARSER: word [=[ ... EBNF string ... ]=] I've gone back and forth with triple-quote strings. They exist in some languages, but they also make parsing single quote strings a bit more difficult. We removed them while working on some new parser techniques, and the multilline vocabulary has a few other options like the example above. If people think we really should have them, we could revisit it. Best, John. On Sun, Nov 22, 2020 at 1:44 AM Alexander Ilin <ajs...@yandex.ru> wrote: > Hello! > > I'd like to use the peg.search vocab, and for that I need to pass it a > parser. > Most of the parsing words in peg.ebnf produce either a quotation that is > immediately called inline (EBNF[[), or produce a word that calls a parser > hidden inside it (EBNF:). > There are only two ways to pass a parser to peg.search:search: construct > it from words without using the EBNF syntax, or by using the undocumented > EBNF-PARSER: word. > > I managed to figure out how the EBNF-PARSER: works, and the unfortunate > thing about it is that the syntax is the following: > > EBNF-PARSER: word "...EBNF string..." > > The word will be what we need: ( -- parser ). > The unfortunate part is that it's very annoying having to escape all the > double quotes in the "EBNF string". > > So, now I have two questions. > 1. Is it possible to convert a word defined with EBNF: into a word > returning a parser, or to somehow extract the parser from inside it? Is > there maybe an undocumented word that could help with that, like by making > a wrapper? > 2. Is it possible to return the """ (triple double quoted) string > syntax, which doesn't require escaping single double quotes inside them? > > ---=====--- > Александр > > > > _______________________________________________ > Factor-talk mailing list > Factor-talk@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/factor-talk >
_______________________________________________ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk