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'.
-
Run tests (if you want to):
cd Tests make
Note that in order to run the tests you need both GCC and GNAT. The tests will process hundreds of ASN.1 grammars, generate C and Ada source code, compile it, run it, and check the coverage results.
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])