From eb374cf32ad002432001531aec2976a6145d299d Mon Sep 17 00:00:00 2001 From: LeterZP Date: Wed, 14 Oct 2026 21:35:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BB=D0=B5=D0=B3=D0=BA=D0=B0=20=D0=B8?= =?UTF-8?q?=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=BE=20=D0=BE=D1=84=D0=BE?= =?UTF-8?q?=D1=80=D0=BC=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=203=20=D0=BF=D0=BE=20=D1=8F=D0=B7=D1=8B?= =?UTF-8?q?=D0=BA=D0=B0=D0=BC=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B0=D0=BC?= =?UTF-8?q?=D0=BC=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Цикл трансляции, лексический и синтаксический анализ.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/2 курс/Языки программирования/Цикл трансляции, лексический и синтаксический анализ.md b/2 курс/Языки программирования/Цикл трансляции, лексический и синтаксический анализ.md index 9ff38ea..36e166c 100644 --- a/2 курс/Языки программирования/Цикл трансляции, лексический и синтаксический анализ.md +++ b/2 курс/Языки программирования/Цикл трансляции, лексический и синтаксический анализ.md @@ -187,7 +187,7 @@ parse_expr() Опишем все более подробно. `parse_expr()` последовательно разбивает полученную строку на узлы, и только в конце соединяет их в итоговое выражение. Иными словами, он не воспринимает те же символы "2, \*, 3" отдельно друг от друга, он их даже не читает. Вместо этого он получает от `parse_term` сразу готовый узел (2 \* 3) и подсоединяет его к строящемуся дереву. Тот же разбор математического выражения можно расписать на языке C. -```C +```c Node *parse_expr(Lexer *lx) { Node *left = parse_term(lx); while (peek(lx) == '+' || peek(lx) == '-') { @@ -227,7 +227,7 @@ Node *parse_factor(Lexer *lx) { Для реализации таких макроподстановок используются специальные директивы, включая `#include`, `#define`, `#ifdef`, `#ifndef`. Примером такой ошибки препроцессора может служить следующий код. -```C +```c #define SQUARE(x) x * x int a = SQUARE(2 + 3) @@ -236,7 +236,7 @@ int a = 2 + 3 * 2 + 3 // = 11, а не 25 ``` Поэтому при использовании макросов рекомендуется использовать защиту. -```C +```c #define SQUARE(x) ((x) * (x)) int a = SQUARE(2 + 3) @@ -259,13 +259,13 @@ CC = gcc CFLAGS = -Wall -std=c17 hello: hello.o string.o - $(CC) -o $@ $^ + $(CC) -o $@ $^ %.o: %.c - $(CC) -c $(CFLAGS) -o $@ $< + $(CC) -c $(CFLAGS) -o $@ $< clean: - rm -f hello *.o + rm -f hello *.o .PHONY: clean ```