X-Git-Url: https://ruin.nu/git/?p=proglang.git;a=blobdiff_plain;f=syntax.cf;h=fae1234c287f73180e784eb039d7a68169a81bb8;hp=28e93f9a4f1afb152c4ecb6997953411bc7d9b56;hb=cbe0bd3df1f1ddf458de751d28eb1df73708113c;hpb=a05f5aee2ceddec9721ce04ae596734524b80940 diff --git a/syntax.cf b/syntax.cf index 28e93f9..fae1234 100644 --- a/syntax.cf +++ b/syntax.cf @@ -16,16 +16,15 @@ SWhile. Stm ::= "while" "(" Exp ")" Stm ; -- SFor. Stm ::= "for" "(" Stm Exp ";" Exp ")" Stm ; SPrint. Stm ::= "print" Exp ";" ; --- VVar. Var ::= Ident ; --- VAss. Var ::= Ident "=" Exp; - BExp. Exp ::= Exp1 BOp Exp1 ; op1. Exp1 ::= Exp1 Op1 Exp2 ; define op1 e1 o e2 = OpExp e1 o e2 ; op2. Exp2 ::= Exp2 Op2 Exp3 ; define op2 e1 o e2 = OpExp e1 o e2 ; -EIncr. Exp3 ::= Ident "++" ; -EDecr. Exp3 ::= Ident "--" ; +postIncr. Exp3 ::= Ident "++" ; +define postIncr i = EPost i Plus ; +postDecr. Exp3 ::= Ident "--" ; +define postDecr i = EPost i Minus ; EVar. Exp3 ::= Ident ; EAss. Exp3 ::= Ident "=" Exp; EInt. Exp3 ::= Integer ; @@ -71,6 +70,7 @@ internal SNoop. Stm ::= ; internal EDefault. Exp ::= ; internal OpExp. Exp ::= Exp Op Exp ; internal NoType. Type ::= ; +internal EPost. Exp ::= Ident Op1 ; comment "/*" "*/" ; comment "//" ;