The Curry Preprocessor ====================== This repository contains the implementation of the Curry preprocessor `currypp` which supports some extensions for Curry programs, like * Integrated code, i.e., the integration of code written in some other language into Curry programs, like regular expressions, format specifications (`printf`), HTML and XML code, * default rules, * contracts. Details about the usage can be found in the manual. Here is a short summary of the usage of integrated code. General usage of the code integrator: ------------------------------------- If the pre-processor is installed as the binary `currypp`, Curry source files containing integrated code can be translated by running `currypp` as follows: currypp foreigncode [-o] The parameters are: * The name of the original Curry source file. * The name of the file containing the input to be translated. * The name of the output file where the translated code should be stored. * If the optional parameter `-o` is given, a copy of the translated code is stored in the file `org-filename.CURRYPP`. * To preprocess SQL: --model:_SQLCode.info Writing files with integrated code: ----------------------------------- The basic syntax of integrated code in Curry program looks like ``langtag expression'' Here, `langtag` is a tag indicating the kind of integrated language, and `expression` is an expression of this language. If `` or '' are used in the expression itself, the enclosing accents need to be of higher number than the inner graves, i.e., the following integrated code expression is also allowed: ````langtag expression'''' The number of opening and closing accents must always be identical. Currently, the following `langtag` values are supported: format - `printf` Syntax printf - same as above (but with an implicit `putStr` call) regex - Polymorphic regex expressions html - Standard HTML xml - Standard XML sql - SQL syntax See the examples and source file comments for further details.