summaryrefslogtreecommitdiff
path: root/src/compiler/parser.h
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-04-15 21:54:04 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-04-15 21:54:04 +0330
commitcc12a3a946303ae89ce2076b3c17d5d35d7e864f (patch)
tree3429c081fecb65cf538b213e382016416dbca344 /src/compiler/parser.h
parent52fac2c9232d39b3fe98438a47c22f985b260f58 (diff)
add string
Diffstat (limited to 'src/compiler/parser.h')
-rw-r--r--src/compiler/parser.h9
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);