]> hydra-www.ietfng.org Git - dyna2/commitdiff
Maybe fix aggregator parsing
authorNathaniel Wesley Filardo <nwf@cs.jhu.edu>
Wed, 12 Dec 2012 02:38:27 +0000 (21:38 -0500)
committerNathaniel Wesley Filardo <nwf@cs.jhu.edu>
Wed, 12 Dec 2012 02:38:27 +0000 (21:38 -0500)
Dot is not an aggregator

src/Dyna/ParserHS/Parser.hs

index 7e48e430eb81ebd7f3b304cc06075be662dd5157..c7bf3140c9ed48d49478c9bfefca9bc33075c60d 100644 (file)
@@ -136,6 +136,19 @@ dynaOperStyle = IdentifierStyle
   , styleReservedHighlight = ReservedOperator
   }
 
+dynaAggStyle :: TokenParsing m => IdentifierStyle m
+dynaAggStyle = IdentifierStyle
+  { styleName = "Aggregator"
+  , styleStart   =     (oneOfSet $ CS.delete '.' usualpunct)
+                   <|> lower
+  , styleLetter  =     (oneOfSet $ usualpunct)
+                   <|> alphaNum
+  , styleReserved = mempty
+  , styleHighlight = Operator
+  , styleReservedHighlight = ReservedOperator
+  }
+
+
 dynaAtomStyle :: TokenParsing m => IdentifierStyle m
 dynaAtomStyle = IdentifierStyle
   { styleName = "Atom"
@@ -302,10 +315,7 @@ dtexpr = unDL texpr
 rulepfx :: DeltaParsing f => f ([Spanned Term] -> Spanned Term -> Rule)
 rulepfx = Rule <$> term
                <*  whiteSpace
-               -- XXX probably a better way to do this..
-               -- probably want aggregators have suffix =
-               <*> ((bsf $ some $ satisfy $ not . isSpace) <?> "Aggregator")
-               <*  whiteSpace
+               <*> (bsf $ ident dynaAggStyle <?> "Aggregator")
 
 rule :: DeltaParsing m => m Rule
 rule = choice [