|
@ -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"); |
|
|