The formal art of describing a coat of arms is quite funny, eg "Party per pale argent and vert, a tree eradicated counterchanged". See https://en.wikipedia.org/wiki/Blazon There's an actual formal grammar for it together with an image generator in ocaml (paper in french: https://hal.archives-ouvertes.fr/hal-00640989 , demo: https://www.irif.fr/~eleph/Recherche/Hrld/img-dbs/index.html )
Or see a more complete implementation of English blazonry here https://drawshield.net (disclaimer I am the creator of this site, and to follow up a point below, yes, I did approach Blazonry as a programming language)