From 49a2f1fd817e0d0ea08316617b7af1859c164c1f Mon Sep 17 00:00:00 2001 From: "benoit.thomas" Date: Thu, 29 Jul 2021 21:49:47 +0900 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'parse.leg'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parse.leg | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/parse.leg b/parse.leg index a8cf8a1..70bdcdc 100644 --- a/parse.leg +++ b/parse.leg @@ -551,12 +551,13 @@ int printCode(Node *node) printf(" , %i }}; \n",node->String.len); return thisNumber; } - case Query: - printVariableName(node->type,nodeCount,1); - printf("= { .Query = { Query, &"); - printVariableName(node->Query.children[0]->type,nodeCount,0); - printf(" }};\n"); - return 0; + case Query: { + int i = printCode(node->Query.children[0]); + int thisNumber=nodeNumber++; + printf("Node node%i",thisNumber); + printf("= { .Query = { Query, &node%i }};\n",i); + return thisNumber; + } case Star: { int i = printCode(node->Star.children[0]); int thisNumber=nodeNumber++; @@ -565,26 +566,24 @@ int printCode(Node *node) return thisNumber; } case Plus:{ - int i = printCode(node->Star.children[0]); + int i = printCode(node->Plus.children[0]); int thisNumber=nodeNumber++; printf("Node node%i = { .Plus = { Plus, &node%i }};\n",thisNumber,i); return thisNumber; } case Or:{ - int i = printCode(node->Star.children[0]); - int j = printCode(node->Star.children[1]); + int i = printCode(node->Or.children[0]); + int j = printCode(node->Or.children[1]); int thisNumber=nodeNumber++; printf("Node node%i= { .Or = { Or, &node%i",thisNumber,i); - thisNumber=nodeNumber++; printf(" , &node%i }};\n",j); return thisNumber; } case And:{ - int i = printCode(node->Star.children[0]); - int j = printCode(node->Star.children[1]); + int i = printCode(node->And.children[0]); + int j = printCode(node->And.children[1]); int thisNumber=nodeNumber++; printf("Node node%i= { .And = { And, &node%i",thisNumber,i); - thisNumber=nodeNumber++; printf(" , &node%i }};\n",j); return thisNumber; } @@ -599,17 +598,16 @@ int printCode(Node *node) return thisNumber; } case Exc:{ - int i = printCode(node->Star.children[0]); + int i = printCode(node->Exc.children[0]); int thisNumber=nodeNumber++; printf("Node node%i = { .Exc = { Exc, &node%i }};\n",thisNumber,i); - return 0; + return thisNumber; } case Et: - printVariableName(node->type,nodeCount,1); - printf("= { .Et = { Et, &"); - printVariableName(node->Et.children[0]->type,nodeCount,0); - printf(" }};\n"); - return 0; + int i = printCode(node->Et.children[0]); + int thisNumber=nodeNumber++; + printf("Node node%i = { .Et = { Et, &node%i }};\n",thisNumber,i); + return thisNumber; case Id: printVariableName(node->type,nodeCount,1); printf("= { .Id = { Id, symb");