oh boy (pack)
This commit is contained in:
@@ -42,6 +42,7 @@ $octit = 0-7
|
||||
$hexit = [0-9 A-F a-f]
|
||||
$namechar = [$alpha $digit \' \#]
|
||||
$symchar = [$symbol \:]
|
||||
$nonwhite = $printable # $white
|
||||
$nl = [\n\r]
|
||||
$white_no_nl = $white # $nl
|
||||
|
||||
@@ -68,6 +69,7 @@ rlp :-
|
||||
"}" { constTok TokenRBrace }
|
||||
";" { constTok TokenSemicolon }
|
||||
"," { constTok TokenComma }
|
||||
"{-#" { constTok TokenLPragma `andBegin` pragma }
|
||||
|
||||
"let" { constTok TokenLet }
|
||||
"letrec" { constTok TokenLetrec }
|
||||
@@ -94,6 +96,19 @@ rlp :-
|
||||
\n { skip }
|
||||
}
|
||||
|
||||
<pragma>
|
||||
{
|
||||
"#-}" { constTok TokenRPragma `andBegin` 0 }
|
||||
"{" { constTok TokenLBrace }
|
||||
"}" { constTok TokenRBrace }
|
||||
";" { constTok TokenSemicolon }
|
||||
|
||||
$white { skip }
|
||||
\n { skip }
|
||||
|
||||
$nonwhite+ { lexWith TokenWord }
|
||||
}
|
||||
|
||||
{
|
||||
data Located a = Located Int Int Int a
|
||||
deriving Show
|
||||
@@ -123,6 +138,9 @@ data CoreToken = TokenLet
|
||||
| TokenLBrace
|
||||
| TokenRBrace
|
||||
| TokenSemicolon
|
||||
| TokenLPragma
|
||||
| TokenRPragma
|
||||
| TokenWord String
|
||||
| TokenEOF
|
||||
deriving Show
|
||||
|
||||
@@ -135,6 +153,7 @@ data SrcError = SrcError
|
||||
|
||||
data SrcErrorType = SrcErrLexical String
|
||||
| SrcErrParse
|
||||
| SrcErrUnknownPragma Name
|
||||
deriving Show
|
||||
|
||||
type Lexer = AlexInput -> Int -> Alex (Located CoreToken)
|
||||
|
||||
Reference in New Issue
Block a user