on master help sign in
Parse qualified infix functions
51ba512Evan Czaplicki
compiler/Parse/Helpers.hs+6−1
@@ -38,6 +38,11 @@ lowVar = makeVar (lower <?> "lower case variable")
38capVar :: IParser String
38capVar :: IParser String
39capVar = makeVar (upper <?> "upper case variable")
39capVar = makeVar (upper <?> "upper case variable")
40
40
41+qualifiedVar :: IParser String
42+qualifiedVar = do
43+ vars <- many ((++) <$> capVar <*> string ".")
44+ (++) (concat vars) <$> lowVar
45+
41rLabel :: IParser String
46rLabel :: IParser String
42rLabel = lowVar
47rLabel = lowVar
43
48
@@ -55,7 +60,7 @@ reserved word =
55 <?> "reserved word '" ++ word ++ "'"
60 <?> "reserved word '" ++ word ++ "'"
56
61
57anyOp :: IParser String
62anyOp :: IParser String
58−anyOp = betwixt '`' '`' var <|> symOp <?> "infix operator (e.g. +, *, ||)"
63+anyOp = betwixt '`' '`' qualifiedVar <|> symOp <?> "infix operator (e.g. +, *, ||)"
59
64
60symOp :: IParser String
65symOp :: IParser String
61symOp = do op <- many1 (satisfy Help.isSymbol)
66symOp = do op <- many1 (satisfy Help.isSymbol)