Larry says that 

   sub foo { ... }

is equivalent to 

   sub foo will do {...}

But then goes on to give the grammar for subroutine definitions as:

    rule lexicalsub :w {
        <lexscope> <type>?
        <subintro> <subname> <psignature>?
        <trait>*
        <block>
    }


    rule packagesub :w {
        <subintro> <subname> <psignature>?
        <trait>*
        <block>
    }


    rule anonsub :w {
        <subintro> <psignature>?
        <trait>*
        <block>
    }

which won't match C<< sub foo will do { ... } >>. I presume this is
another of those cases where the rules should be:

    rule lexicalsub :w {
        <lexscope> <type>?
        <subintro> <subname> <psignature>?
        <trait>*
        <block>?
    }


    rule packagesub :w {
        <subintro> <subname> <psignature>?
        <trait>*
        <block>?
    }


    rule anonsub :w {
        <subintro> <psignature>?
        <trait>*
        <block>?
    }

and rely on semantic analysis to catch the error and throw a sensible
exception?

-- 
Piers

Reply via email to