{'fraction_non_alphanumeric': 0.016843971631205674, 'fraction_numerical': 0.0, 'mean_word_length': 6.10062893081761, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Compilation Techniques for Defeasible Logic Programs

Defeasible logic programming is a newly developed extension to conventional logic programming that captures some aspects of common-sense reasoning hard to model within the classical approach. Particularly,defeasible logic programs (DLP) are expressive enough to represent incomplete and potentially contradictory information, applying ideas from defeasible argumentation in order to decide between conflicting goals. Nowadays, several architectures designed for executing DLPs are based on abstract machines; the compiler plays a key role in these architectures. Structural simplicity and good maintainability are valuable properties in compilers for recently developed languages like defeasible logic programming. Predictive recursive compilers grant these desired properties. However, the translation of DLPs into instructions of the abstract machine is rather difficult in this setting, particularly when parsing terms and lists. In this paper, we propose some compilation techniques that deal with these problems, field-tested in a DLP compiler entirely written in Java.