diff --git a/grammar.txt b/grammar.txt
index f54287ce2d4ffa07dd190abd64685d32b0ca9ad2..9be88bb9f1cb0346cca4ddfdcd03c503294ebfb2 100644
--- a/grammar.txt
+++ b/grammar.txt
@@ -39,6 +39,19 @@ Stmt -> If                               // 'if'
 FuncCall -> epsilon                      // _ | Operator, ')', '{', ';'
 FuncCall -> '(' Args ')'                 // '('
 
+ExprPattern -> '(' ExprPattern_ ')'      // '('
+ExprPattern_ -> epsilon                  // _ | ')'
+ExprPattern_ -> Expr ExprPattern__       // identifier, number_literal, '('
+ExprPattern__ -> epsilon                 // ')'
+ExprPattern__ -> ',' Expr ExprPattern__  // ','
+
+VarPattern -> '(' VarPattern_ ')'        // '('
+VarPattern_ -> epsilon                   // ')'
+VarPattern_ -> identifier VarPattern__   // identifier
+VarPattern__ -> epsilon                  // ')'
+VarPattern__ -> ',' identifier           // ','
+                VarPattern__
+
 
 For -> 'for' identifier 'in' Range Block // 'for'
 While -> 'while' Expr Block              // 'while'
@@ -56,3 +69,30 @@ Range_ -> '..' Expr                      // '..'
 Range_ -> '...' Expr                     // '...'
 
 
+
+
+
+
+
+Expr          -> LogExpr                     //
+
+LogExpr       -> ArithAddExpr LogExpr_       // '(', identifier, number_literal, '-'
+LogExpr_      -> epsilon                     // _
+LogExpr_      -> LogOp ArithAddExpr          // '==', '!=', '<', '>', '<=', '>='
+
+ArithAddExpr  -> ArithMulExpr ArithAddExpr_  // '(', identifier, number_literal, '-'
+ArithAddExpr  -> epsilon                     // _ |
+ArithAddExpr  -> AddOp ArithMulExpr          // '+', '-'
+
+ArithMulExpr  -> PrimaryExpr ArithMulExpr_   // '(', identifier, number_literal, '-'
+ArithMulExpr_ -> epsilon                     // _ |
+ArithMulExpr_ -> MulOp PrimaryExpr           // '*', '/'
+
+PrimaryExpr   -> '(' Expr ')'                // '('
+PrimaryExpr   -> identifier                  // identifier
+PrimaryExpr   -> number_literal              // number_literal
+PrimaryExpr   -> '-' PrimaryExpr             // '-'
+PrimaryExpr   -> '-' PrimaryExpr             // '!'
+
+
+