tools/PascalParser.hs
changeset 6391 bd5851ab3157
parent 6388 14718b2685a3
child 6397 6eb58ae8b510
equal deleted inserted replaced
6390:3807d4cad077 6391:bd5851ab3157
    83     | InitNumber String
    83     | InitNumber String
    84     | InitHexNumber String
    84     | InitHexNumber String
    85     | InitString String
    85     | InitString String
    86     | InitChar String
    86     | InitChar String
    87     | BuiltInFunction String [InitExpression]
    87     | BuiltInFunction String [InitExpression]
       
    88     | InitSet [Identifier]
    88     | InitNull
    89     | InitNull
    89     deriving Show
    90     deriving Show
    90 
    91 
    91 builtin = ["succ", "pred", "low", "high"]
    92 builtin = ["succ", "pred", "low", "high"]
    92     
    93     
   575 
   576 
   576 initExpression = buildExpressionParser table term <?> "initialization expression"
   577 initExpression = buildExpressionParser table term <?> "initialization expression"
   577     where
   578     where
   578     term = comments >> choice [
   579     term = comments >> choice [
   579         liftM (uncurry BuiltInFunction) $ builtInFunction initExpression 
   580         liftM (uncurry BuiltInFunction) $ builtInFunction initExpression 
       
   581         , try $ brackets pas (commaSep pas $ iD) >>= return . InitSet
   580         , try $ parens pas (commaSep pas $ initExpression) >>= return . InitArray
   582         , try $ parens pas (commaSep pas $ initExpression) >>= return . InitArray
   581         , parens pas (semiSep pas $ recField) >>= return . InitRecord
   583         , parens pas (semiSep pas $ recField) >>= return . InitRecord
   582         , try $ integer pas >>= \i -> notFollowedBy (char '.') >> (return . InitNumber . show) i
   584         , try $ integer pas >>= \i -> notFollowedBy (char '.') >> (return . InitNumber . show) i
   583         , try $ float pas >>= return . InitFloat . show
   585         , try $ float pas >>= return . InitFloat . show
   584         , try $ integer pas >>= return . InitNumber . show
   586         , try $ integer pas >>= return . InitNumber . show