diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/code_generator/code_generator.c | 10 | ||||
-rw-r--r-- | src/compiler/lexer/lexer.h | 1 | ||||
-rw-r--r-- | src/compiler/parser/parser.c | 7 | ||||
-rw-r--r-- | src/compiler/parser/parser.h | 24 |
4 files changed, 19 insertions, 23 deletions
diff --git a/src/compiler/code_generator/code_generator.c b/src/compiler/code_generator/code_generator.c index 0beca33..6236d34 100644 --- a/src/compiler/code_generator/code_generator.c +++ b/src/compiler/code_generator/code_generator.c @@ -106,7 +106,6 @@ bool nodeToInstruction(ParsedNode *node, Instruction **instructions, case PARSED_TOKEN_EOL: return nodeToInstruction(node->metadata, instructions, instructions_size, instructions_inserted); - break; case PARSED_TOKEN_PRINT: if (nodeToInstruction(node->metadata, instructions, instructions_size, instructions_inserted)) { @@ -120,7 +119,6 @@ bool nodeToInstruction(ParsedNode *node, Instruction **instructions, } else { return false; } - break; case PARSED_TOKEN_VALUE_STRING: { SizedString *string = nodeToString(node); if (string == NULL) { @@ -134,11 +132,11 @@ bool nodeToInstruction(ParsedNode *node, Instruction **instructions, instructions_inserted); return true; } - default: - fprintf(stderr, "unexpected token %s\n", - PARSED_TOKEN_STRINGS[node->token]); - return false; + case PARSED_TOKEN_NONE: + case PARSED_TOKEN_ROOT: } + fprintf(stderr, "unexpected token %s\n", PARSED_TOKEN_STRINGS[node->token]); + return false; } void insertInstruction(const Instruction instruction, diff --git a/src/compiler/lexer/lexer.h b/src/compiler/lexer/lexer.h index 7d60101..d6eef17 100644 --- a/src/compiler/lexer/lexer.h +++ b/src/compiler/lexer/lexer.h @@ -38,7 +38,6 @@ typedef struct Nodes { } Nodes; extern void printNodes(Nodes nodes); - extern void deleteNodes(Nodes nodes); extern Nodes lexer(char const *restrict str); diff --git a/src/compiler/parser/parser.c b/src/compiler/parser/parser.c index c679d39..7a486d9 100644 --- a/src/compiler/parser/parser.c +++ b/src/compiler/parser/parser.c @@ -96,11 +96,11 @@ void _printParsedNode(const ParsedNode *parsedNode, int indent) { case PARSED_TOKEN_VALUE_STRING: printf("\n"); break; - case PARSED_TOKEN_EOL: + case PARSED_TOKEN_EOL: { EOLMetadata *metadata = parsedNode->metadata; printf(",operand=\n"); _printParsedNode(metadata, indent + 1); - break; + } break; default: fprintf(stderr, "bad parsed token %d at compiler line %d\n", parsedNode->token, __LINE__); @@ -140,10 +140,11 @@ void deleteParsedNode(ParsedNode *parsedNode) { } break; case PARSED_TOKEN_VALUE_STRING: break; - case PARSED_TOKEN_EOL: + case PARSED_TOKEN_EOL: { EOLMetadata *metadata = parsedNode->metadata; deleteParsedNode(metadata); break; + } default: fprintf(stderr, "bad parsed token %d at compiler line %d\n", parsedNode->token, __LINE__); diff --git a/src/compiler/parser/parser.h b/src/compiler/parser/parser.h index 006fc59..efabc8c 100644 --- a/src/compiler/parser/parser.h +++ b/src/compiler/parser/parser.h @@ -16,14 +16,9 @@ extern const char *PARSED_TOKEN_STRINGS[]; typedef struct ParseOrder { bool ltr; size_t size; - Token tokens[10]; // TODO: change this + Token tokens[10]; // TODO: change this } ParseOrder; -typedef struct ScopeMetadata { - struct ParsedNode **operands; - size_t operands_size; -} ScopeMetadata; - typedef struct ParsedNode { char const *strBegin; char const *strEnd; @@ -32,31 +27,34 @@ typedef struct ParsedNode { struct ParsedNode *parent; } ParsedNode; +typedef struct ScopeMetadata { + struct ParsedNode **operands; + size_t operands_size; +} ScopeMetadata; typedef ParsedNode PrintMetadata; typedef ParsedNode EOLMetadata; extern ParsedNode *newParsedNode(char const *strBegin, char const *strEnd, ParsedToken token, void *metadata, ParsedNode *parent); -extern void _printParsedNode(const ParsedNode *parsedNode,int indent); +extern void _printParsedNode(const ParsedNode *parsedNode, int indent); extern void printParsedNode(const ParsedNode *parsedNode); -extern ParsedNode *getUntilCommonFather(ParsedNode *parsedNode,ParsedNode *parent); +extern ParsedNode *getUntilCommonFather(ParsedNode *parsedNode, + ParsedNode *parent); extern void deleteParsedNode(ParsedNode *parsedNode); extern ParsedNode *parser(Nodes lexedNodes); extern ScopeMetadata *parserScope(Node *nodesBegin, Node *nodesEnd, - ParsedNode *parent); + ParsedNode *parent); extern ParsedNode *parseNode(Node *nodesBegin, Node *nodesEnd, Node *node, ParsedNode *parent); extern ParsedNode *parserPrint(Node *nodesBegin, Node *nodesEnd, Node *node, ParsedNode *parent); - extern ParsedNode *parseParenthesis(Node *nodesBegin, Node *nodesEnd, Node *node, ParsedNode *parent); - extern ParsedNode *parseString(Node *node, ParsedNode *parent); - -extern ParsedNode *parseEOL(Node *nodesBegin, Node *nodesEnd,Node *node, ParsedNode *parent); +extern ParsedNode *parseEOL(Node *nodesBegin, Node *nodesEnd, Node *node, + ParsedNode *parent); |