http://qs1969.pair.com?node_id=411322


in reply to Re^2: Mysterious "syntax error"
in thread Mysterious "syntax error"

If you wanna take a look at the logic of the guess, take a look in toke.c and search for OP_MAPSTART. It's at line 4000 in the 5..8.5 source.

(I think) The logic for making the guess starts at the comment /* Is this a word before a => operator? */ a few lines below and extends for 100 lines or so. The comments, (if not the code :), make interesting reading as to just how complex this is.


Examine what is said, not who speaks.
"But you should never overestimate the ingenuity of the sceptics to come up with a counter-argument." -Myles Allen
"Think for yourself!" - Abigail        "Time is a poor substitute for thought"--theorbtwo         "Efficiency is intelligent laziness." -David Dunham
"Memory, processor, disk in that order on the hardware side. Algorithm, algorithm, algorithm on the code side." - tachyon

Replies are listed 'Best First'.
Re^4: Mysterious "syntax error"
by tye (Sage) on Dec 01, 2004 at 00:20 UTC

    That appears to be deciding how to interpret a bareword, not a '{'. I quickly looked but didn't find the code for guessing at the meaning of a '{', though.

    Actually, I'd like to see merlyn download the source from one of those 150 locations and show us how easy it is to find and interpret this code. (:

    - tye        

      Your right. Seems I missed a level of identation (easily done in that source). I also missed another, rather more obvious clue:

      # toke.c:3207 (5.8.5) /* This hack serves to disambiguate a pair of curlies * as being a block or an anon hash. Normally, expectation * determines that, but in cases where we're not in a * position to expect anything in particular (like inside * eval"") we have to resolve the ambiguity. This code * covers the case where the first term in the curlies is a * quoted string. Most other cases need to be explicitly * disambiguated by prepending a `+' before the opening * curly in order to force resolution as an anon hash. * * XXX should probably propagate the outer expectation * into eval"" to rely less on this hack, but that could * potentially break current behavior of eval"". * GSAR 97-07-21 */

      Examine what is said, not who speaks.
      "But you should never overestimate the ingenuity of the sceptics to come up with a counter-argument." -Myles Allen
      "Think for yourself!" - Abigail        "Time is a poor substitute for thought"--theorbtwo         "Efficiency is intelligent laziness." -David Dunham
      "Memory, processor, disk in that order on the hardware side. Algorithm, algorithm, algorithm on the code side." - tachyon