Looks like you left off a + in your regular expression for String. On Mon, Jun 13, 2016 at 2:59 AM, Hussein B. <hubaghd...@gmail.com> wrote:
> Thanks for your help. > > I tried this new grammar to match characters only: > > " > > TEST = OBJECT > > <WHITESPACE> = <#'\\s+'> > > OBJECT = CURLY_OPEN WHITESPACE* STRING WHITESPACE* (WHITESPACE* OBJECT > WHITESPACE*)* CURLY_CLOSE > > <CURLY_OPEN> = <'{'> > > <CURLY_CLOSE> = <'}'> > > STRING = #'[a-zA-Z]' > > " > > > (parse "{harden {James}}") > > > Parse error at line 1, column 3: > > {harden {James}} > > ^ > > Expected one of: > > "}" (followed by end-of-string) > > "{" > > #"\s+" > > On Sunday, June 12, 2016 at 10:07:01 PM UTC+2, puzzler wrote: >> >> Regular expressions are treated with their ordinary Java/Clojure, greedy >> semantics. >> >> Your regular expression for ITEM doesn't exclude whitespace or } >> characters, so ITEM is matching "Harden }" which leaves no characters left >> to match your grammar's right curly brace requirement. >> >> => (re-seq #"[^\"]+" "Harden }") >> ("Harden }") >> >> A solution would be to make the regex for ITEM more restrictive. >> >> On Sun, Jun 12, 2016 at 12:52 PM, Hussein B. <hubag...@gmail.com> wrote: >> >>> Hello, >>> >>> I'm playing around Instaparse library, starting very simple. >>> >>> For input like : >>> >>> { player } >>> >>> I created the following parser: >>> >>> (def ast >>> (ist/parser >>> "TEST = OBJECT >>> <WHITESPACE> = <#'\\s+'> >>> <CURLY_OPEN> = <'{'> >>> <CURLY_CLOSE> = <'}'> >>> ITEM = #'[^\"]+' >>> OBJECT = CURLY_OPEN WHITESPACE* ITEM WHITESPACE* CURLY_CLOSE")) >>> >>> >>> In the REPL: >>> >>> user=> (ast "{ Harden } ") >>> >>> Parse error at line 1, column 12: >>> >>> { Harden } >>> >>> ^ >>> >>> Expected one of: >>> >>> "}" (followed by end-of-string) >>> >>> #"\s+" >>> >>> >>> Any ideas what I'm doing wrong? >>> >>> Thanks for help. >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clo...@googlegroups.com >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+u...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/clojure?hl=en >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to clojure+u...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.