DocumentCode
1255885
Title
A domain-specific language for regular sets of strings and trees
Author
Klarlund, Nils ; Schwartzbach, Michael I.
Author_Institution
AT&T Labs.-Res., Denmark
Volume
25
Issue
3
fYear
1999
Firstpage
378
Lastpage
386
Abstract
We propose a novel high level programming notation, called FIDO, that we have designed to concisely express regular sets of strings or trees. In particular, it can be viewed as a domain-specific language for the expression of finite state automata on large alphabets (of sometimes astronomical size). FIDO is based on a combination of mathematical logic and programming language concepts. This combination shares no similarities with usual logic programming languages. FIDO compiles into finite state string or tree automata, so there is no concept of run-time. It has already been applied to a variety of problems of considerable complexity and practical interest. We motivate the need for a language like FIDO, and discuss our design and its implementation. Also, we briefly discuss design criteria for domain-specific languages that we have learned from the work with FIDO. We show how recursive data types, unification, implicit coercions, and subtyping can be merged with a variation of predicate logic, called the Monadic Second-order Logic (M2L) on trees. FIDO is translated first into pure M2L via suitable encodings, and finally into finite state automata through the MONA tool
Keywords
data structures; finite state machines; formal logic; high level languages; set theory; string matching; trees (mathematics); type theory; FIDO; MONA tool; Monadic Second-order Logic; design criteria; domain-specific language; finite state automata; finite state string; high level programming notation; implicit coercions; large alphabets; logic programming languages; mathematical logic; predicate logic; programming language concepts; pure M2L; recursive data types; regular sets; subtyping; tree automata; trees; unification; Application software; Computer languages; Domain specific languages; Embedded computing; Encoding; Learning automata; Logic programming; Runtime; Software systems; Tree graphs;
fLanguage
English
Journal_Title
Software Engineering, IEEE Transactions on
Publisher
ieee
ISSN
0098-5589
Type
jour
DOI
10.1109/32.798326
Filename
798326
Link To Document