diff --git a/samples/output_parse/examples/output/parsed_example.txt b/samples/output_parse/examples/output/parsed_example.txt index 723f878..f6824a5 100644 --- a/samples/output_parse/examples/output/parsed_example.txt +++ b/samples/output_parse/examples/output/parsed_example.txt @@ -1,14 +1,14 @@ Node { Kind: Label, - Flags: 0000110000000000000000010000000000000000000000000000000000000000, - Flag Names: BraceLeft, BraceRight, + Flags: 0000110000000001000000000000000000000000000000000000000000000000, + Flag Names: BraceLeft, BraceRight, Identifier, String: foo, Whole String: foo, Tag: @struct Node { Kind: Label, - Flags: 1100000010000000000000010000000000000000000000000000000000000000, - Flag Names: ParenLeft, ParenRight, BeforeComma, + Flags: 1100000010000001000000000000000000000000000000000000000000000000, + Flag Names: ParenLeft, ParenRight, BeforeComma, Identifier, String: x, Whole String: x, Node { @@ -17,16 +17,16 @@ Node { Flag Names: BracketLeft, BracketRight, Node { Kind: Label, - Flags: 0000000000000000000000010000000000000000000000000000000000000000, - Flag Names: , + Flags: 0000000000000001000000000000000000000000000000000000000000000000, + Flag Names: Identifier, String: MAX_PATH, Whole String: MAX_PATH, } } Node { Kind: Label, - Flags: 0000000000000000000000010000000000000000000000000000000000000000, - Flag Names: , + Flags: 0000000000000001000000000000000000000000000000000000000000000000, + Flag Names: Identifier, String: char, Whole String: char, } @@ -35,36 +35,36 @@ Node { Node { Kind: Label, - Flags: 0000110000000000000000010000000000000000000000000000000000000000, - Flag Names: BraceLeft, BraceRight, + Flags: 0000110000000001000000000000000000000000000000000000000000000000, + Flag Names: BraceLeft, BraceRight, Identifier, String: bar, Whole String: bar, Tag: @struct Tag: @test_tag Node { Kind: Label, - Flags: 0000000010000000000000010000000000000000000000000000000000000000, - Flag Names: BeforeComma, + Flags: 0000000000000001000000000000000000000000000000000000000000000000, + Flag Names: Identifier, String: y, Whole String: y, Node { Kind: Label, - Flags: 0000000000000000000000010000000000000000000000000000000000000000, - Flag Names: , + Flags: 0000000000000001000000000000000000000000000000000000000000000000, + Flag Names: Identifier, String: float, Whole String: float, } } Node { Kind: Label, - Flags: 0000000011000000000000010000000000000000000000000000000000000000, - Flag Names: BeforeComma, AfterComma, + Flags: 0000000000000001000000000000000000000000000000000000000000000000, + Flag Names: Identifier, String: z, Whole String: z, Node { Kind: Label, - Flags: 0000000000000000000000010000000000000000000000000000000000000000, - Flag Names: , + Flags: 0000000000000001000000000000000000000000000000000000000000000000, + Flag Names: Identifier, String: i32, Whole String: i32, } diff --git a/samples/output_parse/examples/output/parsed_example2.txt b/samples/output_parse/examples/output/parsed_example2.txt index 2b0e76b..2aa89b4 100644 --- a/samples/output_parse/examples/output/parsed_example2.txt +++ b/samples/output_parse/examples/output/parsed_example2.txt @@ -1,34 +1,34 @@ Node { Kind: Label, - Flags: 0000110000000000000000010000000000000000000000000000000000000000, - Flag Names: BraceLeft, BraceRight, + Flags: 0000110000000001000000000000000000000000000000000000000000000000, + Flag Names: BraceLeft, BraceRight, Identifier, String: a_set, Whole String: a_set, Tag: @sets Node { Kind: Label, - Flags: 0000110010000000000000010000000000000000000000000000000000000000, - Flag Names: BraceLeft, BraceRight, BeforeComma, + Flags: 0000110010000001000000000000000000000000000000000000000000000000, + Flag Names: BraceLeft, BraceRight, BeforeComma, Identifier, String: named_set, Whole String: named_set, Node { Kind: Label, - Flags: 0000000010000000000000100000000000000000000000000000000000000000, - Flag Names: BeforeComma, + Flags: 0000000010000010000000000000000000000000000000000000000000000000, + Flag Names: BeforeComma, Numeric, String: 1, Whole String: 1, } Node { Kind: Label, - Flags: 0000000011000000000000100000000000000000000000000000000000000000, - Flag Names: BeforeComma, AfterComma, + Flags: 0000000011000010000000000000000000000000000000000000000000000000, + Flag Names: BeforeComma, AfterComma, Numeric, String: 3, Whole String: 3, } Node { Kind: Label, - Flags: 0000000001000000000000100000000000000000000000000000000000000000, - Flag Names: AfterComma, + Flags: 0000000001000010000000000000000000000000000000000000000000000000, + Flag Names: AfterComma, Numeric, String: 7, Whole String: 7, } @@ -39,22 +39,22 @@ Node { Flag Names: BraceLeft, BraceRight, BeforeComma, AfterComma, Node { Kind: Label, - Flags: 0000000010000000000000010000000000000000000000000000000000000000, - Flag Names: BeforeComma, + Flags: 0000000010000001000000000000000000000000000000000000000000000000, + Flag Names: BeforeComma, Identifier, String: not, Whole String: not, } Node { Kind: Label, - Flags: 0000000011000000000000010000000000000000000000000000000000000000, - Flag Names: BeforeComma, AfterComma, + Flags: 0000000011000001000000000000000000000000000000000000000000000000, + Flag Names: BeforeComma, AfterComma, Identifier, String: named, Whole String: named, } Node { Kind: Label, - Flags: 0000000001000000000000010000000000000000000000000000000000000000, - Flag Names: AfterComma, + Flags: 0000000001000001000000000000000000000000000000000000000000000000, + Flag Names: AfterComma, Identifier, String: set, Whole String: set, } @@ -67,44 +67,44 @@ Node { Tag Children{ Node { Kind: Label, - Flags: 0000000010000000000000010000000000000000000000000000000000000000, - Flag Names: BeforeComma, + Flags: 0000000010000001000000000000000000000000000000000000000000000000, + Flag Names: BeforeComma, Identifier, String: p1, Whole String: p1, } Node { Kind: Label, - Flags: 0000000011000000000000010000000000000000000000000000000000000000, - Flag Names: BeforeComma, AfterComma, + Flags: 0000000011000001000000000000000000000000000000000000000000000000, + Flag Names: BeforeComma, AfterComma, Identifier, String: p2, Whole String: p2, } Node { Kind: Label, - Flags: 0000000001000000000000010000000000000000000000000000000000000000, - Flag Names: AfterComma, + Flags: 0000000001000001000000000000000000000000000000000000000000000000, + Flag Names: AfterComma, Identifier, String: p3, Whole String: p3, } } Node { Kind: Label, - Flags: 0000000010000000000000010000000000000000000000000000000000000000, - Flag Names: BeforeComma, + Flags: 0000000010000001000000000000000000000000000000000000000000000000, + Flag Names: BeforeComma, Identifier, String: e1, Whole String: e1, } Node { Kind: Label, - Flags: 0000000011000000000000010000000000000000000000000000000000000000, - Flag Names: BeforeComma, AfterComma, + Flags: 0000000011000001000000000000000000000000000000000000000000000000, + Flag Names: BeforeComma, AfterComma, Identifier, String: e2, Whole String: e2, } Node { Kind: Label, - Flags: 0000000001000000000000010000000000000000000000000000000000000000, - Flag Names: AfterComma, + Flags: 0000000001000001000000000000000000000000000000000000000000000000, + Flag Names: AfterComma, Identifier, String: e3, Whole String: e3, } @@ -117,22 +117,22 @@ Node { Tag Children{ Node { Kind: Label, - Flags: 0000000010000000000000010000000000000000000000000000000000000000, - Flag Names: BeforeComma, + Flags: 0000000010000001000000000000000000000000000000000000000000000000, + Flag Names: BeforeComma, Identifier, String: p1, Whole String: p1, } Node { Kind: Label, - Flags: 0000000011000000000000010000000000000000000000000000000000000000, - Flag Names: BeforeComma, AfterComma, + Flags: 0000000011000001000000000000000000000000000000000000000000000000, + Flag Names: BeforeComma, AfterComma, Identifier, String: p2, Whole String: p2, } Node { Kind: Label, - Flags: 0000000001000000000000010000000000000000000000000000000000000000, - Flag Names: AfterComma, + Flags: 0000000001000001000000000000000000000000000000000000000000000000, + Flag Names: AfterComma, Identifier, String: p3, Whole String: p3, } @@ -141,44 +141,44 @@ Node { Tag Children{ Node { Kind: Label, - Flags: 0000000010000000000000010000000000000000000000000000000000000000, - Flag Names: BeforeComma, + Flags: 0000000010000001000000000000000000000000000000000000000000000000, + Flag Names: BeforeComma, Identifier, String: p, Whole String: p, } Node { Kind: Label, - Flags: 0000000011000000000000010000000000000000000000000000000000000000, - Flag Names: BeforeComma, AfterComma, + Flags: 0000000011000001000000000000000000000000000000000000000000000000, + Flag Names: BeforeComma, AfterComma, Identifier, String: pp, Whole String: pp, } Node { Kind: Label, - Flags: 0000000001000000000000010000000000000000000000000000000000000000, - Flag Names: AfterComma, + Flags: 0000000001000001000000000000000000000000000000000000000000000000, + Flag Names: AfterComma, Identifier, String: ppp, Whole String: ppp, } } Node { Kind: Label, - Flags: 0000000010000000000000010000000000000000000000000000000000000000, - Flag Names: BeforeComma, + Flags: 0000000010000001000000000000000000000000000000000000000000000000, + Flag Names: BeforeComma, Identifier, String: e1, Whole String: e1, } Node { Kind: Label, - Flags: 0000000011000000000000010000000000000000000000000000000000000000, - Flag Names: BeforeComma, AfterComma, + Flags: 0000000011000001000000000000000000000000000000000000000000000000, + Flag Names: BeforeComma, AfterComma, Identifier, String: e2, Whole String: e2, } Node { Kind: Label, - Flags: 0000000001000000000000010000000000000000000000000000000000000000, - Flag Names: AfterComma, + Flags: 0000000001000001000000000000000000000000000000000000000000000000, + Flag Names: AfterComma, Identifier, String: e3, Whole String: e3, } @@ -187,8 +187,8 @@ Node { Node { Kind: Label, - Flags: 0000110000000000000000010000000000000000000000000000000000000000, - Flag Names: BraceLeft, BraceRight, + Flags: 0000110000000001000000000000000000000000000000000000000000000000, + Flag Names: BraceLeft, BraceRight, Identifier, String: empty, Whole String: empty, Tag: @empty_set @@ -201,14 +201,14 @@ Node { Tag: @tagged_unnamed_set Node { Kind: Label, - Flags: 0000110000000000000000010000000000000000000000000000000000000000, - Flag Names: BraceLeft, BraceRight, + Flags: 0000110000000001000000000000000000000000000000000000000000000000, + Flag Names: BraceLeft, BraceRight, Identifier, String: a_label, Whole String: a_label, Node { Kind: Label, - Flags: 0000000000000000000000010000000000000000000000000000000000000000, - Flag Names: , + Flags: 0000000000000001000000000000000000000000000000000000000000000000, + Flag Names: Identifier, String: unnamed_set_element, Whole String: unnamed_set_element, } @@ -229,22 +229,22 @@ Node { Tag: @symbol_label Node { Kind: Label, - Flags: 0000000000000000000000100000000000000000000000000000000000000000, - Flag Names: , + Flags: 0000000000000010000000000000000000000000000000000000000000000000, + Flag Names: Numeric, String: 1, Whole String: 1, } Node { Kind: Label, - Flags: 0000000000000000000000100000000000000000000000000000000000000000, - Flag Names: , + Flags: 0000000000000010000000000000000000000000000000000000000000000000, + Flag Names: Numeric, String: 2, Whole String: 2, } Node { Kind: Label, - Flags: 0000000000000000000000100000000000000000000000000000000000000000, - Flag Names: , + Flags: 0000000000000010000000000000000000000000000000000000000000000000, + Flag Names: Numeric, String: 3, Whole String: 3, } @@ -258,22 +258,22 @@ Node { Tag: @symbol_label Node { Kind: Label, - Flags: 0000000000000000000000010000000000000000000000000000000000000000, - Flag Names: , + Flags: 0000000000000001000000000000000000000000000000000000000000000000, + Flag Names: Identifier, String: x, Whole String: x, } Node { Kind: Label, - Flags: 0000000000000000000000010000000000000000000000000000000000000000, - Flag Names: , + Flags: 0000000000000001000000000000000000000000000000000000000000000000, + Flag Names: Identifier, String: y, Whole String: y, } Node { Kind: Label, - Flags: 0000000000000000000000010000000000000000000000000000000000000000, - Flag Names: , + Flags: 0000000000000001000000000000000000000000000000000000000000000000, + Flag Names: Identifier, String: z, Whole String: z, } diff --git a/source/md.h b/source/md.h index 4ae8b00..0065624 100644 --- a/source/md.h +++ b/source/md.h @@ -207,7 +207,8 @@ #endif #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 #define MD_FORMAT_FUNCTION_ANNOTATION(str_idx, check_idx) #endif @@ -352,13 +353,11 @@ enum MD_NodeFlag_StringSingleQuote = (1<<10), MD_NodeFlag_StringDoubleQuote = (1<<11), MD_NodeFlag_StringTick = (1<<12), - MD_NodeFlag_StringTripletSingleQuote= (1<<13), - MD_NodeFlag_StringTripletDoubleQuote= (1<<14), - MD_NodeFlag_StringTripletTick = (1<<15), + MD_NodeFlag_StringTriplet = (1<<13), - MD_NodeFlag_Numeric = (1<<16), - MD_NodeFlag_Identifier = (1<<17), - MD_NodeFlag_StringLiteral = (1<<18), + MD_NodeFlag_Numeric = (1<<14), + MD_NodeFlag_Identifier = (1<<15), + MD_NodeFlag_StringLiteral = (1<<16), }; typedef struct MD_Node MD_Node; diff --git a/source/md_impl.c b/source/md_impl.c index db544c8..2573be8 100644 --- a/source/md_impl.c +++ b/source/md_impl.c @@ -679,9 +679,7 @@ MD_StringListFromNodeFlags(MD_NodeFlags flags) "StringSingleQuote", "StringDoubleQuote", "StringTick", - "StringTripletSingleQuote", - "StringTripletDoubleQuote", - "StringTripletTick", + "StringTriplet", "Numeric", "Identifier", @@ -1309,25 +1307,16 @@ MD_TokenFromString(MD_String8 string) //- rjf: set relevant node flags on token 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) { - switch(d) - { - 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; - } + token.node_flags |= MD_NodeFlag_StringTriplet; } }break; diff --git a/tests/sanity_tests.c b/tests/sanity_tests.c index 2ca98bc..07cb8c5 100644 --- a/tests/sanity_tests.c +++ b/tests/sanity_tests.c @@ -309,11 +309,11 @@ int main(void) TestResult(MD_ParseOneNode(MD_S8Lit("`foo`"), 0).node->flags & MD_NodeFlag_StringLiteral | MD_NodeFlag_StringTick); 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 & - MD_NodeFlag_StringLiteral | MD_NodeFlag_StringTripletSingleQuote); + MD_NodeFlag_StringLiteral | MD_NodeFlag_StringSingleQuote | MD_NodeFlag_StringTriplet); 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")