Docs GODI Archive
Projects Blog Link DB

Search GODI:


More options
File doc/godi-frontc/html/Frontc.html GODI Package godi-frontc
 
   Frontc.html    frontc.cmi_pretty    Sources  

Module Frontc


module Frontc: sig .. end
FrontC is an OCAML library providing facilities for parsing source file in C language.

Although it is designed for parsing ANSI C, it provides also support for old K&R C style and for some GCC extensions.

It provides also a limited degraded mode allowing to parse file although all type information is not available and preprocessor directives are still in the source.


Author(s): Hugues Cassé


val version : string

FrontC is an OCAML library providing facilities for parsing source file in C language.

Although it is designed for parsing ANSI C, it provides also support for old K&R C style and for some GCC extensions.

It provides also a limited degraded mode allowing to parse file although all type information is not available and preprocessor directives are still in the source.



type parsing_arg =

| FROM_STDIN (*Parse the standard input.*)
| FROM_CHANNEL of Pervasives.in_channel (*Parse the given channel.*)
| FROM_FILE of string (*Parse the given file.*)
| USE_CPP (*Use the C preprocessor.*)
| PREPROC of string (*Path to the preprocessor.*)
| DEF of string (*Pass this definition to CPP.*)
| UNDEF of string (*Undefine the given symbol for CPP.*)
| INCLUDE of string (*Include the given file by the CPP.*)
| INCLUDE_DIR of string (*Use the given directory for retrieving includes.*)
| OPTION of string (*Pass the given option directl to the CPP.*)
| ERROR of Pervasives.out_channel (*Use the given channel for outputting errors.*)
| INTERACTIVE of bool (*Is this session interactive (from console).*)
Parameters for building the reader handler.

type parsing_result =
| PARSING_ERROR (*Parsing failure. Error outputted.*)
| PARSING_OK of Cabs.definition list (*Success. Return list of read definitions.*)
Result of a parsing.
val trans_old_fun_def : Cabs.single_name * Cabs.name_group list * Cabs.body -> Cabs.definition
Transform an old K&R C function definition into a new ANSI one.
Raises UnconsistentDef Raised when an undeclared parameter is found in the function definition.
Returns New function definition.
def : Old function definition.
val trans_old_fun_defs : Cabs.definition list -> Cabs.definition list
Transform all old function definition into new ones.
Raises UnconsistentDef Raised if some old function definition does not define the type of a parameter.
Returns Definitions with all old function definitions transformed.
defs : Defs to transform.
val convert_to_xml : Cabs.definition list -> Cxml.document
Convert the given C file abstract repersentation into XML.
Raises UnconsistentDef Raised if the file contains some old function definition whose one parameter is not defined.
Returns XML document result of conversion.
file : C file to convert.
val parse : parsing_arg list -> parsing_result
val parse_interactive : Pervasives.in_channel -> Pervasives.out_channel -> parsing_result
Parse the input channel in interactive way, that is, as coming from the console. Error are displayed in a specific way.
Returns Read C definitions.
inp : Input to read the C source from.
out : For outputting errors.
val parse_console : 'a -> parsing_result
Parse the C source from the console. It exactly equals to "parse_interactive stdin stderr".
Returns Read C definitions.
val parse_channel : Pervasives.in_channel -> Pervasives.out_channel -> parsing_result
Parse the C source from a non-interactive channel. It may be useful when the source come from a piped channel from the C preprocessor, for example.*
Returns Read C definitions.
input : Input channel to read the source from.
out : Output channel to display errors.
val parse_file : string -> Pervasives.out_channel -> parsing_result
Parse a C source passed as a file path.
Returns Read C definitions.

NOTE: an error during the read of the file returned as a parse failure.

file_name : Path of the file to read.
out : Channel used for displaying errors.

This web site is published by Informatikbüro Gerd Stolpmann
Powered by Caml