summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Gibiansky <andrew.gibiansky@gmail.com>2014-07-18 23:54:26 -0500
committerAustin Seipp <austin@well-typed.com>2014-07-20 16:55:51 -0500
commit00dd05e44e4a9c7e7ddd7d99fffd1d937eeb26ad (patch)
treee3b31663058cc9503af60b221d260a84b712d710
parent18b2c46773eccb974bdd042a2f400edd23e193d7 (diff)
downloadhaskell-00dd05e44e4a9c7e7ddd7d99fffd1d937eeb26ad.tar.gz
Adding more parser exports and some documentation.
Summary: Add a few exports to be generated by the Happy parser module. Add documentation showing how to use the Happy parser. Test Plan: Validate Reviewers: carter, austin Reviewed By: austin Subscribers: phaskell, simonmar, relrod, carter Differential Revision: https://phabricator.haskell.org/D71
-rw-r--r--compiler/parser/Parser.y.pp31
1 files changed, 28 insertions, 3 deletions
diff --git a/compiler/parser/Parser.y.pp b/compiler/parser/Parser.y.pp
index a3c68c3e59..d592510aa6 100644
--- a/compiler/parser/Parser.y.pp
+++ b/compiler/parser/Parser.y.pp
@@ -16,8 +16,25 @@
-- http://ghc.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
-- for details
-module Parser ( parseModule, parseStmt, parseIdentifier, parseType,
- parseHeader ) where
+-- | This module provides the generated Happy parser for Haskell. It exports
+-- a number of parsers which may be used in any library that uses the GHC API.
+-- A common usage pattern is to initialize the parser state with a given string
+-- and then parse that string:
+--
+-- @
+-- runParser :: DynFlags -> String -> P a -> ParseResult a
+-- runParser flags str parser = unP parser parseState
+-- where
+-- filename = "\<interactive\>"
+-- location = mkRealSrcLoc (mkFastString filename) 1 1
+-- buffer = stringToStringBuffer str
+-- parseState = mkPState flags buffer location in
+-- @
+module Parser (parseModule, parseImport, parseStatement,
+ parseDeclaration, parseExpression, parseTypeSignature,
+ parseFullStmt, parseStmt, parseIdentifier,
+ parseType, parseHeader) where
+
import HsSyn
import RdrHsSyn
@@ -363,12 +380,20 @@ TH_QQUASIQUOTE { L _ (ITqQuasiQuote _) }
%monad { P } { >>= } { return }
%lexer { lexer } { L _ ITeof }
+%tokentype { (Located Token) }
+
+-- Exported parsers
%name parseModule module
+%name parseImport importdecl
+%name parseStatement stmt
+%name parseDeclaration topdecl
+%name parseExpression exp
+%name parseTypeSignature sigdecl
+%name parseFullStmt stmt
%name parseStmt maybe_stmt
%name parseIdentifier identifier
%name parseType ctype
%partial parseHeader header
-%tokentype { (Located Token) }
%%
-----------------------------------------------------------------------------