From d114b977e90d09fdfe228fa7feee5a1aadec8903 Mon Sep 17 00:00:00 2001 From: Daniel Walton Date: Thu, 14 Sep 2017 18:07:30 +0000 Subject: [PATCH] *: support keywords that begin with uppercase letter Signed-off-by: Daniel Walton VARIABLE tokens must be all uppercase, this allows us to support WORD tokens that begin with an uppercase letter. The "Null0" keyword is an example of where this is needed. The only VARIABLE we had that wasn't already all uppercase was ASN:nn_or_IP-address:nn --- bgpd/bgp_evpn_vty.c | 36 ++++++++++++++++++------------------ bgpd/bgp_mplsvpn.c | 20 ++++++++++---------- bgpd/bgp_route.c | 2 +- bgpd/bgp_routemap.c | 8 ++++---- bgpd/bgp_vty.c | 2 +- bgpd/rfapi/bgp_rfapi_cfg.c | 8 ++++---- bgpd/rfapi/rfapi_vty.c | 4 ++-- lib/command_lex.l | 6 +++--- lib/command_match.c | 1 + 9 files changed, 44 insertions(+), 43 deletions(-) diff --git a/bgpd/bgp_evpn_vty.c b/bgpd/bgp_evpn_vty.c index c05e313298..5a0821bdc3 100644 --- a/bgpd/bgp_evpn_vty.c +++ b/bgpd/bgp_evpn_vty.c @@ -723,7 +723,7 @@ DEFUN(show_ip_bgp_l2vpn_evpn, DEFUN(show_ip_bgp_l2vpn_evpn_rd, show_ip_bgp_l2vpn_evpn_rd_cmd, - "show [ip] bgp l2vpn evpn rd ASN:nn_or_IP-address:nn [json]", + "show [ip] bgp l2vpn evpn rd ASN:NN_OR_IP-ADDRESS:NN [json]", SHOW_STR IP_STR BGP_STR @@ -736,7 +736,7 @@ DEFUN(show_ip_bgp_l2vpn_evpn_rd, int ret; struct prefix_rd prd; - argv_find(argv, argc, "ASN:nn_or_IP-address:nn", &idx_ext_community); + argv_find(argv, argc, "ASN:NN_OR_IP-ADDRESS:NN", &idx_ext_community); ret = str2prefix_rd(argv[idx_ext_community]->arg, &prd); if (!ret) { @@ -764,7 +764,7 @@ DEFUN(show_ip_bgp_l2vpn_evpn_all_tags, DEFUN(show_ip_bgp_l2vpn_evpn_rd_tags, show_ip_bgp_l2vpn_evpn_rd_tags_cmd, - "show [ip] bgp l2vpn evpn rd ASN:nn_or_IP-address:nn tags", + "show [ip] bgp l2vpn evpn rd ASN:NN_OR_IP-ADDRESS:NN tags", SHOW_STR IP_STR BGP_STR @@ -777,7 +777,7 @@ DEFUN(show_ip_bgp_l2vpn_evpn_rd_tags, int ret; struct prefix_rd prd; - argv_find(argv, argc, "ASN:nn_or_IP-address:nn", &idx_ext_community); + argv_find(argv, argc, "ASN:NN_OR_IP-ADDRESS:NN", &idx_ext_community); ret = str2prefix_rd(argv[idx_ext_community]->arg, &prd); if (!ret) { @@ -847,7 +847,7 @@ DEFUN(show_ip_bgp_l2vpn_evpn_all_neighbor_routes, DEFUN(show_ip_bgp_l2vpn_evpn_rd_neighbor_routes, show_ip_bgp_l2vpn_evpn_rd_neighbor_routes_cmd, - "show [ip] bgp l2vpn evpn rd ASN:nn_or_IP-address:nn neighbors A.B.C.D routes [json]", + "show [ip] bgp l2vpn evpn rd ASN:NN_OR_IP-ADDRESS:NN neighbors A.B.C.D routes [json]", SHOW_STR IP_STR BGP_STR @@ -867,7 +867,7 @@ DEFUN(show_ip_bgp_l2vpn_evpn_rd_neighbor_routes, struct prefix_rd prd; u_char uj = use_json(argc, argv); - argv_find(argv, argc, "ASN:nn_or_IP-address:nn", &idx_ext_community); + argv_find(argv, argc, "ASN:NN_OR_IP-ADDRESS:NN", &idx_ext_community); argv_find(argv, argc, "A.B.C.D", &idx_ipv4); ret = str2prefix_rd(argv[idx_ext_community]->arg, &prd); @@ -978,7 +978,7 @@ DEFUN(show_ip_bgp_l2vpn_evpn_all_neighbor_advertised_routes, DEFUN(show_ip_bgp_l2vpn_evpn_rd_neighbor_advertised_routes, show_ip_bgp_l2vpn_evpn_rd_neighbor_advertised_routes_cmd, - "show [ip] bgp l2vpn evpn rd ASN:nn_or_IP-address:nn neighbors A.B.C.D advertised-routes [json]", + "show [ip] bgp l2vpn evpn rd ASN:NN_OR_IP-ADDRESS:NN neighbors A.B.C.D advertised-routes [json]", SHOW_STR IP_STR BGP_STR @@ -998,7 +998,7 @@ DEFUN(show_ip_bgp_l2vpn_evpn_rd_neighbor_advertised_routes, union sockunion su; u_char uj = use_json(argc, argv); - argv_find(argv, argc, "ASN:nn_or_IP-address:nn", &idx_ext_community); + argv_find(argv, argc, "ASN:NN_OR_IP-ADDRESS:NN", &idx_ext_community); argv_find(argv, argc, "A.B.C.D", &idx_ipv4); ret = str2sockunion(argv[idx_ipv4]->arg, &su); @@ -1068,7 +1068,7 @@ DEFUN(show_ip_bgp_l2vpn_evpn_all_overlay, DEFUN(show_ip_bgp_evpn_rd_overlay, show_ip_bgp_evpn_rd_overlay_cmd, - "show [ip] bgp l2vpn evpn rd ASN:nn_or_IP-address:nn overlay", + "show [ip] bgp l2vpn evpn rd ASN:NN_OR_IP-ADDRESS:NN overlay", SHOW_STR IP_STR BGP_STR @@ -1082,7 +1082,7 @@ DEFUN(show_ip_bgp_evpn_rd_overlay, int ret; struct prefix_rd prd; - argv_find(argv, argc, "ASN:nn_or_IP-address:nn", &idx_ext_community); + argv_find(argv, argc, "ASN:NN_OR_IP-ADDRESS:NN", &idx_ext_community); ret = str2prefix_rd(argv[idx_ext_community]->arg, &prd); if (!ret) { @@ -1097,7 +1097,7 @@ DEFUN(show_ip_bgp_evpn_rd_overlay, /* For testing purpose, static route of MPLS-VPN. */ DEFUN(evpnrt5_network, evpnrt5_network_cmd, - "network rd ASN:nn_or_IP-address:nn ethtag WORD label WORD esi WORD gwip routermac WORD [route-map WORD]", + "network rd ASN:NN_OR_IP-ADDRESS:NN ethtag WORD label WORD esi WORD gwip routermac WORD [route-map WORD]", "Specify a network to announce via BGP\n" "IP prefix\n" "IPv6 prefix\n" @@ -1137,7 +1137,7 @@ DEFUN(evpnrt5_network, /* For testing purpose, static route of MPLS-VPN. */ DEFUN(no_evpnrt5_network, no_evpnrt5_network_cmd, - "no network rd ASN:nn_or_IP-address:nn ethtag WORD label WORD esi WORD gwip ", + "no network rd ASN:NN_OR_IP-ADDRESS:NN ethtag WORD label WORD esi WORD gwip ", NO_STR "Specify a network to announce via BGP\n" "IP prefix\n" @@ -2388,7 +2388,7 @@ DEFUN(show_bgp_l2vpn_evpn_route, */ DEFUN(show_bgp_l2vpn_evpn_route_rd, show_bgp_l2vpn_evpn_route_rd_cmd, - "show bgp l2vpn evpn route rd ASN:nn_or_IP-address:nn [type ] [json]", + "show bgp l2vpn evpn route rd ASN:NN_OR_IP-ADDRESS:NN [type ] [json]", SHOW_STR BGP_STR L2VPN_HELP_STR @@ -2456,7 +2456,7 @@ DEFUN(show_bgp_l2vpn_evpn_route_rd, */ DEFUN(show_bgp_l2vpn_evpn_route_rd_macip, show_bgp_l2vpn_evpn_route_rd_macip_cmd, - "show bgp l2vpn evpn route rd ASN:nn_or_IP-address:nn mac WORD [ip WORD] [json]", + "show bgp l2vpn evpn route rd ASN:NN_OR_IP-ADDRESS:NN mac WORD [ip WORD] [json]", SHOW_STR BGP_STR L2VPN_HELP_STR @@ -2841,7 +2841,7 @@ ALIAS_HIDDEN(show_bgp_l2vpn_evpn_route, show_bgp_evpn_route_cmd, ALIAS_HIDDEN( show_bgp_l2vpn_evpn_route_rd, show_bgp_evpn_route_rd_cmd, - "show bgp evpn route rd ASN:nn_or_IP-address:nn [type ]", + "show bgp evpn route rd ASN:NN_OR_IP-ADDRESS:NN [type ]", SHOW_STR BGP_STR EVPN_HELP_STR "EVPN route information\n" "Route Distinguisher\n" @@ -2852,7 +2852,7 @@ ALIAS_HIDDEN( ALIAS_HIDDEN( show_bgp_l2vpn_evpn_route_rd_macip, show_bgp_evpn_route_rd_macip_cmd, - "show bgp evpn route rd ASN:nn_or_IP-address:nn mac WORD [ip WORD]", + "show bgp evpn route rd ASN:NN_OR_IP-ADDRESS:NN mac WORD [ip WORD]", SHOW_STR BGP_STR EVPN_HELP_STR "EVPN route information\n" "Route Distinguisher\n" @@ -2980,7 +2980,7 @@ DEFUN_NOSH (exit_vni, DEFUN (bgp_evpn_vni_rd, bgp_evpn_vni_rd_cmd, - "rd ASN:nn_or_IP-address:nn", + "rd ASN:NN_OR_IP-ADDRESS:NN", "Route Distinguisher\n" "ASN:XX or A.B.C.D:XX\n") { @@ -3009,7 +3009,7 @@ DEFUN (bgp_evpn_vni_rd, DEFUN (no_bgp_evpn_vni_rd, no_bgp_evpn_vni_rd_cmd, - "no rd ASN:nn_or_IP-address:nn", + "no rd ASN:NN_OR_IP-ADDRESS:NN", NO_STR "Route Distinguisher\n" "ASN:XX or A.B.C.D:XX\n") diff --git a/bgpd/bgp_mplsvpn.c b/bgpd/bgp_mplsvpn.c index baf081c815..694cb14790 100644 --- a/bgpd/bgp_mplsvpn.c +++ b/bgpd/bgp_mplsvpn.c @@ -236,7 +236,7 @@ int bgp_nlri_parse_vpn(struct peer *peer, struct attr *attr, /* For testing purpose, static route of MPLS-VPN. */ DEFUN (vpnv4_network, vpnv4_network_cmd, - "network A.B.C.D/M rd ASN:nn_or_IP-address:nn (0-1048575)", + "network A.B.C.D/M rd ASN:NN_OR_IP-ADDRESS:NN (0-1048575)", "Specify a network to announce via BGP\n" "IPv4 prefix\n" "Specify Route Distinguisher\n" @@ -256,7 +256,7 @@ DEFUN (vpnv4_network, DEFUN (vpnv4_network_route_map, vpnv4_network_route_map_cmd, - "network A.B.C.D/M rd ASN:nn_or_IP-address:nn (0-1048575) route-map WORD", + "network A.B.C.D/M rd ASN:NN_OR_IP-ADDRESS:NN (0-1048575) route-map WORD", "Specify a network to announce via BGP\n" "IPv4 prefix\n" "Specify Route Distinguisher\n" @@ -280,7 +280,7 @@ DEFUN (vpnv4_network_route_map, /* For testing purpose, static route of MPLS-VPN. */ DEFUN (no_vpnv4_network, no_vpnv4_network_cmd, - "no network A.B.C.D/M rd ASN:nn_or_IP-address:nn (0-1048575)", + "no network A.B.C.D/M rd ASN:NN_OR_IP-ADDRESS:NN (0-1048575)", NO_STR "Specify a network to announce via BGP\n" "IPv4 prefix\n" @@ -301,7 +301,7 @@ DEFUN (no_vpnv4_network, DEFUN (vpnv6_network, vpnv6_network_cmd, - "network X:X::X:X/M rd ASN:nn_or_IP-address:nn (0-1048575) [route-map WORD]", + "network X:X::X:X/M rd ASN:NN_OR_IP-ADDRESS:NN (0-1048575) [route-map WORD]", "Specify a network to announce via BGP\n" "IPv6 prefix /, e.g., 3ffe::/16\n" "Specify Route Distinguisher\n" @@ -331,7 +331,7 @@ DEFUN (vpnv6_network, /* For testing purpose, static route of MPLS-VPN. */ DEFUN (no_vpnv6_network, no_vpnv6_network_cmd, - "no network X:X::X:X/M rd ASN:nn_or_IP-address:nn (0-1048575)", + "no network X:X::X:X/M rd ASN:NN_OR_IP-ADDRESS:NN (0-1048575)", NO_STR "Specify a network to announce via BGP\n" "IPv6 prefix /, e.g., 3ffe::/16\n" @@ -632,7 +632,7 @@ int bgp_show_mpls_vpn(struct vty *vty, afi_t afi, struct prefix_rd *prd, DEFUN (show_bgp_ip_vpn_all_rd, show_bgp_ip_vpn_all_rd_cmd, - "show bgp "BGP_AFI_CMD_STR" vpn all [rd ASN:nn_or_IP-address:nn] [json]", + "show bgp "BGP_AFI_CMD_STR" vpn all [rd ASN:NN_OR_IP-ADDRESS:NN] [json]", SHOW_STR IP_STR BGP_STR @@ -670,7 +670,7 @@ DEFUN (show_bgp_ip_vpn_all_rd, DEFUN (show_ip_bgp_vpn_rd, show_ip_bgp_vpn_rd_cmd, - "show [ip] bgp "BGP_AFI_CMD_STR" vpn rd ASN:nn_or_IP-address:nn", + "show [ip] bgp "BGP_AFI_CMD_STR" vpn rd ASN:NN_OR_IP-ADDRESS:NN", SHOW_STR IP_STR BGP_STR @@ -736,7 +736,7 @@ DEFUN (show_ip_bgp_vpn_all_tags, DEFUN (show_ip_bgp_vpn_rd_tags, show_ip_bgp_vpn_rd_tags_cmd, - "show [ip] bgp rd ASN:nn_or_IP-address:nn tags", + "show [ip] bgp rd ASN:NN_OR_IP-ADDRESS:NN tags", SHOW_STR IP_STR BGP_STR @@ -826,7 +826,7 @@ DEFUN (show_ip_bgp_vpn_all_neighbor_routes, DEFUN (show_ip_bgp_vpn_rd_neighbor_routes, show_ip_bgp_vpn_rd_neighbor_routes_cmd, - "show [ip] bgp rd ASN:nn_or_IP-address:nn neighbors A.B.C.D routes [json]", + "show [ip] bgp rd ASN:NN_OR_IP-ADDRESS:NN neighbors A.B.C.D routes [json]", SHOW_STR IP_STR BGP_STR @@ -966,7 +966,7 @@ DEFUN (show_ip_bgp_vpn_all_neighbor_advertised_routes, DEFUN (show_ip_bgp_vpn_rd_neighbor_advertised_routes, show_ip_bgp_vpn_rd_neighbor_advertised_routes_cmd, - "show [ip] bgp rd ASN:nn_or_IP-address:nn neighbors A.B.C.D advertised-routes [json]", + "show [ip] bgp rd ASN:NN_OR_IP-ADDRESS:NN neighbors A.B.C.D advertised-routes [json]", SHOW_STR IP_STR BGP_STR diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index fabe4483e5..ee578ac001 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -10464,7 +10464,7 @@ struct bgp_distance { DEFUN (show_bgp_afi_vpn_rd_route, show_bgp_afi_vpn_rd_route_cmd, - "show bgp "BGP_AFI_CMD_STR" vpn rd ASN:nn_or_IP-address:nn [json]", + "show bgp "BGP_AFI_CMD_STR" vpn rd ASN:NN_OR_IP-ADDRESS:NN [json]", SHOW_STR BGP_STR BGP_AFI_HELP_STR diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c index f5663e9262..bb3def2fbe 100644 --- a/bgpd/bgp_routemap.c +++ b/bgpd/bgp_routemap.c @@ -3972,7 +3972,7 @@ DEFUN (no_set_lcommunity_delete, DEFUN (set_ecommunity_rt, set_ecommunity_rt_cmd, - "set extcommunity rt ASN:nn_or_IP-address:nn...", + "set extcommunity rt ASN:NN_OR_IP-ADDRESS:NN...", SET_STR "BGP extended community attribute\n" "Route Target extended community\n" @@ -3992,7 +3992,7 @@ DEFUN (set_ecommunity_rt, DEFUN (no_set_ecommunity_rt, no_set_ecommunity_rt_cmd, - "no set extcommunity rt ASN:nn_or_IP-address:nn...", + "no set extcommunity rt ASN:NN_OR_IP-ADDRESS:NN...", NO_STR SET_STR "BGP extended community attribute\n" @@ -4006,7 +4006,7 @@ DEFUN (no_set_ecommunity_rt, DEFUN (set_ecommunity_soo, set_ecommunity_soo_cmd, - "set extcommunity soo ASN:nn_or_IP-address:nn...", + "set extcommunity soo ASN:NN_OR_IP-ADDRESS:NN...", SET_STR "BGP extended community attribute\n" "Site-of-Origin extended community\n" @@ -4026,7 +4026,7 @@ DEFUN (set_ecommunity_soo, DEFUN (no_set_ecommunity_soo, no_set_ecommunity_soo_cmd, - "no set extcommunity soo ASN:nn_or_IP-address:nn...", + "no set extcommunity soo ASN:NN_OR_IP-ADDRESS:NN...", NO_STR SET_STR "BGP extended community attribute\n" diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index f9105bfaf7..4ddb499821 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -9868,7 +9868,7 @@ static int bgp_show_neighbor_vty(struct vty *vty, const char *name, /* "show [ip] bgp neighbors" commands. */ DEFUN (show_ip_bgp_neighbors, show_ip_bgp_neighbors_cmd, - "show [ip] bgp [ VIEWVRFNAME] [>] neighbors [] [json]", + "show [ip] bgp [ VIEWVRFNAME] [>] neighbors [] [json]", SHOW_STR IP_STR BGP_STR diff --git a/bgpd/rfapi/bgp_rfapi_cfg.c b/bgpd/rfapi/bgp_rfapi_cfg.c index a39fe068bd..d1742a0ebc 100644 --- a/bgpd/rfapi/bgp_rfapi_cfg.c +++ b/bgpd/rfapi/bgp_rfapi_cfg.c @@ -385,7 +385,7 @@ DEFUN (vnc_defaults_rt_both, DEFUN (vnc_defaults_rd, vnc_defaults_rd_cmd, - "rd ASN:nn_or_IP-address:nn", + "rd ASN:NN_OR_IP-ADDRESS:NN", "Specify default route distinguisher\n" "Route Distinguisher (: | : | auto:vn: )\n") { @@ -2841,7 +2841,7 @@ DEFUN (vnc_nve_group_no_l2rd, DEFUN (vnc_nve_group_rd, vnc_nve_group_rd_cmd, - "rd ASN:nn_or_IP-address:nn", + "rd ASN:NN_OR_IP-ADDRESS:NN", "Specify route distinguisher\n" "Route Distinguisher (: | : | auto:vn: )\n") { @@ -3295,7 +3295,7 @@ DEFUN (vnc_vrf_policy_rt_both, DEFUN (vnc_vrf_policy_rd, vnc_vrf_policy_rd_cmd, - "rd ASN:nn_or_IP-address:nn", + "rd ASN:NN_OR_IP-ADDRESS:NN", "Specify default VRF route distinguisher\n" "Route Distinguisher (: | : | auto:nh: )\n") { @@ -3562,7 +3562,7 @@ DEFUN (vnc_l2_group_no_labels, DEFUN (vnc_l2_group_rt, vnc_l2_group_rt_cmd, - "rt ASN:nn_or_IP-address:nn", + "rt ASN:NN_OR_IP-ADDRESS:NN", "Specify route targets\n" "Export+import filters\n" "Export filters\n" diff --git a/bgpd/rfapi/rfapi_vty.c b/bgpd/rfapi/rfapi_vty.c index e7314d2983..7ef12d51c6 100644 --- a/bgpd/rfapi/rfapi_vty.c +++ b/bgpd/rfapi/rfapi_vty.c @@ -4791,7 +4791,7 @@ static int vnc_add_vrf_prefix(struct vty *vty, const char *arg_vrf, DEFUN (add_vrf_prefix_rd_label_pref, add_vrf_prefix_rd_label_pref_cmd, - "add vrf NAME prefix [{rd ASN:nn_or_IP-address|label (0-1048575)|preference (0-4294967295)}]", + "add vrf NAME prefix [{rd ASN:NN_OR_IP-ADDRESS|label (0-1048575)|preference (0-4294967295)}]", "Add\n" "To a VRF\n" "VRF name\n" @@ -4914,7 +4914,7 @@ static int vnc_clear_vrf(struct vty *vty, struct bgp *bgp, const char *arg_vrf, DEFUN (clear_vrf_prefix_rd, clear_vrf_prefix_rd_cmd, - "clear vrf NAME [prefix ] [rd ASN:nn_or_IP-address]", + "clear vrf NAME [prefix ] [rd ASN:NN_OR_IP-ADDRESS]", "Clear stored data\n" "From a VRF\n" "VRF name\n" diff --git a/lib/command_lex.l b/lib/command_lex.l index 59d0d840a8..436f3a241d 100644 --- a/lib/command_lex.l +++ b/lib/command_lex.l @@ -35,14 +35,14 @@ } } while(0) %} -WORD (\-|\+)?[a-z0-9\*][-+_a-zA-Z0-9\*]* IPV4 A\.B\.C\.D IPV4_PREFIX A\.B\.C\.D\/M IPV6 X:X::X:X IPV6_PREFIX X:X::X:X\/M MAC M:A:C MAC_PREFIX M:A:C\/M -VARIABLE [A-Z][-_a-zA-Z:0-9]+ +VARIABLE [A-Z][-_A-Z:0-9]+ +WORD (\-|\+)?[a-zA-Z0-9\*][-+_a-zA-Z0-9\*]* NUMBER (\-|\+)?[0-9]{1,20} RANGE \({NUMBER}[ ]?\-[ ]?{NUMBER}\) @@ -64,7 +64,6 @@ RANGE \({NUMBER}[ ]?\-[ ]?{NUMBER}\) %} [ \t]+ LOC_STEP /* ignore whitespace */; -{WORD} {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return WORD;} {IPV4} {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return IPV4;} {IPV4_PREFIX} {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return IPV4_PREFIX;} {IPV6} {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return IPV6;} @@ -72,6 +71,7 @@ RANGE \({NUMBER}[ ]?\-[ ]?{NUMBER}\) {MAC} {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return MAC;} {MAC_PREFIX} {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return MAC_PREFIX;} {VARIABLE} {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return VARIABLE;} +{WORD} {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return WORD;} {RANGE} {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return RANGE;} . {return yytext[0];} %% diff --git a/lib/command_match.c b/lib/command_match.c index 62e7c63068..6384abe5ce 100644 --- a/lib/command_match.c +++ b/lib/command_match.c @@ -214,6 +214,7 @@ static enum matcher_rv command_match_r(struct graph_node *start, vector vline, fprintf(stdout, "\"%-20s\" matches \"%-30s\" ? ", input_token, token->text); enum match_type mt = match_token(token, input_token); + fprintf(stdout, "type: %d ", token->type); fprintf(stdout, "min: %d - ", minmatch); switch (mt) { case trivial_match: -- 2.39.5