condense string flags

This commit is contained in:
Allen Webster
2021-06-30 14:09:32 -04:00
parent 52f840f5ab
commit 3648548cfe
5 changed files with 100 additions and 112 deletions
@@ -1,14 +1,14 @@
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000110000000000000000010000000000000000000000000000000000000000, Flags: 0000110000000001000000000000000000000000000000000000000000000000,
Flag Names: BraceLeft, BraceRight, Flag Names: BraceLeft, BraceRight, Identifier,
String: foo, String: foo,
Whole String: foo, Whole String: foo,
Tag: @struct Tag: @struct
Node { Node {
Kind: Label, Kind: Label,
Flags: 1100000010000000000000010000000000000000000000000000000000000000, Flags: 1100000010000001000000000000000000000000000000000000000000000000,
Flag Names: ParenLeft, ParenRight, BeforeComma, Flag Names: ParenLeft, ParenRight, BeforeComma, Identifier,
String: x, String: x,
Whole String: x, Whole String: x,
Node { Node {
@@ -17,16 +17,16 @@ Node {
Flag Names: BracketLeft, BracketRight, Flag Names: BracketLeft, BracketRight,
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000000000000000000010000000000000000000000000000000000000000, Flags: 0000000000000001000000000000000000000000000000000000000000000000,
Flag Names: , Flag Names: Identifier,
String: MAX_PATH, String: MAX_PATH,
Whole String: MAX_PATH, Whole String: MAX_PATH,
} }
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000000000000000000010000000000000000000000000000000000000000, Flags: 0000000000000001000000000000000000000000000000000000000000000000,
Flag Names: , Flag Names: Identifier,
String: char, String: char,
Whole String: char, Whole String: char,
} }
@@ -35,36 +35,36 @@ Node {
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000110000000000000000010000000000000000000000000000000000000000, Flags: 0000110000000001000000000000000000000000000000000000000000000000,
Flag Names: BraceLeft, BraceRight, Flag Names: BraceLeft, BraceRight, Identifier,
String: bar, String: bar,
Whole String: bar, Whole String: bar,
Tag: @struct Tag: @struct
Tag: @test_tag Tag: @test_tag
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000010000000000000010000000000000000000000000000000000000000, Flags: 0000000000000001000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, Flag Names: Identifier,
String: y, String: y,
Whole String: y, Whole String: y,
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000000000000000000010000000000000000000000000000000000000000, Flags: 0000000000000001000000000000000000000000000000000000000000000000,
Flag Names: , Flag Names: Identifier,
String: float, String: float,
Whole String: float, Whole String: float,
} }
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000011000000000000010000000000000000000000000000000000000000, Flags: 0000000000000001000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, AfterComma, Flag Names: Identifier,
String: z, String: z,
Whole String: z, Whole String: z,
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000000000000000000010000000000000000000000000000000000000000, Flags: 0000000000000001000000000000000000000000000000000000000000000000,
Flag Names: , Flag Names: Identifier,
String: i32, String: i32,
Whole String: i32, Whole String: i32,
} }
@@ -1,34 +1,34 @@
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000110000000000000000010000000000000000000000000000000000000000, Flags: 0000110000000001000000000000000000000000000000000000000000000000,
Flag Names: BraceLeft, BraceRight, Flag Names: BraceLeft, BraceRight, Identifier,
String: a_set, String: a_set,
Whole String: a_set, Whole String: a_set,
Tag: @sets Tag: @sets
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000110010000000000000010000000000000000000000000000000000000000, Flags: 0000110010000001000000000000000000000000000000000000000000000000,
Flag Names: BraceLeft, BraceRight, BeforeComma, Flag Names: BraceLeft, BraceRight, BeforeComma, Identifier,
String: named_set, String: named_set,
Whole String: named_set, Whole String: named_set,
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000010000000000000100000000000000000000000000000000000000000, Flags: 0000000010000010000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, Flag Names: BeforeComma, Numeric,
String: 1, String: 1,
Whole String: 1, Whole String: 1,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000011000000000000100000000000000000000000000000000000000000, Flags: 0000000011000010000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, AfterComma, Flag Names: BeforeComma, AfterComma, Numeric,
String: 3, String: 3,
Whole String: 3, Whole String: 3,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000001000000000000100000000000000000000000000000000000000000, Flags: 0000000001000010000000000000000000000000000000000000000000000000,
Flag Names: AfterComma, Flag Names: AfterComma, Numeric,
String: 7, String: 7,
Whole String: 7, Whole String: 7,
} }
@@ -39,22 +39,22 @@ Node {
Flag Names: BraceLeft, BraceRight, BeforeComma, AfterComma, Flag Names: BraceLeft, BraceRight, BeforeComma, AfterComma,
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000010000000000000010000000000000000000000000000000000000000, Flags: 0000000010000001000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, Flag Names: BeforeComma, Identifier,
String: not, String: not,
Whole String: not, Whole String: not,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000011000000000000010000000000000000000000000000000000000000, Flags: 0000000011000001000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, AfterComma, Flag Names: BeforeComma, AfterComma, Identifier,
String: named, String: named,
Whole String: named, Whole String: named,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000001000000000000010000000000000000000000000000000000000000, Flags: 0000000001000001000000000000000000000000000000000000000000000000,
Flag Names: AfterComma, Flag Names: AfterComma, Identifier,
String: set, String: set,
Whole String: set, Whole String: set,
} }
@@ -67,44 +67,44 @@ Node {
Tag Children{ Tag Children{
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000010000000000000010000000000000000000000000000000000000000, Flags: 0000000010000001000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, Flag Names: BeforeComma, Identifier,
String: p1, String: p1,
Whole String: p1, Whole String: p1,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000011000000000000010000000000000000000000000000000000000000, Flags: 0000000011000001000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, AfterComma, Flag Names: BeforeComma, AfterComma, Identifier,
String: p2, String: p2,
Whole String: p2, Whole String: p2,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000001000000000000010000000000000000000000000000000000000000, Flags: 0000000001000001000000000000000000000000000000000000000000000000,
Flag Names: AfterComma, Flag Names: AfterComma, Identifier,
String: p3, String: p3,
Whole String: p3, Whole String: p3,
} }
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000010000000000000010000000000000000000000000000000000000000, Flags: 0000000010000001000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, Flag Names: BeforeComma, Identifier,
String: e1, String: e1,
Whole String: e1, Whole String: e1,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000011000000000000010000000000000000000000000000000000000000, Flags: 0000000011000001000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, AfterComma, Flag Names: BeforeComma, AfterComma, Identifier,
String: e2, String: e2,
Whole String: e2, Whole String: e2,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000001000000000000010000000000000000000000000000000000000000, Flags: 0000000001000001000000000000000000000000000000000000000000000000,
Flag Names: AfterComma, Flag Names: AfterComma, Identifier,
String: e3, String: e3,
Whole String: e3, Whole String: e3,
} }
@@ -117,22 +117,22 @@ Node {
Tag Children{ Tag Children{
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000010000000000000010000000000000000000000000000000000000000, Flags: 0000000010000001000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, Flag Names: BeforeComma, Identifier,
String: p1, String: p1,
Whole String: p1, Whole String: p1,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000011000000000000010000000000000000000000000000000000000000, Flags: 0000000011000001000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, AfterComma, Flag Names: BeforeComma, AfterComma, Identifier,
String: p2, String: p2,
Whole String: p2, Whole String: p2,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000001000000000000010000000000000000000000000000000000000000, Flags: 0000000001000001000000000000000000000000000000000000000000000000,
Flag Names: AfterComma, Flag Names: AfterComma, Identifier,
String: p3, String: p3,
Whole String: p3, Whole String: p3,
} }
@@ -141,44 +141,44 @@ Node {
Tag Children{ Tag Children{
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000010000000000000010000000000000000000000000000000000000000, Flags: 0000000010000001000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, Flag Names: BeforeComma, Identifier,
String: p, String: p,
Whole String: p, Whole String: p,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000011000000000000010000000000000000000000000000000000000000, Flags: 0000000011000001000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, AfterComma, Flag Names: BeforeComma, AfterComma, Identifier,
String: pp, String: pp,
Whole String: pp, Whole String: pp,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000001000000000000010000000000000000000000000000000000000000, Flags: 0000000001000001000000000000000000000000000000000000000000000000,
Flag Names: AfterComma, Flag Names: AfterComma, Identifier,
String: ppp, String: ppp,
Whole String: ppp, Whole String: ppp,
} }
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000010000000000000010000000000000000000000000000000000000000, Flags: 0000000010000001000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, Flag Names: BeforeComma, Identifier,
String: e1, String: e1,
Whole String: e1, Whole String: e1,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000011000000000000010000000000000000000000000000000000000000, Flags: 0000000011000001000000000000000000000000000000000000000000000000,
Flag Names: BeforeComma, AfterComma, Flag Names: BeforeComma, AfterComma, Identifier,
String: e2, String: e2,
Whole String: e2, Whole String: e2,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000001000000000000010000000000000000000000000000000000000000, Flags: 0000000001000001000000000000000000000000000000000000000000000000,
Flag Names: AfterComma, Flag Names: AfterComma, Identifier,
String: e3, String: e3,
Whole String: e3, Whole String: e3,
} }
@@ -187,8 +187,8 @@ Node {
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000110000000000000000010000000000000000000000000000000000000000, Flags: 0000110000000001000000000000000000000000000000000000000000000000,
Flag Names: BraceLeft, BraceRight, Flag Names: BraceLeft, BraceRight, Identifier,
String: empty, String: empty,
Whole String: empty, Whole String: empty,
Tag: @empty_set Tag: @empty_set
@@ -201,14 +201,14 @@ Node {
Tag: @tagged_unnamed_set Tag: @tagged_unnamed_set
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000110000000000000000010000000000000000000000000000000000000000, Flags: 0000110000000001000000000000000000000000000000000000000000000000,
Flag Names: BraceLeft, BraceRight, Flag Names: BraceLeft, BraceRight, Identifier,
String: a_label, String: a_label,
Whole String: a_label, Whole String: a_label,
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000000000000000000010000000000000000000000000000000000000000, Flags: 0000000000000001000000000000000000000000000000000000000000000000,
Flag Names: , Flag Names: Identifier,
String: unnamed_set_element, String: unnamed_set_element,
Whole String: unnamed_set_element, Whole String: unnamed_set_element,
} }
@@ -229,22 +229,22 @@ Node {
Tag: @symbol_label Tag: @symbol_label
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000000000000000000100000000000000000000000000000000000000000, Flags: 0000000000000010000000000000000000000000000000000000000000000000,
Flag Names: , Flag Names: Numeric,
String: 1, String: 1,
Whole String: 1, Whole String: 1,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000000000000000000100000000000000000000000000000000000000000, Flags: 0000000000000010000000000000000000000000000000000000000000000000,
Flag Names: , Flag Names: Numeric,
String: 2, String: 2,
Whole String: 2, Whole String: 2,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000000000000000000100000000000000000000000000000000000000000, Flags: 0000000000000010000000000000000000000000000000000000000000000000,
Flag Names: , Flag Names: Numeric,
String: 3, String: 3,
Whole String: 3, Whole String: 3,
} }
@@ -258,22 +258,22 @@ Node {
Tag: @symbol_label Tag: @symbol_label
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000000000000000000010000000000000000000000000000000000000000, Flags: 0000000000000001000000000000000000000000000000000000000000000000,
Flag Names: , Flag Names: Identifier,
String: x, String: x,
Whole String: x, Whole String: x,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000000000000000000010000000000000000000000000000000000000000, Flags: 0000000000000001000000000000000000000000000000000000000000000000,
Flag Names: , Flag Names: Identifier,
String: y, String: y,
Whole String: y, Whole String: y,
} }
Node { Node {
Kind: Label, Kind: Label,
Flags: 0000000000000000000000010000000000000000000000000000000000000000, Flags: 0000000000000001000000000000000000000000000000000000000000000000,
Flag Names: , Flag Names: Identifier,
String: z, String: z,
Whole String: z, Whole String: z,
} }
+6 -7
View File
@@ -207,7 +207,8 @@
#endif #endif
#if MD_COMPILER_CLANG || MD_COMPILER_GCC #if MD_COMPILER_CLANG || MD_COMPILER_GCC
#define MD_FORMAT_FUNCTION_ANNOTATION(str_idx, check_idx) __attribute__((format(printf, str_idx, check_idx))) #define MD_FORMAT_FUNCTION_ANNOTATION(str_idx, check_idx) \
__attribute__((format(printf, str_idx, check_idx)))
#else #else
#define MD_FORMAT_FUNCTION_ANNOTATION(str_idx, check_idx) #define MD_FORMAT_FUNCTION_ANNOTATION(str_idx, check_idx)
#endif #endif
@@ -352,13 +353,11 @@ enum
MD_NodeFlag_StringSingleQuote = (1<<10), MD_NodeFlag_StringSingleQuote = (1<<10),
MD_NodeFlag_StringDoubleQuote = (1<<11), MD_NodeFlag_StringDoubleQuote = (1<<11),
MD_NodeFlag_StringTick = (1<<12), MD_NodeFlag_StringTick = (1<<12),
MD_NodeFlag_StringTripletSingleQuote= (1<<13), MD_NodeFlag_StringTriplet = (1<<13),
MD_NodeFlag_StringTripletDoubleQuote= (1<<14),
MD_NodeFlag_StringTripletTick = (1<<15),
MD_NodeFlag_Numeric = (1<<16), MD_NodeFlag_Numeric = (1<<14),
MD_NodeFlag_Identifier = (1<<17), MD_NodeFlag_Identifier = (1<<15),
MD_NodeFlag_StringLiteral = (1<<18), MD_NodeFlag_StringLiteral = (1<<16),
}; };
typedef struct MD_Node MD_Node; typedef struct MD_Node MD_Node;
+9 -20
View File
@@ -679,9 +679,7 @@ MD_StringListFromNodeFlags(MD_NodeFlags flags)
"StringSingleQuote", "StringSingleQuote",
"StringDoubleQuote", "StringDoubleQuote",
"StringTick", "StringTick",
"StringTripletSingleQuote", "StringTriplet",
"StringTripletDoubleQuote",
"StringTripletTick",
"Numeric", "Numeric",
"Identifier", "Identifier",
@@ -1309,25 +1307,16 @@ MD_TokenFromString(MD_String8 string)
//- rjf: set relevant node flags on token //- rjf: set relevant node flags on token
token.node_flags |= MD_NodeFlag_StringLiteral; token.node_flags |= MD_NodeFlag_StringLiteral;
switch(d)
{
case '\'': token.node_flags |= MD_NodeFlag_StringSingleQuote; break;
case '"': token.node_flags |= MD_NodeFlag_StringDoubleQuote; break;
case '`': token.node_flags |= MD_NodeFlag_StringTick; break;
default: break;
}
if(is_triplet) if(is_triplet)
{ {
switch(d) token.node_flags |= MD_NodeFlag_StringTriplet;
{
case '\'': token.node_flags |= MD_NodeFlag_StringTripletSingleQuote; break;
case '"': token.node_flags |= MD_NodeFlag_StringTripletDoubleQuote; break;
case '`': token.node_flags |= MD_NodeFlag_StringTripletTick; break;
default: break;
}
}
else
{
switch(d)
{
case '\'': token.node_flags |= MD_NodeFlag_StringSingleQuote; break;
case '"': token.node_flags |= MD_NodeFlag_StringDoubleQuote; break;
case '`': token.node_flags |= MD_NodeFlag_StringTick; break;
default: break;
}
} }
}break; }break;
+3 -3
View File
@@ -309,11 +309,11 @@ int main(void)
TestResult(MD_ParseOneNode(MD_S8Lit("`foo`"), 0).node->flags & TestResult(MD_ParseOneNode(MD_S8Lit("`foo`"), 0).node->flags &
MD_NodeFlag_StringLiteral | MD_NodeFlag_StringTick); MD_NodeFlag_StringLiteral | MD_NodeFlag_StringTick);
TestResult(MD_ParseOneNode(MD_S8Lit("\"\"\"foo\"\"\""), 0).node->flags & TestResult(MD_ParseOneNode(MD_S8Lit("\"\"\"foo\"\"\""), 0).node->flags &
MD_NodeFlag_StringLiteral | MD_NodeFlag_StringTripletDoubleQuote); MD_NodeFlag_StringLiteral | MD_NodeFlag_StringDoubleQuote | MD_NodeFlag_StringTriplet);
TestResult(MD_ParseOneNode(MD_S8Lit("'''foo'''"), 0).node->flags & TestResult(MD_ParseOneNode(MD_S8Lit("'''foo'''"), 0).node->flags &
MD_NodeFlag_StringLiteral | MD_NodeFlag_StringTripletSingleQuote); MD_NodeFlag_StringLiteral | MD_NodeFlag_StringSingleQuote | MD_NodeFlag_StringTriplet);
TestResult(MD_ParseOneNode(MD_S8Lit("```foo```"), 0).node->flags & TestResult(MD_ParseOneNode(MD_S8Lit("```foo```"), 0).node->flags &
MD_NodeFlag_StringLiteral | MD_NodeFlag_StringTripletTick); MD_NodeFlag_StringLiteral | MD_NodeFlag_StringTick | MD_NodeFlag_StringTriplet);
} }
Test("Expression Evaluation") Test("Expression Evaluation")