From 2d4d5e500bf45df47ffd3b028fcea2a1135fefb7 Mon Sep 17 00:00:00 2001 From: p9malino26 <pm3g19@soton.ac.uk> Date: Thu, 15 Apr 2021 11:15:13 +0100 Subject: [PATCH] Added AST rules --- Parser.y | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/Parser.y b/Parser.y index b4c1caf..c6c3ce4 100644 --- a/Parser.y +++ b/Parser.y @@ -1,26 +1,30 @@ -Prog : .in SetNames .out SetFuncCalls -SetNames : SetName - | SetName, SetNames + +Prog : .in SetNames .out SetFuncCalls {($2, $4)} + +SetNames : SetName {[$1]} + | SetNames, SetName VarNames : VarName - | VarName, VarNames + | VarName',' VarNames SetSetFuncCalls : SetFuncCall {[SetFuncCall]} | SetFuncCall; SetFuncCalls {SetFuncCall:SetFuncCalls} -SetFuncCall : filter '['SetName']' (Func) +SetFuncCall : filter '['SetName']' '('Func')' {FuncCall (PredefFunc Filter) [$3] [$6]} --filter[A](\r -> r[2] /= "") -Func : \'('VarNames')' -> Expr -\(r) -> r[1] == "hello" - -Expr : Expr == Expr - | Expr'['Nat']' - | String - | VarName - | Record - | true - | false +Func : \'('VarNames')' -> Expr {FuncDef [] $3 $6} +--\(r) -> r[1] == "hello" +Expr : Expr == Expr {FuncCall (PredefFunc IsEqual) [] [$1, $3]} + | Expr'['Nat']' {FuncCall (PredefFunc RecordIndex) [] [$3]} + | String {String $1} + | VarName {Var $1} + | Record {$1} + | true {Boolean True} + | false {Boolean False} +Record : '['Exprs']' {Record $2} +Exprs : Expr {[$1]} + | Expr','Exprs {$1:$2} -- GitLab