CIAOPP est un cadre de processeur de programme pour CIAO. CIAOPP effectue un certain nombre de tâches de transformation de débogage, d'analyse et de transformation source-source:
Inférence des propriétés des prédicats et des littéraux du programme ( types , modes et autres propriétés d'instanciation variables , non-fonctionnement , détermination , limites sur le coût de calcul , limites sur les tailles des termes du programme, etc.).
Certains types de débogage et de vérification statiques , trouvant des erreurs avant d'exécuter le programme. Cela comprend la vérification de la façon dont les programmes appellent les prédicats de la bibliothèque du système et de la vérification des assertions présentes dans le programme ou dans d'autres modules utilisés par le programme. Ces affirmations représentent des spécifications essentiellement partielles du programme.
Plusieurs types de transformations de programme source à source tels que la spécialisation du programme , le tranchage , l'évaluation partielle , la parallélisation du programme (en tenant compte du contrôle de granularité ), l'inclusion de tests d'exécution pour les affirmations qui ne peuvent pas être vérifiés complètement au temps de compilation, etc.
Les informations générées par l'analyse et les affirmations dans les spécifications sont toutes rédigées dans le même langage d'assertion , qui est à son tour également utilisée par le générateur de documentation du système CIAO, lpdoc .
Ce référentiel contient le cadre de préprocesseur générique ainsi que certaines analyses de base, transformations et support linguistique. D'autres fonctionnalités (y compris la prise en charge d'une variété de langages de programmation) sont distribuées sous forme de faisceaux distincts.
CIAOPP est distribué sous la licence publique générale GNU.
Par défaut, Ciao détectera et construire CIAOPP pendant la compilation du système. Afin de personnaliser les options de configuration par défaut, veuillez vous référer aux instructions d'installation de CIAO.
Il est possible de faire une construction et une installation distinctes de CIAOPP avec la commande suivante:
$ ciao get ciaopp