Changeset 2336
- Timestamp:
- 04/25/05 21:14:16 (4 years ago)
- svk:copy_cache_prev:
- 3850
- Location:
- src/Pugs
- Files:
-
- 2 modified
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Lexer.hs
r2191 r2336 67 67 balancedDelim = P.balancedDelim perl6Lexer 68 68 decimal = P.decimal perl6Lexer 69 verbatimIdentifier = (<?> "identifier") $ do 70 c <- identStart perl6Def 71 cs <- many (identLetter perl6Def) 72 return (c:cs) 69 73 70 74 ruleWhiteSpaceLine = do -
src/Pugs/Parser.hs
r2330 r2336 240 240 return $ "&" ++ star ++ prefix ++ (c:cs) 241 241 242 ruleSubName = rule "subroutine name" $ do242 ruleSubName = verbatimRule "subroutine name" $ do 243 243 star <- option "" $ string "*" 244 244 fixity <- option "" $ choice (map (try . string) $ words fixities) 245 names <- identifier `sepBy1` (try $ string "::")245 names <- verbatimIdentifier `sepBy1` (try $ string "::") 246 246 return $ "&" ++ star ++ fixity ++ concat (intersperse "::" names) 247 247 where … … 796 796 return $ \x -> Syn "()" [x, Syn "invs" invs, Syn "args" args] 797 797 798 parseApply = lexeme $ do 799 name <- ruleSubName 800 option ' ' $ char '.' 801 (invs,args) <- parseParamList 798 parseApply = 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 } 802 804 return $ App name invs args 803 805
