This is the source code of the ASN1SCC compiler - an ASN.1 compiler that targets C and Ada, while placing specific emphasis on embedded systems. You can read a comprehensive paper about it here (PDF), or a blog post with hands-on examples here. Suffice to say, if you are developing for embedded systems, it will probably interest you.
First, install the Java JRE. This is a compile-time only dependency, required to execute ANTLR.
Then depending on your OS:
Install:
-
A version of Visual Studio with support for F# .
-
Open
Asn1.sln
and build theAsn1f2
project (right-click/build)
-
Install the Mono MDK.
-
Execute ASN1SCC's
./build.sh
- and the compiler will be built.
-
Install the mono development tools. Under Debian Jessie for example (as of Sep/2014):
$ mono -V Mono JIT compiler version 3.2.8 (Debian 3.2.8+dfsg-7) Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. TLS: __thread SIGSEGV: altstack Notifications: epoll Architecture: x86 Disabled: none Misc: softdebug LLVM: supported, not enabled. GC: sgen
-
Use the
fsharpc
compiler inside your distro, or just checkout and compile the Open Source F# compiler...git clone https://github.com/fsharp/fsharp && \ cd fsharp && \ ./configure && \ make && sudo make install
-
Execute 'xbuild' in ASN1SCC directory
The compiler has many features - it is documented in Chapter 10 of the TASTE manual, and you can see some simple usage examples in a related blog post.
You can also read about how the compiler has been used in the TASTE project to target safety-critical systems - and maybe also check out the official TASTE project site.
George Mamais ([email protected]), Thanassis Tsiodras ([email protected])
Removed the pragma Export in the Ada backend when using ASN.1 constants
Minor bugfixes and improvements of the custom Stg backends New rename policy option New VDM backend
Added error message for unsupported string and UTCTime types
Various minor bugfixes Improvements of ICD backend for ACN
Minor API change in ICD backends - templates now contain code to customize the formatted output of the grammar.
When adding fields to a SEQUENCE in an ACN model, the comments are now propagated to the ICD backends.
Various minor bugfixes, in particular related to the handling of cyclic dependencies
- Change in the API of the ICD backends: the comments are not only sent as a string but also as a list, allowing to extract the first line
- Added a Latex template for ICDs (in contrib) / Experimental