#include #include "token.h" #ifndef NODE_H #define NODE_H typedef enum { // Stand-alone elements // cannot contain text modifiers NT_Header1, NT_Header2, NT_Header3, NT_Header4, NT_BlockCode, // Container elements // can contain text modifiers NT_Paragraph, NT_UnorderedList, NT_OrderedList, NT_BlockQuote, // Contained elements (cannot be bare) // text modifiers NT_InlineCode, NT_Bold, NT_Underline, // something went wrong NT_Error, } NodeType; typedef struct Node { NodeType type; struct Node* next; } Node; typedef struct { NodeType type; struct Node* next; char* rawText; } HeaderNode; typedef struct { NodeType type; struct Node* next; char* rawText; } CodeBlockNode; typedef struct { NodeType type; struct Node* next; char* error; } ErrorNode; /* typedef struct { NodeType type; struct Node* next; } ParagraphNode; */ Node* ParseNodes(Token* firstToken); char* NodeTypeString(NodeType t); #endif