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