Changeset 26 for src/Parser.hs
- Timestamp:
- 02/14/05 06:02:18 (4 years ago)
- svk:copy_cache_prev:
- 1041
- Files:
-
- 1 modified
-
src/Parser.hs (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser.hs
r25 r26 17 17 -- Lexical units -------------------------------------------------- 18 18 19 ruleProgram :: RuleParser E xp19 ruleProgram :: RuleParser Env 20 20 ruleProgram = rule "program" $ do 21 whiteSpace 21 22 many (symbol ";") 22 23 rv <- option [] ruleStatementList 23 24 eof 24 retSyn ";" rv 25 env <- getState 26 return $ env { envBody = (Syn ";" rv) } 25 27 26 28 ruleBlock :: RuleParser Exp 27 29 ruleBlock = rule "block" $ braces $ do 30 whiteSpace 28 31 many (symbol ";") 29 32 rv <- option [] ruleStatementList … … 63 66 return (scope, multi, name) 64 67 pos <- getPosition 65 cxt <- option "Any" $ preSpace (ruleBareTrait "returns")68 cxt <- option "Any" $ ruleBareTrait "returns" 66 69 formal <- option Nothing $ return . Just =<< parens ruleSubParameters 67 70 body <- ruleBlock … … 85 88 ruleSubName = rule "subroutine name" $ do 86 89 star <- option "" $ string "*" 87 fixity <- option "prefix:" $ choice (map string$ words fixities)90 fixity <- option "prefix:" $ choice (map (try . string) $ words fixities) 88 91 c <- wordAlpha 89 92 cs <- many wordAny … … 352 355 parseProgram = do { whiteSpace ; x <- parseOp ; eof ; return x } 353 356 354 runRule :: Env -> (E xp -> a) -> RuleParser Exp-> String -> a355 runRule env f p str = f $ case ( runParser ruleProgram (envPad env)"" str ) of356 Left err -> Val $ VError (showErr err) (NonTerm $ errorPos err)357 Right ast -> ast357 runRule :: Env -> (Env -> a) -> RuleParser Env -> String -> a 358 runRule env f p str = f $ case ( runParser ruleProgram env "" str ) of 359 Left err -> env { envBody = Val $ VError (showErr err) (NonTerm $ errorPos err) } 360 Right env' -> env' 358 361 359 362 showErr err =
