Susan, maybe I just don't understand what you are saying. Are you proposing to develop a new DSL with all these structures that needs just a list of parameters to translate any language? How does that differ from what we have now? How do we convince many people to write/maintain that DSL? Why will a new DSL not also break when new structures are introduced, with their inevitable bugs? How do you overcome Ken's observation that you need to present people with something they can understand if you want them to participate? Why not instead just implement such structures as subroutines, compiled or not, that are available to people making/maintaining scripts for languages? Or is this what you are saying, and I have just misunderstood? I am glad you have joined this list Susan. You have lots of ideas, and we all learn from you even when we don't end up being persuaded. John G -----Original Message----- From: liblouis-liblouisxml-bounce@xxxxxxxxxxxxx [mailto:liblouis-liblouisxml-bounce@xxxxxxxxxxxxx] On Behalf Of Susan Jolly Sent: Sunday, October 27, 2013 8:45 AM To: liblouis-liblouisxml@xxxxxxxxxxxxx Subject: [liblouis-liblouisxml] Re: Regex question We still aren't communicating. The immediate problem isn't how to implement an action within the engine. The problem is how the person responsible for maintaining the translation table for a particular braille system can define a special action and the conditions under which it applies. Since liblouis handles a large number of different braille systems, it's been possible to discover that there are many special cases that can be handled by the same simple action if the action is parameterized. The various actions are built into the engine but there needs to be a way for the table maintainer to specify the parameters. If I'm understanding correctly, John Boyer is suggesting a way for the maintainer to specify a particular action plus its parameters. In my opinion the details of the specification should be independent of the method by which the conditions and action are actually implemented in the engine. For example, it isn't necessary that the specification use a regex even if use of a regex were to turn out to be the best way to implement the rule within the engine. I've worked primarily with EBAE but I've encountered some complex special rules that don't seem amenable to the above approach. In these case I've fully implemented the rule, both the conditions and the action, in the engine. An example is the EBAE rule for stammered words that prohibits the use of any contractions directly involved in the stammer. Thus in the stammer g-g-ghost the first (gh) contraction is not used but the second (st) one is. This is a case where the conditions for using the rule require rather complex built-in heuristics for determining whether or not a word is a stammer. I've given all these fully implemented special rules identifiers that can be referenced in a translation table so as to activate the desired rules. Susan For a description of the software, to download it and links to project pages go to http://www.abilitiessoft.com For a description of the software, to download it and links to project pages go to http://www.abilitiessoft.com