Changeset 17044 for src/Pugs/Parser
- Timestamp:
- 07/14/07 04:25:29 (17 months ago)
- Location:
- src/Pugs/Parser
- Files:
-
- 4 modified
-
Literal.hs (modified) (4 diffs)
-
Operator.hs (modified) (2 diffs)
-
Types.hs (modified) (3 diffs)
-
Util.hs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Parser/Literal.hs
r16328 r17044 202 202 return (Val $ VStr [c]) 203 203 204 qInterpolateDelimiterMinimal :: Char -> RuleParser Exp205 qInterpolateDelimiterMinimal protectedChar = do206 char '\\'207 c <- oneOf (protectedChar:"\\")208 return (Val $ VStr ['\\',c])209 210 204 qInterpolateDelimiterBalanced :: Char -> RuleParser Exp 211 205 qInterpolateDelimiterBalanced protectedChar = do … … 256 250 QB_Single -> try qInterpolateQuoteConstruct 257 251 <|> (try $ qInterpolateDelimiter $ qfProtectedChar flags) 258 QB_Minimal -> try $ qInterpolateDelimiterMinimal $ qfProtectedChar flags259 252 QB_Balanced -> try $ qInterpolateDelimiterBalanced $ qfProtectedChar flags 260 253 QB_No -> mzero … … 438 431 -- qfProtectedChar is the character to be 439 432 -- protected by backslashes, if 440 -- qfInterpolateBackslash is Minimal orSingle or All433 -- qfInterpolateBackslash is Single or All 441 434 data QS_Flag = QS_No | QS_Yes | QS_Protect deriving (Show, Eq, Ord, Typeable) 442 data QB_Flag = QB_No | QB_ Minimal | QB_Balanced | QB_Single | QB_All deriving (Show, Eq, Ord, Typeable)435 data QB_Flag = QB_No | QB_Balanced | QB_Single | QB_All deriving (Show, Eq, Ord, Typeable) 443 436 444 437 data QFlags = MkQFlags … … 449 442 , qfInterpolateFunction :: !Bool 450 443 , qfInterpolateClosure :: !Bool 451 , qfInterpolateBackslash :: !QB_Flag -- No, Minimal,Single, All444 , qfInterpolateBackslash :: !QB_Flag -- No, Single, All 452 445 , qfProtectedChar :: !Char 453 446 , qfP5RegularExpression :: !Bool -
src/Pugs/Parser/Operator.hs
r16379 r17044 310 310 matchSlurpy _ = False 311 311 312 circumOps, rightSyn, chainOps, matchOps, nonSyn, listSyn, preSyn, optPreSyn, preOps, preSymOps, optSymOps, postOps, optOps, leftOps, rightOps, nonOps, listOps :: Set OpName -> [RuleOperator Exp]312 circumOps, rightSyn, chainOps, matchOps, nonSyn, listSyn, preSyn, preOps, preSymOps, postOps, optOps, leftOps, rightOps, nonOps, listOps :: Set OpName -> [RuleOperator Exp] 313 313 preSyn = ops $ makeOp1 Prefix "" Syn 314 optPreSyn = ops $ makeOp1 OptionalPrefix "" Syn315 314 preOps = (ops $ makeOp1 Prefix "&prefix:" doApp) . addHyperPrefix 316 315 preSymOps = (ops $ makeOp1 Prefix "&prefix:" doAppSym) . addHyperPrefix 317 optSymOps = (ops $ makeOp1 OptionalPrefix "&prefix:" doAppSym) . addHyperPrefix318 316 postOps = (ops $ makeOp1 Postfix "&postfix:" doApp) . addHyperPostfix 319 317 optOps = (ops $ makeOp1 OptionalPrefix "&prefix:" doApp) . addHyperPrefix … … 396 394 App (_Var "&prefix:?") Nothing [App app (Just x) args] 397 395 _ -> con (sigil ++ name) [x,y] 398 399 _STATE_START_RUN :: Var400 _STATE_START_RUN = cast "$?STATE_START_RUN"401 396 402 397 -- Just for the ".=" rewriting -
src/Pugs/Parser/Types.hs
r16417 r17044 8 8 RuleOperator, RuleOperatorTable, 9 9 getRuleEnv, modifyRuleEnv, putRuleEnv, insertIntoPosition, 10 clearDynParsers, enterBracketLevel, getCurrCharClass,charClassOf,10 clearDynParsers, enterBracketLevel, charClassOf, 11 11 addBlockPad, popClosureTrait, addClosureTrait, 12 12 -- Alternate Char implementations that keeps track of s_charClass … … 73 73 | otherwise = SymClass 74 74 75 {- 76 75 77 getCurrCharClass :: RuleParser CharClass 76 78 getCurrCharClass = fmap charClassOf (lookAhead anyToken) <|> return SpaceClass 77 79 78 {-79 80 getPrevCharClass :: RuleParser CharClass 80 81 getPrevCharClass = do … … 152 153 , s_knownVars :: !(Map Var MPad) -- ^ Map from variables to its associated scope 153 154 , s_outerVars :: !(Map MPad (Set Var)) -- ^ Map from scopes to vars that must not be declared in it 154 , s_freeVars :: !(Set (Var, LexPads)) -- ^ Set of free vars and the mpadlist to check with155 -- , s_freeVars :: !(Set (Var, LexPads)) -- ^ Set of free vars and the mpadlist to check with 155 156 , s_protoPad :: !Pad -- ^ Pad that's part of all scopes; used in param init 156 157 , s_closureTraits :: [TraitBlocks -> TraitBlocks] -
src/Pugs/Parser/Util.hs
r16435 r17044 104 104 , do rv <- p; return (rv, False) 105 105 ] 106 107 108 isOperatorName :: String -> Bool109 isOperatorName ('&':name) = any hasOperatorPrefix [name, tail name]110 where111 hasOperatorPrefix :: String -> Bool112 hasOperatorPrefix name = any (`isPrefixOf` name) grammaticalCategories113 isOperatorName _ = False114 106 115 107
