84                    opt<seq<spaced_ch<'('>, PART_NUMBER, one<')'>>>,
 
   85                    opt<seq<spaced_ch<':'>, PART_VERSION>>,
 
   86                    opt<seq<spaced_ch<';'>, PART_DESCRIPTION>>
 
 
  162int main( 
int argc, 
char** argv )
 
  168        printf( 
"usage: %s <complex|simple> <filename>", argv[0] );
 
  172    std::string chosen_selector = argv[1];
 
  173    std::filesystem::path filepath( argv[2] );
 
  175    file_input in( filepath );
 
  177    const std::size_t issues = tao::pegtl::analyze<GRAMMAR>();
 
  181        std::cout << 
"\n***ERROR***: " << issues << 
" issues found in the grammar!\n";
 
  185    std::unique_ptr<parse_tree::node> root;
 
  187    if( chosen_selector == 
"complex" )
 
  189        root = parse_tree::parse<GRAMMAR, COMPLEX_SELECTOR>( in );
 
  191    else if( chosen_selector == 
"simple" )
 
  193        root = parse_tree::parse<GRAMMAR, SIMPLE_SELECTOR>( in );
 
  197        printf( 
"Invalid selector '%s' requested. Valid values are: complex or simple. \n",
 
  199        printf( 
"usage: %s <complex|simple> <filename>\n", argv[0] );
 
  205        parse_tree::print_dot( std::cout, *root );
 
  209        std::cout << 
"\n***ERROR***: No root tree node!\n";
 
  212        standard_trace<GRAMMAR>( in );
 
 
parse_tree::selector< PEGTL_RULE, parse_tree::store_content::on< STR_SEGMENT_EXCLUDING< PART_NAME_FILTER >, STR_SEGMENT_EXCLUDING< PART_NUMBER_FILTER >, STR_SEGMENT_EXCLUDING< PART_VERSION_FILTER >, STR_SEGMENT_EXCLUDING<>, CURRENT_FORMAT_NUMBER, UNMATCHED_CONTENT >, parse_tree::remove_content::on< FORMAT, PART >, parse_tree::apply< FOLD_CONTENT >::on< PART_NAME, PART_NUMBER, PART_VERSION, PART_DESCRIPTION > > COMPLEX_SELECTOR
 
static void transform(Node &n)