I would say that you have the horse and the cart inverted, that you need to start by deciding how utterances are structured syntactically and semantically, and at the end of the process figure out the sounds and letters that this maps to. You also need to sort out how general and flexible you want this program to be. If you were aiming to randomly select human-like languages, you'd want to identify N properties with, say, two values (could be any number, of course) and use those settings to design the language. A toy example would be the following property list (in descending order of value):
Subject precedes verb
Verb precedes object
Subject precedes object
Subject has case marking
Object has case marking
Verb agrees with subject
Verb agrees with object
English would be "language 114" given this list and Danish would be "language 112". Then you'd need a really big property list, with at least 32,000 properties.
Alas there is no such list out there, so you'd need to do a lot of creating. A good starting point would be to try to specify all of the elements of a sentence, then ask how pairs (or triples) of words might be ordered. You'd need more than just subject, object and verb: what about "location", "instrument", "beneficiary" and various other functional relations? Subjects (objects, and so on) aren't just single words, they are entire phrases centered around a noun, embellished with... adjectives? articles? numerals? possessives? A verb in a language could just be a verb, but in many languages you have to say whether it is past, present or future tense (and maybe past and present are the same; maybe present and future are the same). When you decide that you want a language with verbs indicating past, present and future tense, then you have to make a decision about how that is indicated, for example you could mark present with one prefix and future with a different prefix; or they could both be suffixes; or one could be a prefix and the other a suffix. Suppose you decide that the present is marked with a prefix /kan/: then you have to decide if there are any rules of pronunciation where /kan-plaf/ is changed to [kamplaf] or [kanblaf] or [kamblaf]... that list is enormous.
Your question essentially reduces to the field-worker's training problem: what kind of questions do you need to ask when you're attempting to describe any random language. There are a number of guides out there, which tend to spend time on issues that are not relevant to your concern (ethics, how to record and organize data, how to evaluate informant responses) but will also include some typological overview (so that you aren't freaked out when you learn that in some languages, the verb can actually precede the subject and even stranger, the object can precede the subject). Knowing what the dimensions of variation between known human languages is a first step. A starter list of readings would include Bowern Linguistic Fieldwork: A Practical Guide, Crowley Field Linguistics: A Beginner's Guide, Vaux Linguistic Field Methods, Whaley Introduction to Typology: The Unity and Diversity of Language, Vellupillai An Introduction to Linguistic Typology, Comrie Language Universals and Linguistic Typology: Syntax and Morphology, Payne Describing Morphosyntax: A Guide for Field Linguists and Exploring Language Structure: A Student's Guide, Merrifield Laboratory Manual for Morphology and Syntax, Bickford Morphology and Syntax: Tools for Analyzing the World's Languages. Maybe if you want just one book, get Comrie.