From 99ede94f5e3965620becbc8a9eeaa45f009b2116 Mon Sep 17 00:00:00 2001 From: simonmar Date: Thu, 4 Apr 2002 16:24:10 +0000 Subject: [haddock @ 2002-04-04 16:24:10 by simonmar] forgot one file --- src/HaddockParse.y | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/HaddockParse.y (limited to 'src') diff --git a/src/HaddockParse.y b/src/HaddockParse.y new file mode 100644 index 00000000..2402452c --- /dev/null +++ b/src/HaddockParse.y @@ -0,0 +1,55 @@ +{ +module HaddockParse (parseParas, parseString) where + +import HaddockLex +import HaddockTypes +} + +%tokentype { Token } + +%token SQUO { TokSpecial '\'' } + DQUO { TokSpecial '\"' } + '/' { TokSpecial '/' } + '[' { TokSpecial '[' } + ']' { TokSpecial ']' } + '*' { TokBullet } + '(n)' { TokNumber } + PARA { TokPara } + STRING { TokString $$ } + +%name parseParas doc +%name parseString seq + +%% + +doc :: { ParsedDoc } + : apara PARA doc { docAppend $1 $3 } + | apara { $1 } + +apara :: { ParsedDoc } + : ulpara { DocUnorderedList [$1] } + | olpara { DocOrderedList [$1] } + | para { $1 } + +ulpara :: { ParsedDoc } + : '*' para { $2 } + +olpara :: { ParsedDoc } + : '(n)' para { $2 } + +para : seq { docParagraph $1 } + +seq :: { ParsedDoc } + : elem seq { DocAppend $1 $2 } + | elem { $1 } + +elem :: { ParsedDoc } + : STRING { DocString $1 } + | '/' STRING '/' { DocEmphasis (DocString $2) } + | SQUO STRING SQUO { DocIdentifier $2 } + | DQUO STRING DQUO { DocModule $2 } + | '[' seq ']' { DocMonospaced $2 } + +{ +happyError = error "Parse error in doc string" +} -- cgit v1.2.3