Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

renderer: Finish glfx's GLSL parser #59

Closed
tweakoz opened this issue Jan 14, 2020 · 2 comments
Closed

renderer: Finish glfx's GLSL parser #59

tweakoz opened this issue Jan 14, 2020 · 2 comments

Comments

@tweakoz
Copy link
Owner

tweakoz commented Jan 14, 2020

And use the AST for final shader emission instead of string based emission.
This will encourage cooler shader tricks down the road - eg node based shaders...
Use unit tests to verify completion

@tweakoz
Copy link
Owner Author

tweakoz commented Jun 18, 2023

In Progress
https://github.com/tweakoz/orkid/tree/toz-orkslx

tok<0> idx<0> val<function>
tok<1> idx<1> val<abc>
tok<2> idx<2> val<(>
tok<3> idx<3> val<int>
tok<4> idx<4> val<x>
tok<5> idx<5> val<,>
tok<6> idx<6> val<float>
tok<7> idx<7> val<y>
tok<8> idx<8> val<)>
tok<9> idx<9> val<{>
tok<10> idx<10> val<b>
tok<11> idx<11> val<=>
tok<12> idx<12> val<(>
tok<13> idx<13> val<a>
tok<14> idx<14> val<+>
tok<15> idx<15> val<v>
tok<16> idx<16> val<)>
tok<17> idx<17> val<*>
tok<18> idx<18> val<7.0>
tok<19> idx<19> val<;>
tok<20> idx<20> val<}>
[PARSER]   SEQ<funcdef>: beg_match len<8>
[PARSER]     MATCHED word<function>
[PARSER]   SEQ<funcdef> : match_item<function> iter<0/8> st<0> end<20> MATCH
[PARSER]     MATCHED tok<abc> mname<kw_or_id>
[PARSER]   SEQ<funcdef> : match_item<kw_or_id> iter<1/8> st<1> end<20> MATCH
[PARSER]     MATCHED tok<(> mname<lparen>
[PARSER]   SEQ<funcdef> : match_item<lparen> iter<2/8> st<2> end<20> MATCH
[PARSER]     NOM0<fnd_args>: beg_match sub_matcher<argument_decl>
[PARSER]       SEQ<argument_decl>: beg_match len<3>
[PARSER]           MATCHED word<int>
[PARSER]         1OF<>: MATCH sub_matcher<int>
[PARSER]       SEQ<argument_decl> : match_item<oneOf> iter<0/3> st<3> end<20> MATCH
[PARSER]         MATCHED tok<x> mname<kw_or_id>
[PARSER]       SEQ<argument_decl> : match_item<kw_or_id> iter<1/3> st<4> end<20> MATCH
[PARSER]           MATCHED tok<,> mname<comma>
[PARSER]         OPT<> MATCH sub<comma>
[PARSER]         MATCHED OPT<optional>
[PARSER]       SEQ<argument_decl> : match_item<optional> iter<2/3> st<5> end<20> MATCH
[PARSER]       MATCHED SEQ<argument_decl>
[PARSER]     NOM0<fnd_args> try_match iter<0> MATCH start<3> end<5>
[PARSER]       SEQ<argument_decl>: beg_match len<3>
[PARSER]           MATCHED word<float>
[PARSER]         1OF<>: MATCH sub_matcher<float>
[PARSER]       SEQ<argument_decl> : match_item<oneOf> iter<0/3> st<6> end<20> MATCH
[PARSER]         MATCHED tok<y> mname<kw_or_id>
[PARSER]       SEQ<argument_decl> : match_item<kw_or_id> iter<1/3> st<7> end<20> MATCH
[PARSER]         OPT<> EMPTY
[PARSER]         MATCHED OPT<optional>
[PARSER]       SEQ<argument_decl> : match_item<optional> iter<2/3> st<8> end<20> MATCH: EMPTY
[PARSER]       MATCHED SEQ<argument_decl>
[PARSER]     NOM0<fnd_args> try_match iter<1> MATCH start<6> end<7>
[PARSER]       SEQ<argument_decl>: beg_match len<3>
[PARSER]         1OF<>: NO-MATCH
[PARSER]       SEQ<argument_decl> : match_item<oneOf> iter<0/3> st<8> end<20> NO-MATCH
[PARSER]     NOM0<fnd_args> try_match iter<2> NO-MATCH
[PARSER]     NOM0<fnd_args>: MATCH count<2> st<3> en<7>
[PARSER]     MATCHED NOM<fnd_args>
[PARSER]   SEQ<funcdef> : match_item<fnd_args> iter<3/8> st<3> end<20> MATCH
[PARSER]     MATCHED tok<)> mname<rparen>
[PARSER]   SEQ<funcdef> : match_item<rparen> iter<4/8> st<8> end<20> MATCH
[PARSER]     MATCHED tok<{> mname<lcurly>
[PARSER]   SEQ<funcdef> : match_item<lcurly> iter<5/8> st<9> end<20> MATCH
[PARSER]     NOM0<fnd_statements>: beg_match sub_matcher<sequence>
[PARSER]       SEQ<sequence>: beg_match len<2>
[PARSER]           SEQ<assignment_statement>: beg_match len<3>
[PARSER]               SEQ<variableDeclaration>: beg_match len<2>
[PARSER]                 1OF<>: NO-MATCH
[PARSER]               SEQ<variableDeclaration> : match_item<oneOf> iter<0/2> st<10> end<20> NO-MATCH
[PARSER]               SEQ<variableReference>: beg_match len<1>
[PARSER]                 MATCHED tok<b> mname<kw_or_id>
[PARSER]               SEQ<variableReference> : match_item<kw_or_id> iter<0/1> st<10> end<20> MATCH
[PARSER]               MATCHED SEQ<variableReference>
[PARSER]             1OF<ass1of>: MATCH sub_matcher<variableReference>
[PARSER]           SEQ<assignment_statement> : match_item<ass1of> iter<0/3> st<10> end<20> MATCH
[PARSER]             MATCHED tok<=> mname<equals>
[PARSER]           SEQ<assignment_statement> : match_item<equals> iter<1/3> st<11> end<20> MATCH
[PARSER]             SEQ<expression>: beg_match len<1>
[PARSER]                 SEQ<add1>: beg_match len<3>
[PARSER]                     SEQ<mul1>: beg_match len<2>
[PARSER]                         SEQ<variableReference>: beg_match len<1>
[PARSER]                         SEQ<variableReference> : match_item<kw_or_id> iter<0/1> st<12> end<20> NO-MATCH
[PARSER]                         SEQ<term>: beg_match len<3>
[PARSER]                           MATCHED tok<(> mname<lparen>
[PARSER]                         SEQ<term> : match_item<lparen> iter<0/3> st<12> end<20> MATCH
[PARSER]                           SEQ<expression>: beg_match len<1>
[PARSER]                               SEQ<add1>: beg_match len<3>
[PARSER]                                   SEQ<mul1>: beg_match len<2>
[PARSER]                                       SEQ<variableReference>: beg_match len<1>
[PARSER]                                         MATCHED tok<a> mname<kw_or_id>
[PARSER]                                       SEQ<variableReference> : match_item<kw_or_id> iter<0/1> st<13> end<20> MATCH
[PARSER]                                       MATCHED SEQ<variableReference>
[PARSER]                                     1OF<primary>: MATCH sub_matcher<variableReference>
[PARSER]                                   SEQ<mul1> : match_item<primary> iter<0/2> st<13> end<20> MATCH
[PARSER]                                     NOM0<mul1zom>: beg_match sub_matcher<mul1sp>
[PARSER]                                       SEQ<mul1sp>: beg_match len<2>
[PARSER]                                       SEQ<mul1sp> : match_item<star> iter<0/2> st<14> end<20> NO-MATCH
[PARSER]                                     NOM0<mul1zom> try_match iter<0> NO-MATCH
[PARSER]                                     NOM0<mul1zom>: MATCH count<0> st<18446744073709551615> en<18446744073709551615>
[PARSER]                                     MATCHED NOM<mul1zom>
[PARSER]                                   SEQ<mul1> : match_item<mul1zom> iter<1/2> st<14> end<20> MATCH: EMPTY
[PARSER]                                   MATCHED SEQ<mul1>
[PARSER]                                 1OF<multiplicative>: MATCH sub_matcher<mul1>
[PARSER]                               SEQ<add1> : match_item<multiplicative> iter<0/3> st<13> end<20> MATCH
[PARSER]                                 MATCHED tok<+> mname<plus>
[PARSER]                               SEQ<add1> : match_item<plus> iter<1/3> st<14> end<20> MATCH
[PARSER]                                   SEQ<mul1>: beg_match len<2>
[PARSER]                                       SEQ<variableReference>: beg_match len<1>
[PARSER]                                         MATCHED tok<v> mname<kw_or_id>
[PARSER]                                       SEQ<variableReference> : match_item<kw_or_id> iter<0/1> st<15> end<20> MATCH
[PARSER]                                       MATCHED SEQ<variableReference>
[PARSER]                                     1OF<primary>: MATCH sub_matcher<variableReference>
[PARSER]                                   SEQ<mul1> : match_item<primary> iter<0/2> st<15> end<20> MATCH
[PARSER]                                     NOM0<mul1zom>: beg_match sub_matcher<mul1sp>
[PARSER]                                       SEQ<mul1sp>: beg_match len<2>
[PARSER]                                       SEQ<mul1sp> : match_item<star> iter<0/2> st<16> end<20> NO-MATCH
[PARSER]                                     NOM0<mul1zom> try_match iter<0> NO-MATCH
[PARSER]                                     NOM0<mul1zom>: MATCH count<0> st<18446744073709551615> en<18446744073709551615>
[PARSER]                                     MATCHED NOM<mul1zom>
[PARSER]                                   SEQ<mul1> : match_item<mul1zom> iter<1/2> st<16> end<20> MATCH: EMPTY
[PARSER]                                   MATCHED SEQ<mul1>
[PARSER]                                 1OF<multiplicative>: MATCH sub_matcher<mul1>
[PARSER]                               SEQ<add1> : match_item<multiplicative> iter<2/3> st<15> end<20> MATCH
[PARSER]                               MATCHED SEQ<add1>
[PARSER]                             1OF<additive>: MATCH sub_matcher<add1>
[PARSER]                           SEQ<expression> : match_item<additive> iter<0/1> st<13> end<20> MATCH
[PARSER]                           MATCHED SEQ<expression>
[PARSER]                         SEQ<term> : match_item<expression> iter<1/3> st<13> end<20> MATCH
[PARSER]                           MATCHED tok<)> mname<rparen>
[PARSER]                         SEQ<term> : match_item<rparen> iter<2/3> st<16> end<20> MATCH
[PARSER]                         MATCHED SEQ<term>
[PARSER]                       1OF<primary>: MATCH sub_matcher<term>
[PARSER]                     SEQ<mul1> : match_item<primary> iter<0/2> st<12> end<20> MATCH
[PARSER]                       NOM0<mul1zom>: beg_match sub_matcher<mul1sp>
[PARSER]                         SEQ<mul1sp>: beg_match len<2>
[PARSER]                           MATCHED tok<*> mname<star>
[PARSER]                         SEQ<mul1sp> : match_item<star> iter<0/2> st<17> end<20> MATCH
[PARSER]                             MATCHED tok<7.0> mname<float>
[PARSER]                           1OF<primary>: MATCH sub_matcher<float>
[PARSER]                         SEQ<mul1sp> : match_item<primary> iter<1/2> st<18> end<20> MATCH
[PARSER]                         MATCHED SEQ<mul1sp>
[PARSER]                       NOM0<mul1zom> try_match iter<0> MATCH start<17> end<18>
[PARSER]                         SEQ<mul1sp>: beg_match len<2>
[PARSER]                         SEQ<mul1sp> : match_item<star> iter<0/2> st<19> end<20> NO-MATCH
[PARSER]                       NOM0<mul1zom> try_match iter<1> NO-MATCH
[PARSER]                       NOM0<mul1zom>: MATCH count<1> st<17> en<18>
[PARSER]                       MATCHED NOM<mul1zom>
[PARSER]                     SEQ<mul1> : match_item<mul1zom> iter<1/2> st<17> end<20> MATCH
[PARSER]                     MATCHED SEQ<mul1>
[PARSER]                   1OF<multiplicative>: MATCH sub_matcher<mul1>
[PARSER]                 SEQ<add1> : match_item<multiplicative> iter<0/3> st<12> end<20> MATCH
[PARSER]                 SEQ<add1> : match_item<plus> iter<1/3> st<19> end<20> NO-MATCH
[PARSER]                 SEQ<add2>: beg_match len<3>
[PARSER]                     SEQ<mul1>: beg_match len<2>
[PARSER]                         SEQ<variableReference>: beg_match len<1>
[PARSER]                         SEQ<variableReference> : match_item<kw_or_id> iter<0/1> st<12> end<20> NO-MATCH
[PARSER]                         SEQ<term>: beg_match len<3>
[PARSER]                           MATCHED tok<(> mname<lparen>
[PARSER]                         SEQ<term> : match_item<lparen> iter<0/3> st<12> end<20> MATCH
[PARSER]                           SEQ<expression>: beg_match len<1>
[PARSER]                               SEQ<add1>: beg_match len<3>
[PARSER]                                   SEQ<mul1>: beg_match len<2>
[PARSER]                                       SEQ<variableReference>: beg_match len<1>
[PARSER]                                         MATCHED tok<a> mname<kw_or_id>
[PARSER]                                       SEQ<variableReference> : match_item<kw_or_id> iter<0/1> st<13> end<20> MATCH
[PARSER]                                       MATCHED SEQ<variableReference>
[PARSER]                                     1OF<primary>: MATCH sub_matcher<variableReference>
[PARSER]                                   SEQ<mul1> : match_item<primary> iter<0/2> st<13> end<20> MATCH
[PARSER]                                     NOM0<mul1zom>: beg_match sub_matcher<mul1sp>
[PARSER]                                       SEQ<mul1sp>: beg_match len<2>
[PARSER]                                       SEQ<mul1sp> : match_item<star> iter<0/2> st<14> end<20> NO-MATCH
[PARSER]                                     NOM0<mul1zom> try_match iter<0> NO-MATCH
[PARSER]                                     NOM0<mul1zom>: MATCH count<0> st<18446744073709551615> en<18446744073709551615>
[PARSER]                                     MATCHED NOM<mul1zom>
[PARSER]                                   SEQ<mul1> : match_item<mul1zom> iter<1/2> st<14> end<20> MATCH: EMPTY
[PARSER]                                   MATCHED SEQ<mul1>
[PARSER]                                 1OF<multiplicative>: MATCH sub_matcher<mul1>
[PARSER]                               SEQ<add1> : match_item<multiplicative> iter<0/3> st<13> end<20> MATCH
[PARSER]                                 MATCHED tok<+> mname<plus>
[PARSER]                               SEQ<add1> : match_item<plus> iter<1/3> st<14> end<20> MATCH
[PARSER]                                   SEQ<mul1>: beg_match len<2>
[PARSER]                                       SEQ<variableReference>: beg_match len<1>
[PARSER]                                         MATCHED tok<v> mname<kw_or_id>
[PARSER]                                       SEQ<variableReference> : match_item<kw_or_id> iter<0/1> st<15> end<20> MATCH
[PARSER]                                       MATCHED SEQ<variableReference>
[PARSER]                                     1OF<primary>: MATCH sub_matcher<variableReference>
[PARSER]                                   SEQ<mul1> : match_item<primary> iter<0/2> st<15> end<20> MATCH
[PARSER]                                     NOM0<mul1zom>: beg_match sub_matcher<mul1sp>
[PARSER]                                       SEQ<mul1sp>: beg_match len<2>
[PARSER]                                       SEQ<mul1sp> : match_item<star> iter<0/2> st<16> end<20> NO-MATCH
[PARSER]                                     NOM0<mul1zom> try_match iter<0> NO-MATCH
[PARSER]                                     NOM0<mul1zom>: MATCH count<0> st<18446744073709551615> en<18446744073709551615>
[PARSER]                                     MATCHED NOM<mul1zom>
[PARSER]                                   SEQ<mul1> : match_item<mul1zom> iter<1/2> st<16> end<20> MATCH: EMPTY
[PARSER]                                   MATCHED SEQ<mul1>
[PARSER]                                 1OF<multiplicative>: MATCH sub_matcher<mul1>
[PARSER]                               SEQ<add1> : match_item<multiplicative> iter<2/3> st<15> end<20> MATCH
[PARSER]                               MATCHED SEQ<add1>
[PARSER]                             1OF<additive>: MATCH sub_matcher<add1>
[PARSER]                           SEQ<expression> : match_item<additive> iter<0/1> st<13> end<20> MATCH
[PARSER]                           MATCHED SEQ<expression>
[PARSER]                         SEQ<term> : match_item<expression> iter<1/3> st<13> end<20> MATCH
[PARSER]                           MATCHED tok<)> mname<rparen>
[PARSER]                         SEQ<term> : match_item<rparen> iter<2/3> st<16> end<20> MATCH
[PARSER]                         MATCHED SEQ<term>
[PARSER]                       1OF<primary>: MATCH sub_matcher<term>
[PARSER]                     SEQ<mul1> : match_item<primary> iter<0/2> st<12> end<20> MATCH
[PARSER]                       NOM0<mul1zom>: beg_match sub_matcher<mul1sp>
[PARSER]                         SEQ<mul1sp>: beg_match len<2>
[PARSER]                           MATCHED tok<*> mname<star>
[PARSER]                         SEQ<mul1sp> : match_item<star> iter<0/2> st<17> end<20> MATCH
[PARSER]                             MATCHED tok<7.0> mname<float>
[PARSER]                           1OF<primary>: MATCH sub_matcher<float>
[PARSER]                         SEQ<mul1sp> : match_item<primary> iter<1/2> st<18> end<20> MATCH
[PARSER]                         MATCHED SEQ<mul1sp>
[PARSER]                       NOM0<mul1zom> try_match iter<0> MATCH start<17> end<18>
[PARSER]                         SEQ<mul1sp>: beg_match len<2>
[PARSER]                         SEQ<mul1sp> : match_item<star> iter<0/2> st<19> end<20> NO-MATCH
[PARSER]                       NOM0<mul1zom> try_match iter<1> NO-MATCH
[PARSER]                       NOM0<mul1zom>: MATCH count<1> st<17> en<18>
[PARSER]                       MATCHED NOM<mul1zom>
[PARSER]                     SEQ<mul1> : match_item<mul1zom> iter<1/2> st<17> end<20> MATCH
[PARSER]                     MATCHED SEQ<mul1>
[PARSER]                   1OF<multiplicative>: MATCH sub_matcher<mul1>
[PARSER]                 SEQ<add2> : match_item<multiplicative> iter<0/3> st<12> end<20> MATCH
[PARSER]                 SEQ<add2> : match_item<minus> iter<1/3> st<19> end<20> NO-MATCH
[PARSER]                   SEQ<mul1>: beg_match len<2>
[PARSER]                       SEQ<variableReference>: beg_match len<1>
[PARSER]                       SEQ<variableReference> : match_item<kw_or_id> iter<0/1> st<12> end<20> NO-MATCH
[PARSER]                       SEQ<term>: beg_match len<3>
[PARSER]                         MATCHED tok<(> mname<lparen>
[PARSER]                       SEQ<term> : match_item<lparen> iter<0/3> st<12> end<20> MATCH
[PARSER]                         SEQ<expression>: beg_match len<1>
[PARSER]                             SEQ<add1>: beg_match len<3>
[PARSER]                                 SEQ<mul1>: beg_match len<2>
[PARSER]                                     SEQ<variableReference>: beg_match len<1>
[PARSER]                                       MATCHED tok<a> mname<kw_or_id>
[PARSER]                                     SEQ<variableReference> : match_item<kw_or_id> iter<0/1> st<13> end<20> MATCH
[PARSER]                                     MATCHED SEQ<variableReference>
[PARSER]                                   1OF<primary>: MATCH sub_matcher<variableReference>
[PARSER]                                 SEQ<mul1> : match_item<primary> iter<0/2> st<13> end<20> MATCH
[PARSER]                                   NOM0<mul1zom>: beg_match sub_matcher<mul1sp>
[PARSER]                                     SEQ<mul1sp>: beg_match len<2>
[PARSER]                                     SEQ<mul1sp> : match_item<star> iter<0/2> st<14> end<20> NO-MATCH
[PARSER]                                   NOM0<mul1zom> try_match iter<0> NO-MATCH
[PARSER]                                   NOM0<mul1zom>: MATCH count<0> st<18446744073709551615> en<18446744073709551615>
[PARSER]                                   MATCHED NOM<mul1zom>
[PARSER]                                 SEQ<mul1> : match_item<mul1zom> iter<1/2> st<14> end<20> MATCH: EMPTY
[PARSER]                                 MATCHED SEQ<mul1>
[PARSER]                               1OF<multiplicative>: MATCH sub_matcher<mul1>
[PARSER]                             SEQ<add1> : match_item<multiplicative> iter<0/3> st<13> end<20> MATCH
[PARSER]                               MATCHED tok<+> mname<plus>
[PARSER]                             SEQ<add1> : match_item<plus> iter<1/3> st<14> end<20> MATCH
[PARSER]                                 SEQ<mul1>: beg_match len<2>
[PARSER]                                     SEQ<variableReference>: beg_match len<1>
[PARSER]                                       MATCHED tok<v> mname<kw_or_id>
[PARSER]                                     SEQ<variableReference> : match_item<kw_or_id> iter<0/1> st<15> end<20> MATCH
[PARSER]                                     MATCHED SEQ<variableReference>
[PARSER]                                   1OF<primary>: MATCH sub_matcher<variableReference>
[PARSER]                                 SEQ<mul1> : match_item<primary> iter<0/2> st<15> end<20> MATCH
[PARSER]                                   NOM0<mul1zom>: beg_match sub_matcher<mul1sp>
[PARSER]                                     SEQ<mul1sp>: beg_match len<2>
[PARSER]                                     SEQ<mul1sp> : match_item<star> iter<0/2> st<16> end<20> NO-MATCH
[PARSER]                                   NOM0<mul1zom> try_match iter<0> NO-MATCH
[PARSER]                                   NOM0<mul1zom>: MATCH count<0> st<18446744073709551615> en<18446744073709551615>
[PARSER]                                   MATCHED NOM<mul1zom>
[PARSER]                                 SEQ<mul1> : match_item<mul1zom> iter<1/2> st<16> end<20> MATCH: EMPTY
[PARSER]                                 MATCHED SEQ<mul1>
[PARSER]                               1OF<multiplicative>: MATCH sub_matcher<mul1>
[PARSER]                             SEQ<add1> : match_item<multiplicative> iter<2/3> st<15> end<20> MATCH
[PARSER]                             MATCHED SEQ<add1>
[PARSER]                           1OF<additive>: MATCH sub_matcher<add1>
[PARSER]                         SEQ<expression> : match_item<additive> iter<0/1> st<13> end<20> MATCH
[PARSER]                         MATCHED SEQ<expression>
[PARSER]                       SEQ<term> : match_item<expression> iter<1/3> st<13> end<20> MATCH
[PARSER]                         MATCHED tok<)> mname<rparen>
[PARSER]                       SEQ<term> : match_item<rparen> iter<2/3> st<16> end<20> MATCH
[PARSER]                       MATCHED SEQ<term>
[PARSER]                     1OF<primary>: MATCH sub_matcher<term>
[PARSER]                   SEQ<mul1> : match_item<primary> iter<0/2> st<12> end<20> MATCH
[PARSER]                     NOM0<mul1zom>: beg_match sub_matcher<mul1sp>
[PARSER]                       SEQ<mul1sp>: beg_match len<2>
[PARSER]                         MATCHED tok<*> mname<star>
[PARSER]                       SEQ<mul1sp> : match_item<star> iter<0/2> st<17> end<20> MATCH
[PARSER]                           MATCHED tok<7.0> mname<float>
[PARSER]                         1OF<primary>: MATCH sub_matcher<float>
[PARSER]                       SEQ<mul1sp> : match_item<primary> iter<1/2> st<18> end<20> MATCH
[PARSER]                       MATCHED SEQ<mul1sp>
[PARSER]                     NOM0<mul1zom> try_match iter<0> MATCH start<17> end<18>
[PARSER]                       SEQ<mul1sp>: beg_match len<2>
[PARSER]                       SEQ<mul1sp> : match_item<star> iter<0/2> st<19> end<20> NO-MATCH
[PARSER]                     NOM0<mul1zom> try_match iter<1> NO-MATCH
[PARSER]                     NOM0<mul1zom>: MATCH count<1> st<17> en<18>
[PARSER]                     MATCHED NOM<mul1zom>
[PARSER]                   SEQ<mul1> : match_item<mul1zom> iter<1/2> st<17> end<20> MATCH
[PARSER]                   MATCHED SEQ<mul1>
[PARSER]                 1OF<multiplicative>: MATCH sub_matcher<mul1>
[PARSER]               1OF<additive>: MATCH sub_matcher<multiplicative>
[PARSER]             SEQ<expression> : match_item<additive> iter<0/1> st<12> end<20> MATCH
[PARSER]             MATCHED SEQ<expression>
[PARSER]           SEQ<assignment_statement> : match_item<expression> iter<2/3> st<12> end<20> MATCH
[PARSER]           MATCHED SEQ<assignment_statement>
[PARSER]         OPT<st1> MATCH sub<assignment_statement>
[PARSER]         MATCHED OPT<st1>
[PARSER]       SEQ<sequence> : match_item<st1> iter<0/2> st<10> end<20> MATCH
[PARSER]         MATCHED tok<;> mname<semicolon>
[PARSER]       SEQ<sequence> : match_item<semicolon> iter<1/2> st<19> end<20> MATCH
[PARSER]       MATCHED SEQ<sequence>
[PARSER]     NOM0<fnd_statements> try_match iter<0> MATCH start<10> end<19>
[PARSER]       SEQ<sequence>: beg_match len<2>
[PARSER]           SEQ<assignment_statement>: beg_match len<3>
[PARSER]               SEQ<variableDeclaration>: beg_match len<2>
[PARSER]                 1OF<>: NO-MATCH
[PARSER]               SEQ<variableDeclaration> : match_item<oneOf> iter<0/2> st<20> end<20> NO-MATCH
[PARSER]               SEQ<variableReference>: beg_match len<1>
[PARSER]               SEQ<variableReference> : match_item<kw_or_id> iter<0/1> st<20> end<20> NO-MATCH
[PARSER]             1OF<ass1of>: NO-MATCH
[PARSER]           SEQ<assignment_statement> : match_item<ass1of> iter<0/3> st<20> end<20> NO-MATCH
[PARSER]         OPT<st1> EMPTY
[PARSER]         MATCHED OPT<st1>
[PARSER]       SEQ<sequence> : match_item<st1> iter<0/2> st<20> end<20> MATCH: EMPTY
[PARSER]       SEQ<sequence> : match_item<semicolon> iter<1/2> st<20> end<20> NO-MATCH
[PARSER]     NOM0<fnd_statements> try_match iter<1> NO-MATCH
[PARSER]     NOM0<fnd_statements>: MATCH count<1> st<10> en<19>
[PARSER]     MATCHED NOM<fnd_statements>
[PARSER]   SEQ<funcdef> : match_item<fnd_statements> iter<6/8> st<10> end<20> MATCH
[PARSER]     MATCHED tok<}> mname<rcurly>
[PARSER]   SEQ<funcdef> : match_item<rcurly> iter<7/8> st<20> end<20> MATCH
MATCHED sequence<funcdef>
ScannerLightView<0x7fd2e801cdc0>::Dump(id:seq)
 _start<0>
 _end<20>
tok<0> val<function>
tok<1> val<abc>
tok<2> val<(>
tok<3> val<int>
tok<4> val<x>
tok<5> val<,>
tok<6> val<float>
tok<7> val<y>
tok<8> val<)>
tok<9> val<{>
tok<10> val<b>
tok<11> val<=>
tok<12> val<(>
tok<13> val<a>
tok<14> val<+>
tok<15> val<v>
tok<16> val<)>
tok<17> val<*>
tok<18> val<7.0>
tok<19> val<;>
tok<20> val<}>
 DUMP Match<0x7fd2e8016d20> matcher<0x7fd2e801da60:funcdef> view [0..20]
   SEQ<0x7fd2e8023b00>
    DUMP Match<0x7fd2e801dcc0> matcher<0x7fd2e801b2c0:function> view [0..0]
    DUMP Match<0x7fd2e8022250> matcher<0x7fd2e801adf0:kw_or_id> view [1..1]
    DUMP Match<0x7fd2e8016a50> matcher<0x7fd2e80194f0:lparen> view [2..2]
    DUMP Match<0x7fd2e8022870> matcher<0x7fd2e801d960:fnd_args> view [3..7]
      NOM0<0x7fd2e8022ff0>
       DUMP Match<0x7fd2e8015f30> matcher<0x7fd2e8019ad0:argument_decl> view [3..5]
         SEQ<0x7fd2e80169c0>
          DUMP Match<0x7fd2e801f1c0> matcher<0x7fd2e801de60:int> view [3..3]
          DUMP Match<0x7fd2e801f100> matcher<0x7fd2e801adf0:kw_or_id> view [4..4]
          DUMP Match<0x7fd2e8021a30> matcher<0x7fd2e8023cb0:optional> view [5..5]
            OPT<0x7fd2e8023a60>
             DUMP Match<0x7fd2e801c360> matcher<0x7fd2e80190c0:comma> view [5..5]
       DUMP Match<0x7fd2e8012900> matcher<0x7fd2e8019ad0:argument_decl> view [6..7]
         SEQ<0x7fd2e8023510>
          DUMP Match<0x7fd2e801c5f0> matcher<0x7fd2e801cd10:float> view [6..6]
          DUMP Match<0x7fd2e80213c0> matcher<0x7fd2e801adf0:kw_or_id> view [7..7]
          DUMP Match<0x7fd2e8023880> matcher<0x7fd2e8023cb0:optional> view (empty)
            OPT<0x7fd2e8021440>
              EMPTY
    DUMP Match<0x7fd2e8023780> matcher<0x7fd2e8019900:rparen> view [8..8]
    DUMP Match<0x7fd2e8022930> matcher<0x7fd2e8019d30:lcurly> view [9..9]
    DUMP Match<0x7fd2e801b1f0> matcher<0x7fd2e801d9e0:fnd_statements> view [10..19]
      NOM0<0x7fd2e8023800>
       DUMP Match<0x7fd2e801ad20> matcher<0x7fd2e801d8e0:sequence> view [10..19]
         SEQ<0x7fd2e801df60>
          DUMP Match<0x7fd2e8015ba0> matcher<0x7fd2e801d860:st1> view [10..18]
            OPT<0x7fd2e80229b0>
             DUMP Match<0x7fd2e801d1c0> matcher<0x7fd2e801d7e0:assignment_statement> view [10..18]
               SEQ<0x7fd2e8015c20>
                DUMP Match<0x7fd2e801cb20> matcher<0x7fd2e801e340:variableReference> view [10..10]
                  SEQ<0x7fd2e801dda0>
                   DUMP Match<0x7fd2e801a9a0> matcher<0x7fd2e801adf0:kw_or_id> view [10..10]
                DUMP Match<0x7fd2e801fc30> matcher<0x7fd2e80130a0:equals> view [11..11]
                DUMP Match<0x7fd2e8022740> matcher<0x7fd2e801e3c0:expression> view [12..18]
                  SEQ<0x7fd2e80227f0>
                   DUMP Match<0x7fd2e8019580> matcher<0x7fd2e801e640:mul1> view [12..18]
                     SEQ<0x7fd2e8023600>
                      DUMP Match<0x7fd2e801a760> matcher<0x7fd2e801e440:term> view [12..16]
                        SEQ<0x7fd2e8018c80>
                         DUMP Match<0x7fd2e801a510> matcher<0x7fd2e80194f0:lparen> view [12..12]
                         DUMP Match<0x7fd2e801fd50> matcher<0x7fd2e801e3c0:expression> view [13..15]
                           SEQ<0x7fd2e801c200>
                            DUMP Match<0x7fd2e8018bd0> matcher<0x7fd2e801d400:add1> view [13..15]
                              SEQ<0x7fd2e801cc30>
                               DUMP Match<0x7fd2e8023580> matcher<0x7fd2e801e640:mul1> view [13..13]
                                 SEQ<0x7fd2e8023630>
                                  DUMP Match<0x7fd2e8019150> matcher<0x7fd2e801e340:variableReference> view [13..13]
                                    SEQ<0x7fd2e8019600>
                                     DUMP Match<0x7fd2e8016080> matcher<0x7fd2e801adf0:kw_or_id> view [13..13]
                                  DUMP Match<0x7fd2e801c7b0> matcher<0x7fd2e801e5c0:mul1zom> view (empty)
                                    NOM0<0x7fd2e8023900>
                               DUMP Match<0x7fd2e8021ae0> matcher<0x7fd2e80196c0:plus> view [14..14]
                               DUMP Match<0x7fd2e801dae0> matcher<0x7fd2e801e640:mul1> view [15..15]
                                 SEQ<0x7fd2e8019200>
                                  DUMP Match<0x7fd2e8021b60> matcher<0x7fd2e801e340:variableReference> view [15..15]
                                    SEQ<0x7fd2e801ca60>
                                     DUMP Match<0x7fd2e801a6e0> matcher<0x7fd2e801adf0:kw_or_id> view [15..15]
                                  DUMP Match<0x7fd2e801b350> matcher<0x7fd2e801e5c0:mul1zom> view (empty)
                                    NOM0<0x7fd2e801a5c0>
                         DUMP Match<0x7fd2e8016100> matcher<0x7fd2e8019900:rparen> view [16..16]
                      DUMP Match<0x7fd2e801c4c0> matcher<0x7fd2e801e5c0:mul1zom> view [17..18]
                        NOM0<0x7fd2e8015950>
                         DUMP Match<0x7fd2e80197c0> matcher<0x7fd2e801e540:mul1sp> view [17..18]
                           SEQ<0x7fd2e801db90>
                            DUMP Match<0x7fd2e8019e40> matcher<0x7fd2e801b490:star> view [17..17]
                            DUMP Match<0x7fd2e8019a10> matcher<0x7fd2e801a650:float> view [18..18]
          DUMP Match<0x7fd2e8019dc0> matcher<0x7fd2e8018cf0:semicolon> view [19..19]
    DUMP Match<0x7fd2e801a040> matcher<0x7fd2e801a180:rcurly> view [20..20]

This was referenced Jun 18, 2023
@tweakoz
Copy link
Owner Author

tweakoz commented Aug 21, 2023

The PEG based shader frontend is complete enough (as of commit 1968bef) to begin Vulkan and Metal.

@tweakoz tweakoz closed this as completed Aug 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant