diff --git a/Lexer.x b/Lexer.x
new file mode 100644
index 0000000000000000000000000000000000000000..63e7418c5317adf7d9f1ace4a58121b14ffe158f
--- /dev/null
+++ b/Lexer.x
@@ -0,0 +1,4 @@
+--tokens
+
+.in
+.out
\ No newline at end of file
diff --git a/Parser.y b/Parser.y
new file mode 100644
index 0000000000000000000000000000000000000000..112432f070447c55f03076f56a654787028e6442
--- /dev/null
+++ b/Parser.y
@@ -0,0 +1,28 @@
+Prog : .in SetNames .out SetFuncCalls
+
+SetNames : SetName
+    | SetName, SetNames
+    
+VarNames : VarName
+    | VarName, VarNames
+
+SetSetFuncCalls : SetFuncCall    {[SetFuncCall]}
+    | SetFuncCall; SetFuncCalls   {SetFuncCall:SetFuncCalls}
+
+SetFuncCall : filter '['SetName']' (Func)
+
+Func : \'('VarNames')' -> Expr
+\(r) -> r[1] == "hello"
+
+Expr : Expr == Expr
+    | Expr'['Nat']'
+    | String
+    | VarName
+    | Record
+    | true
+    | false
+
+
+Record : '['Exprs']'
+Exprs : Expr
+    | Expr','Exprs