From c8982829065648538724ee23384db5e6e5599647 Mon Sep 17 00:00:00 2001
From: Maram <mnay1u19@soton.ac.uk>
Date: Mon, 12 Apr 2021 14:13:22 +0100
Subject: [PATCH] alex file

---
 Lexer.x  | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 Parser.y |  5 +++--
 2 files changed, 67 insertions(+), 5 deletions(-)

diff --git a/Lexer.x b/Lexer.x
index 63e7418..28114f5 100644
--- a/Lexer.x
+++ b/Lexer.x
@@ -1,4 +1,65 @@
---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)
+
+
+}
diff --git a/Parser.y b/Parser.y
index 112432f..475ab1c 100644
--- a/Parser.y
+++ b/Parser.y
@@ -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
+
-- 
GitLab