[squeak-dev] The Trunk: Compiler-nice.225.mcz

Eliot Miranda eliot.miranda at gmail.com
Wed Feb 22 17:14:26 UTC 2012


Bravo!

On Wed, Feb 22, 2012 at 5:57 AM, <commits at source.squeak.org> wrote:

> Nicolas Cellier uploaded a new version of Compiler to project The Trunk:
> http://source.squeak.org/trunk/Compiler-nice.225.mcz
>
> ==================== Summary ====================
>
> Name: Compiler-nice.225
> Author: nice
> Time: 22 February 2012, 2:57:07.872 pm
> UUID: 77bbb3ac-e939-4975-a139-f785dc94c17a
> Ancestors: Compiler-nice.224
>
> Remove the ugly hack in Parser>>expected: which was modifying the error
> message insertion mark depending on the fact that we were at end of token
> stream a,d/or end of source character stream.
>
> Replace it with a proper mark in Scanner>>scanToken that correctly take
> into account the two step of advance handled by the Scanner (stateful is
> harmful and require high precision surgery).
>
> While at it, set the error insertion mark after the $ character when
> offended by Scanner>>xDollar.
>
> This efficiently reduce the number of failures reported by
> CompilerNotifyngTest in its Tests-nice.144 version.
>
> =============== Diff against Compiler-nice.224 ===============
>
> Item was changed:
>  ----- Method: Parser>>expected: (in category 'error handling') -----
>  expected: aString
>        "Notify a problem at token 'here'."
>
> -       tokenType == #doIt ifTrue: [hereMark := hereMark + 1].
> -       hereType == #doIt ifTrue: [hereMark := hereMark + 1].
>        ^ self notify: aString , ' expected' at: hereMark + requestorOffset!
>
> Item was changed:
>  ----- Method: Scanner>>scanToken (in category 'expression types') -----
>  scanToken
>
>        [(tokenType := self typeTableAt: hereChar) == #xDelimiter]
>                whileTrue: [self step].  "Skip delimiters fast, there
> almost always is one."
>        mark := aheadChar == DoItCharacter
> +               ifTrue: [hereChar == DoItCharacter
> +                       ifTrue: [source position + 1]
> +                       ifFalse: [source position]]
> -               ifTrue: [source position]
>                ifFalse: [source position - 1].
>        (tokenType at: 1) == $x "x as first letter"
>                ifTrue: [self perform: tokenType "means perform to compute
> token & type"]
>                ifFalse: [token := self step asSymbol "else just unique the
> first char"].
>        ^token!
>
> Item was changed:
>  ----- Method: Scanner>>xDollar (in category 'multi-character scans') -----
>  xDollar
>        "Form a Character literal."
>
> +       aheadChar == DoItCharacter
> +               ifTrue:
> +                       [mark := mark + 1. "Let the notification lie
> behind the dollar"
> +                       ^self offEnd: 'A Character was expected'].
> -       aheadChar == DoItCharacter ifTrue: [^self offEnd: 'A Character was
> expected'].
>        self step. "pass over $"
>        token := self step.
>        tokenType := #character!
>
>
>


-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20120222/ce51f897/attachment.htm


More information about the Squeak-dev mailing list