Repository : ssh://darcs.haskell.org//srv/darcs/haddock

On branch  : ghc-7.6

http://hackage.haskell.org/trac/ghc/changeset/dfbe1c45879d8ae32845c72e5ae241fb1c6fe502

>---------------------------------------------------------------

commit dfbe1c45879d8ae32845c72e5ae241fb1c6fe502
Author: Simon Hengel <s...@typeful.net>
Date:   Tue Oct 9 12:41:25 2012 +0200

    Simplify lexing/parsing of properties
    
    In contrast to what we do for examples, we do not really need to capture
    the "prompt" here.

>---------------------------------------------------------------

 src/Haddock/Lex.x   |   10 ++--------
 src/Haddock/Parse.y |   16 +++++++++++-----
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/Haddock/Lex.x b/src/Haddock/Lex.x
index 35e6dd8..aec4c64 100644
--- a/src/Haddock/Lex.x
+++ b/src/Haddock/Lex.x
@@ -50,7 +50,7 @@ $ident    = [$alphanum 
\'\_\.\!\#\$\%\&\*\+\/\<\=\>\?\@\\\\\^\|\-\~\:]
 <0,para> {
  $ws* \n               ;
  $ws* \>               { begin birdtrack }
- $ws* prop\>            { strtoken TokPropertyPrompt `andBegin` propertyexpr }
+ $ws* prop \> .* \n    { strtoken TokProperty }
  $ws* \>\>\>            { strtoken TokExamplePrompt `andBegin` exampleexpr }
  $ws* [\*\-]           { token TokBullet `andBegin` string }
  $ws* \[               { token TokDefStart `andBegin` def }
@@ -62,7 +62,6 @@ $ident    = [$alphanum 
\'\_\.\!\#\$\%\&\*\+\/\<\=\>\?\@\\\\\^\|\-\~\:]
 -- beginning of a line
 <line> {
   $ws* \>              { begin birdtrack }
-  $ws* prop\>           { strtoken TokPropertyPrompt `andBegin` propertyexpr }
   $ws* \>\>\>          { strtoken TokExamplePrompt `andBegin` exampleexpr }
   $ws* \n              { token TokPara `andBegin` para }
   -- Here, we really want to be able to say
@@ -86,10 +85,6 @@ $ident    = [$alphanum 
\'\_\.\!\#\$\%\&\*\+\/\<\=\>\?\@\\\\\^\|\-\~\:]
 
 <exampleresult> .* \n  { strtokenNL TokExampleResult `andBegin` example }
 
-<propertyexpr> .* \n   { strtokenNL TokPropertyExpression `andBegin` property }
-
-<property> ()           { token TokPara `andBegin` para }
-
 <string,def> {
   $special                     { strtoken $ \s -> TokSpecial (head s) }
   \<\< [^\>]* \>\>              { strtoken $ \s -> TokPic (init $ init $ tail 
$ tail s) }
@@ -135,8 +130,7 @@ data Token
   | TokEmphasis String
   | TokAName String
   | TokBirdTrack String
-  | TokPropertyPrompt String
-  | TokPropertyExpression String
+  | TokProperty String
   | TokExamplePrompt String
   | TokExampleExpression String
   | TokExampleResult String
diff --git a/src/Haddock/Parse.y b/src/Haddock/Parse.y
index c8a1a55..0befe39 100644
--- a/src/Haddock/Parse.y
+++ b/src/Haddock/Parse.y
@@ -35,8 +35,7 @@ import Data.List  (stripPrefix)
        '-'     { (TokBullet,_) }
        '(n)'   { (TokNumber,_) }
        '>..'   { (TokBirdTrack $$,_) }
-       PPROMPT { (TokPropertyPrompt $$,_) }
-       PEXP    { (TokPropertyExpression $$,_) }
+       PROP    { (TokProperty $$,_) }
        PROMPT  { (TokExamplePrompt $$,_) }
        RESULT  { (TokExampleResult $$,_) }
        EXP     { (TokExampleExpression $$,_) }
@@ -75,15 +74,15 @@ defpara :: { (Doc RdrName, Doc RdrName) }
 para    :: { Doc RdrName }
        : seq                   { docParagraph $1 }
        | codepara              { DocCodeBlock $1 }
-       | property              { DocProperty $1 }
+       | property              { $1 }
        | examples              { DocExamples $1 }
 
 codepara :: { Doc RdrName }
        : '>..' codepara        { docAppend (DocString $1) $2 }
        | '>..'                 { DocString $1 }
 
-property :: { String }
-       : PPROMPT PEXP          { strip $2 }
+property :: { Doc RdrName }
+       : PROP                  { makeProperty $1 }
 
 examples :: { [Example] }
        : example examples      { $1 : $2 }
@@ -136,6 +135,13 @@ makeHyperlink input = case break isSpace $ strip input of
   (url, "")    -> Hyperlink url Nothing
   (url, label) -> Hyperlink url (Just . dropWhile isSpace $ label)
 
+makeProperty :: String -> Doc RdrName
+makeProperty s = case strip s of
+  'p':'r':'o':'p':'>':xs ->
+       DocProperty (dropWhile isSpace xs)
+  xs ->
+       error $ "makeProperty: invalid input " ++ show xs
+
 -- | Create an 'Example', stripping superfluous characters as appropriate
 makeExample :: String -> String -> [String] -> Example
 makeExample prompt expression result =



_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to