Idl transforms high-level .idl files into APIs and bindings for C++,
Android and iOS.

Now idl is a plugin for ymake, which itself is part of "ya" toolset. You
can run it from command line, by the way.

Consists of 5 sub-projects:
  - utils:      very general utility code that is not directly related to
                topics covered by Idl app. You can find most of it in
                runtime-common, but we extracted it here to avoid
                dependencies on our bundles (Idl app is a build tool - in
                general, should not depend on results of its execution).

  - common:     common code that deals with various Idl-specific issues. All
                code common to both parsing and generation must go here
                (including declarations of parse* and generate* methods).

  - flex_bison: flex-bison-specific files (impossible to combine with usual
                C++ headers / sources - see CRMCORE-5489).

  - parser:     code that implements and tests .idl and .framework file
                parsing.

  - generator:  code that takes Idl abstract syntax tree, and generates
                various API and bindings files from it.

  - app:        code that deals with command-line arguments and connects
                everything together.

  - bin:        main(), in case you want to test it from command line.

### How to test locally
1. Build ymake: ya make devtools/ymake/bin
2. Add to ya make args: ya make --ymake-bin <path-to-your-ymake-binary> -DUSE_MY_YMAKE_BIN
3. In case of using ya package: ya package --ymake-bin <path-to-your-ymake-binary> and set USE_MY_YMAKE_BIN to YES inside pkg.json
