Browse Source

Mise à jour de 'parse.leg'

main
benoit.thomas 3 years ago
parent
commit
49a2f1fd81
1 changed files with 18 additions and 20 deletions
  1. +18
    -20
      parse.leg

+ 18
- 20
parse.leg View File

@ -551,12 +551,13 @@ int printCode(Node *node)
printf(" , %i }}; \n",node->String.len); printf(" , %i }}; \n",node->String.len);
return thisNumber; 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: { case Star: {
int i = printCode(node->Star.children[0]); int i = printCode(node->Star.children[0]);
int thisNumber=nodeNumber++; int thisNumber=nodeNumber++;
@ -565,26 +566,24 @@ int printCode(Node *node)
return thisNumber; return thisNumber;
} }
case Plus:{ case Plus:{
int i = printCode(node->Star.children[0]);
int i = printCode(node->Plus.children[0]);
int thisNumber=nodeNumber++; int thisNumber=nodeNumber++;
printf("Node node%i = { .Plus = { Plus, &node%i }};\n",thisNumber,i); printf("Node node%i = { .Plus = { Plus, &node%i }};\n",thisNumber,i);
return thisNumber; return thisNumber;
} }
case Or:{ 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++; int thisNumber=nodeNumber++;
printf("Node node%i= { .Or = { Or, &node%i",thisNumber,i); printf("Node node%i= { .Or = { Or, &node%i",thisNumber,i);
thisNumber=nodeNumber++;
printf(" , &node%i }};\n",j); printf(" , &node%i }};\n",j);
return thisNumber; return thisNumber;
} }
case And:{ 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++; int thisNumber=nodeNumber++;
printf("Node node%i= { .And = { And, &node%i",thisNumber,i); printf("Node node%i= { .And = { And, &node%i",thisNumber,i);
thisNumber=nodeNumber++;
printf(" , &node%i }};\n",j); printf(" , &node%i }};\n",j);
return thisNumber; return thisNumber;
} }
@ -599,17 +598,16 @@ int printCode(Node *node)
return thisNumber; return thisNumber;
} }
case Exc:{ case Exc:{
int i = printCode(node->Star.children[0]);
int i = printCode(node->Exc.children[0]);
int thisNumber=nodeNumber++; int thisNumber=nodeNumber++;
printf("Node node%i = { .Exc = { Exc, &node%i }};\n",thisNumber,i); printf("Node node%i = { .Exc = { Exc, &node%i }};\n",thisNumber,i);
return 0;
return thisNumber;
} }
case Et: 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: case Id:
printVariableName(node->type,nodeCount,1); printVariableName(node->type,nodeCount,1);
printf("= { .Id = { Id, symb"); printf("= { .Id = { Id, symb");

Loading…
Cancel
Save