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

If you haven't installed the asn1c yet, read the INSTALL file for
a short installation guide.

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 phase, please look into asn1c-quick.pdf and
asn1c-usage.{pdf,html}.
If you are building the compiler from the sources, these documents reside
in the ./doc directory, otherwise they lie nearby the README file you're
reading right now.

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 (also check out asn1c-quick.pdf)
============================================

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

	asn1c <module.asn1>			# Compile module

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

	asn1c <module1.asn1> <module2.asn1> ...	# Compile interdependent modules

If you are building the asn1c from the sources, the ./examples directory
contains several ASN.1 modules and a script to extract the ASN.1 modules
from RFC documents. Refer to the README file in that directory.
To compile the X.509 PKI module:

	./asn1c/asn1c -P ./examples/rfc3280-*.asn1	# Compile-n-print

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>		# Check semantic validity


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
