Мне кажется, что так или иначе, для построения парсера придется сконвертировать РБНФ в БНФ. Плюсом БНФ является то, что нет необходимости писать сложный парсер, чтобы считывать саму грамматику.
Поэтому для начала реализуйте генератор парсера по БНФ грамматике.
В приведенной вами статье есть РБНФ описание РБНФ грамматики. Вы можете вручную преобразовать его в БНФ и построить парсер для нее.
Преобразование из РБНФ в БНФ будет заключатся в последовательной замене конструкций из РБНФ на несколько эквивалентных из БНФ. Я не уверен, что в результате получится сразу получить "хорошую" грамматику (в зависимости от выбранного алгоритма на грамматику могут накладываться различные ограничения, например отсутствие левой рекурсии, эпсилон-правил и.т.д). В таком случае придется нормализовывать полученную грамматику.
Читайте dragon book, какой-то материал можно найти на
вики.
RE: UPD А грамматика из примера очень похожа на LL(1) грамматику. Если нет необходимости работать с РБНФ, считывание тривиальное. Правила с '|' стоит разбить на части с одинаковой левой частью. Identifier и Number я бы вообще для простоты сделал терминалами, и предоставил лексеру разбираться с ними. Про то как разбирать LL(1) грамматики, например, рекурсивным спуском материал найти очень легко.
UPD2
И да, еще придется подумать о том как задавать действия, которые вы хотите сделать (непосредственно компиляция С кода). Я реализовывал это на
python, и все равно было много возни с этим.
parser_gen.py и lexer_gen.py генерируют парсер_.py и лексер_.py по их описаниям в файлах *.txt
main используя сгенерированные файлы запускает парсинг целевого текста.