BEGIN { print "token :+ [+STAG tnt]."; print "stag-list := *list*."; print "stag-cons := *cons*."; print "stag-null := *null*."; } $1 ~ "[a-z]" { print "stag-" $1 "-list := stag-list."; print "stag-" $1 "-null := stag-null & stag-" $1 "-list."; print "stag-" $1 "-cons := \n\tstag-cons & stag-" $1 "-list & \n\t< \"" $1 "\" > .\n"; print $1 " :+ \n\t[TOKENS.+LIST.FIRST.+STAG.+TAGS stag-" $1 "-list ].\n" }