#! /usr/bin/gawk -f # Last edited on 2025-05-04 16:36:34 by stolfi BEGIN { if (maxAlpha == "") { arg_error("must define {maxAlpha}"); } abort = -1; na = 0; } (abort >= 0) { exit(abort); } /^ *([#]|$)/ { next; } (NF != 3) { data_error("invalid {NF}"); } ($1 !~ /^[a-z]$/) { data_error("bad token type"); } (na >= maxAlpha) { exit 0; } //{ print; } ($1 == "a") { na++; } END { exit(abort); } function arg_error(msg) { printf "%s\n", msg > "/dev/stderr"; printf "usage: %s\n", usage > "/dev/stderr"; abort = 1; exit(1); } function data_error(msg) { printf "line %d: %s\n", FNR, msg > "/dev/stderr"; abort = 1; exit(1); }