This patch introduces basic structures for the grammar, which is used to
build a grammar-based parser.
As the first patch, the scope is limited:
- base types of modeling the grammar rules, symbols
- grammar parsing bit (annotations are excluded, and will be added afterwards)
If we want strong types, we could use enum class SymbolID : uint16_t {};