Вопрос, конечно, немного детский, но прошу не RTFM'ить меня сразу к учебникам
, а ответить на такой вопрос:
В 3-м издании Страуструппа в 6-й главе разбирается пример с калькулятором, причём
1) сразу говорится, что программа является миниатюрным компилятором
2) язык калькулятора представлен в виде:
program:
END // END is endofinput
expr_list END
expr_list:
expression PRINT // PRINT is semicolon
expression PRINT expr_list
expression:
expression + term
expression term
term
term:
term / primary
term * primary
primary
primary:
NUMBER
NAME
NAME = expression
-primary
(expression)
То есть сначала говорится, что программа — это список выражений, затем — что список выражений — это выражения, разделённые точкой с с запятой, затем — что такое выражение и т.д.
Вопрос в том, отличается ли это
принципиально от компилятора С++, скажем (надо "лишь" правильно записать всю грамматику языка в аналогичном формате) ?
Компилятор писать (пока ?) не сообираюсь, интересно просто получить общее представление (
самое общее)