WHAT TO READ?
=============

For quick installation tips read INSTALL.

For the list of asn1c command line options, see `asn1c -h` or `man asn1c`.

For more complete documentation on this compiler and on using the
results of compilation please look into ./doc directory.

Please also read the FAQ file.

An excellent book on ASN.1 is written by Olivier Dubuisson:
"ASN.1 Communication between heterogeneous systems", ISBN:0-12-6333361-0.

QUICK START
===========

After building [and installing] the compiler (see INSTALL), you may use
the asn1c command to compile the ASN.1 specification:

	asn1c <module.asn1>

If several specifications contain interdependencies, all of them must be
specified:

	asn1c <module1.asn1> <module2.asn1> ...

The ./examples directory contains several ASN.1 modules and a script to
extract ASN.1 modules from RFC documents. To compile X.509 PKI module:

	./asn1c/asn1c -P ./examples/*PKIX*93*.asn1

In this example, -P option is used to instruct the compiler to print the
compiled text on the standard output instead of creating multiple .c
and .h files for every ASN.1 type found inside the specified ASN.1 modules.
This is useful for debugging and test automation.

The compiler -E and -EF options are used for testing the parser and
the semantic fixer, respectively. These options will instruct the compiler
to dump out the parsed (and fixed) ASN.1 specification as it was
"understood" by the compiler. It might be useful for checking
whether a particular syntactic construction is properly supported
by the compiler.

	asn1c -EF <module-to-test.asn1>


MODEL OF OPERATION
==================

The asn1c compiler works by processing the ASN.1 module specification
in several stages:
1. In the first stage, the ASN.1 file is parsed.
	(Parsing produces an ASN.1 syntax tree for the subsequent levels)
2. In the second stage, the syntax tree is "fixed".
	(Fixing is a process of checking the tree for semantic errors,
	 accompanied by the tree transformation into the canonical form)
3. In the third stage, the syntax tree is compiled into the target language.

There are several command-line options reserved for printing the results
after each stage of operation:

	<parser> => print					(-E)
	<parser> => <fixer> => print				(-E -F)
	<parser> => <fixer> => <compiler> => print		(-P)
	<parser> => <fixer> => <compiler> => save-compiled	[default]


-- 
Lev Walkin
vlm@lionet.info
