Changeset 2336

Show
Ignore:
Timestamp:
04/25/05 21:14:16 (4 years ago)
Author:
autrijus
svk:copy_cache_prev:
3850
Message:

* print (4)+4 now prints 8, because the whitespace is no

longer tolerated.

Location:
src/Pugs
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Lexer.hs

    r2191 r2336  
    6767balancedDelim = P.balancedDelim perl6Lexer 
    6868decimal    = P.decimal perl6Lexer 
     69verbatimIdentifier = (<?> "identifier") $ do 
     70    c  <- identStart perl6Def 
     71    cs <- many (identLetter perl6Def) 
     72    return (c:cs) 
    6973 
    7074ruleWhiteSpaceLine = do 
  • src/Pugs/Parser.hs

    r2330 r2336  
    240240    return $ "&" ++ star ++ prefix ++ (c:cs) 
    241241 
    242 ruleSubName = rule "subroutine name" $ do 
     242ruleSubName = verbatimRule "subroutine name" $ do 
    243243    star    <- option "" $ string "*" 
    244244    fixity  <- option "" $ choice (map (try . string) $ words fixities) 
    245     names   <- identifier `sepBy1` (try $ string "::") 
     245    names   <- verbatimIdentifier `sepBy1` (try $ string "::") 
    246246    return $ "&" ++ star ++ fixity ++ concat (intersperse "::" names) 
    247247    where 
     
    796796    return $ \x -> Syn "()" [x, Syn "invs" invs, Syn "args" args] 
    797797 
    798 parseApply = lexeme $ do 
    799     name            <- ruleSubName 
    800     option ' ' $ char '.' 
    801     (invs,args)   <- parseParamList 
     798parseApply = tryRule "apply" $ do 
     799    name    <- ruleSubName 
     800    hasDot  <- option False $ try $ do { whiteSpace; char '.'; return True } 
     801    (invs, args) <- if hasDot 
     802        then parseNoParenParamList 
     803        else parseParenParamList <|> do { whiteSpace; parseNoParenParamList } 
    802804    return $ App name invs args 
    803805