Embedding an AST in a CST

Run Settings
LanguageRaku
Language Version
Run Command
# See https://www.reddit.com/r/ProgrammingLanguages/comments/1adxfhk/comment/kk72mik/ constant \source = ' class foo: field bar = 42 method baz: some code goes here enum qux '; grammar some-language { token TOP { \s* <classDecl>* %% \s* } token classDecl { <normalDecl> | <enumDecl> } token normalDecl { 'class' \s+ <ident> \s* ':' \n [ <field> | <method> ]* } token field { \s* 'field' \s+ <ident> \s* '=' \s* \d+ \n } token method { \s* 'method' \s+ <ident> \s* ':' \n [ \h* \S+ \V* \n ]* } token enumDecl { \s* 'enum' \s+ <ident> } } class some-language-ast { method field ($cst) { $cst.make: "field-name: $cst<ident>" } method enumDecl ($cst) { $cst.make: "enum-name: $cst<ident>" } } given some-language .parse: source, actions => some-language-ast { say .<classDecl>[1]<enumDecl>\ .ast; # enum-name: qux say .<classDecl>[0]<normalDecl><field>[0].ast; # field-name: bar }
Editor Settings
Theme
Key bindings
Full width
Lines