mirror of https://gerrit.osmocom.org/asn1c
70 lines
2.2 KiB
Plaintext
70 lines
2.2 KiB
Plaintext
|
WHAT TO READ?
|
|||
|
=============
|
|||
|
|
|||
|
For quick installation tips read INSTALL.
|
|||
|
|
|||
|
For more complete documentation on this compiler and on using the
|
|||
|
results of compilation please look into ./doc directory.
|
|||
|
|
|||
|
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 <spec.asn1>
|
|||
|
|
|||
|
If several specifications contain interdependencies, all of them must be
|
|||
|
specified:
|
|||
|
|
|||
|
asn1c <spec1.asn1> <spec2.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 files.
|
|||
|
This is useful for debugging and tests 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 <spec-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 done by checking the tree for semantic errors
|
|||
|
and by transforming the tree into the canonical representation.)
|
|||
|
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
|