mirror of https://gerrit.osmocom.org/asn1c
79 lines
2.8 KiB
Plaintext
79 lines
2.8 KiB
Plaintext
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-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
|
||
===========
|
||
|
||
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
|