]> gitweb.ps.run Git - toc/blobdiff - src/repr_get.h
complete grammar
[toc] / src / repr_get.h
index 7dbeea36bb5af1f195e252b7144edd63ac9f1261..afea882a22dcce082daf03cb36016bb8ca103b9f 100644 (file)
@@ -8,9 +8,8 @@ Body         getBody(TocParser::BodyContext * ctx);
 Function     getFunction(TocParser::FuncContext * ctx);\r
 Struct       getStruct(TocParser::StructDeclContext * ctx);\r
 Program      getProgram(TocParser::ProgContext * ctx);\r
-OperatorExpr getOperatorExpr(TocParser::OperatorExprContext * ctx);\r
-Expr         getExpr(TocParser::NonOpExprContext * ctx);\r
-Expr         getExpr(TocParser::NonSubscriptExprContext * ctx);\r
+//Expr         getExpr(TocParser::NonOpExprContext * ctx);\r
+//Expr         getExpr(TocParser::NonAccessExprContext * ctx);\r
 Expr         getExpr(TocParser::ExprContext * ctx);\r
 Stmt         getStmt(TocParser::StmtContext * ctx);\r
 \r
@@ -76,12 +75,15 @@ Program getProgram(TocParser::ProgContext * ctx) {
   }\r
   return result;\r
 }\r
-OperatorExpr getOperatorExpr(TocParser::OperatorExprContext * ctx) {\r
+OperatorExpr getOperatorExpr(TocParser::OpExprContext * ctx) {\r
   OperatorExpr result;\r
-  result.lexpr = std::make_unique<Expr>(getExpr(ctx->binaryOperator()->nonOpExpr(0)));\r
-  result.rexpr = std::make_unique<Expr>(getExpr(ctx->binaryOperator()->nonOpExpr(1)));\r
+  result.lexpr = std::make_unique<Expr>(getExpr(ctx->binaryOp()->nonOpExpr(0)));\r
+  result.rexpr = std::make_unique<Expr>(getExpr(ctx->binaryOp()->nonOpExpr(1)));\r
   \r
-  std::string op = ctx->binaryOperator()->BINARY_OPERATOR(0)->toString();\r
+  std::string op = ctx->binaryOp()->BINARY_OP(0)->toString();\r
+  for (auto o : ops) {\r
+\r
+  }\r
   if (op == "+")  result.type = OperatorType::Plus;\r
   if (op == "-")  result.type = OperatorType::Minus;\r
   if (op == "*")  result.type = OperatorType::Multiply;\r
@@ -121,7 +123,7 @@ Expr getExpr(TocParser::NonOpExprContext * ctx) {
   }\r
   return result;\r
 }\r
-Expr getExpr(TocParser::NonSubscriptExprContext * ctx) {\r
+Expr getExpr(TocParser::NonAccessExprContext * ctx) {\r
   Expr result;\r
   if (ctx->funcCall() != nullptr) {\r
     result.type = ExprType::Call;\r