diff --git a/Parser.y b/Parser.y index b4c1caf54ed7e61d5e8944fe49704a3572d81aeb..c6c3ce4a349f25fe075d46c898f327b890dc10db 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}