diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-04-15 21:54:04 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-04-15 21:54:04 +0330 |
commit | cc12a3a946303ae89ce2076b3c17d5d35d7e864f (patch) | |
tree | 3429c081fecb65cf538b213e382016416dbca344 /src/compiler/parser.h | |
parent | 52fac2c9232d39b3fe98438a47c22f985b260f58 (diff) |
add string
Diffstat (limited to 'src/compiler/parser.h')
-rw-r--r-- | src/compiler/parser.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/compiler/parser.h b/src/compiler/parser.h index 120ae39..326849b 100644 --- a/src/compiler/parser.h +++ b/src/compiler/parser.h @@ -15,6 +15,7 @@ typedef enum ParserToken { PARSER_TOKEN_VALUE_FLOAT, PARSER_TOKEN_VALUE_BOOL, PARSER_TOKEN_VALUE_CHAR, + PARSER_TOKEN_VALUE_STRING, PARSER_TOKEN_TYPE_TYPE, PARSER_TOKEN_TYPE_FUNCTION, @@ -139,6 +140,11 @@ typedef f128 ParserNodeFloatMetadata; typedef ParserNodeIntMetadata ParserNodeCharMetadata; +typedef struct ParserNodeStringMetadata { + char *begin; + char *end; +} ParserNodeStringMetadata; + typedef struct ParserNodeInfixMetadata { ParserNode *left; ParserNode *right; @@ -192,6 +198,7 @@ ParserNode *parserPutc(LexerNode *node, LexerNode *end, ParserNode *parent); ParserNode *parserReturn(LexerNode *node, LexerNode *end, ParserNode *parent); ParserNode *parserNumber(LexerNode *node, ParserNode *parent); ParserNode *parserChar(LexerNode *node, ParserNode *parent); +ParserNode *parserString(LexerNode *node, ParserNode *parent); ParserNode *parserBoolValue(LexerNode *node, ParserNode *parent); ParserNode *parserEol(LexerNode *node, LexerNode *begin, ParserNode *parent); ParserNode *parserComma(LexerNode *node, LexerNode *begin, ParserNode *parent); @@ -228,3 +235,5 @@ bool isAllArguments(const ParserNodeArray *nodes); bool isExpression(ParserNode *node); bool isType(ParserNode *node); bool isValue(ParserNode *node); + +char escapeChar(char *begin,char *end, bool *success); |