Skip to content
Snippets Groups Projects
Commit c8982829 authored by mnay1u19's avatar mnay1u19
Browse files

alex file

parent 29f6828b
No related branches found
No related tags found
No related merge requests found
--tokens
{
module Lexer where
}
.in
.out
\ No newline at end of file
%wrapper "basic"
$digit = 0-9
$alpha = [a-zA-Z]
tokens :-
$white+ ;
"--".* ;
Filter {\s -> TokenFilter }
SetName {\s -> TokenSetName s }
Func {\s -> TokenFunc }
Nat {\s -> TokenNat (read s) }
VarName {\s -> TokenVarName s }
Record {\s -> TokenRecord }
true {\s -> TokenTrue }
false {\s -> TokenFalse }
String {\s -> TokenString s }
'[' {\s -> TokenLeftSqBracket }
']' {\s -> TokenRightSqBracket }
"->" {\s -> TokenArrow }
"==" {\s -> TokenisEqual }
"/=" {\s -> TokenisNotEqual }
'(' {\s -> TokenLeftBracket }
')' {\s -> TokenRightBracket }
';' {\s -> TokenApp }
'\\' {\s -> TokenLambda }
',' {\s -> TokenComma }
'.' {\s -> TokenFullstop }
in {\s -> TokenInSet }
out {\s -> TokenOutSet }
$digit $digit+ {(\p s -> TokenInt p (read s))}
$alpha [$alpha $digit \_ \’]* { \p s -> TokenVar p s }
{
--token type:
data Token =
TokenFilter |
TokenSetName String |
TokenFunc |
TokenNat Int |
TokenVarName String |
TokenRecord |
TokenTrue |
TokenFalse |
TokenString String |
TokenLeftSqBracket |
TokenRightSqBracket |
TokenArrow |
TokenisEqual |
TokenisNotEqual |
TokenLeftBracket |
TokenRightBracket |
TokenApp |
TokenLambda |
TokenComma |
TokenFullStop |
TokenInSet |
TokenOutSet
deriving (Eq, Show)
}
......@@ -10,7 +10,7 @@ SetSetFuncCalls : SetFuncCall {[SetFuncCall]}
| SetFuncCall; SetFuncCalls {SetFuncCall:SetFuncCalls}
SetFuncCall : filter '['SetName']' (Func)
--filter[A](\r -> r[2] /= "")
Func : \'('VarNames')' -> Expr
\(r) -> r[1] == "hello"
......@@ -25,4 +25,5 @@ Expr : Expr == Expr
Record : '['Exprs']'
Exprs : Expr
| Expr','Exprs
| Expr','Exprs
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment