tools/PascalParser.hs
changeset 6895 31def088a870
parent 6891 ab9843957664
child 6897 a9126661f613
equal deleted inserted replaced
6894:555a8d8db228 6895:31def088a870
   406         , repeatCycle
   406         , repeatCycle
   407         , switchCase
   407         , switchCase
   408         , withBlock
   408         , withBlock
   409         , forCycle
   409         , forCycle
   410         , (try $ reference >>= \r -> string ":=" >> return r) >>= \r -> expression >>= return . Assignment r
   410         , (try $ reference >>= \r -> string ":=" >> return r) >>= \r -> expression >>= return . Assignment r
       
   411         , builtInFunction expression >>= \(n, e) -> return $ BuiltInFunctionCall e (SimpleReference (Identifier n BTUnknown))
   411         , procCall
   412         , procCall
   412         , char ';' >> comments >> return NOP
   413         , char ';' >> comments >> return NOP
   413         ]
   414         ]
   414     optional $ char ';'
   415     optional $ char ';'
   415     comments
   416     comments
   595         return $ InitTypeCast (Identifier t BTUnknown) i
   596         return $ InitTypeCast (Identifier t BTUnknown) i
   596         
   597         
   597 builtInFunction e = do
   598 builtInFunction e = do
   598     name <- choice $ map (\s -> try $ caseInsensitiveString s >>= \i -> notFollowedBy alphaNum >> return i) builtin
   599     name <- choice $ map (\s -> try $ caseInsensitiveString s >>= \i -> notFollowedBy alphaNum >> return i) builtin
   599     spaces
   600     spaces
   600     exprs <- parens pas $ commaSep1 pas $ e
   601     exprs <- option [] $ parens pas $ commaSep1 pas $ e
   601     spaces
   602     spaces
   602     return (name, exprs)
   603     return (name, exprs)
   603 
   604 
   604 systemUnit = do
   605 systemUnit = do
   605     string "system;"
   606     string "system;"