On Sat, Apr 05, 2008 at 07:59:36PM -0000, John M. Dlugosz wrote: > I'm trying to fathom STD.pm. > > Maybe someone can help me trace through this one? > > How is > $obj!privA = 1; > parsed? > > Reading expect_term, it trys <noun>, then <variable> sees the > "$" and commits to the decision, reads "obj" as a <desigilname>, > then checks for a ".", but doesn't have similar logic for "!".
I'm not sure what you mean by "then checks for a '.'" -- I don't the dot in the <variable> rule isn't the same as the method dot. I think the way it parses is that we get $obj from the <noun> => <variable> sequence at the beginning of <expect_term>, and then !privA is parsed via the <post> => dotty:sym<!> sequence. So the parse tree looks something like: <expect_term> = { <noun> = { <variable> = { <sigil> # "$" <desigilname> # "obj" } } <post> = [ [0] = { <dotty> = { <sym> # "!" <methodop> = { <name> # "privA" } } } ] } Pm