Skip to content

Commit 600fa4c

Browse files
(alx-0014r6-C) Refactor syntax of macros
Signed-off-by: Alejandro Colomar <[email protected]>
1 parent c6ce3de commit 600fa4c

File tree

1 file changed

+31
-21
lines changed

1 file changed

+31
-21
lines changed

source/preprocessor.tex

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,8 @@
5050
include-directive\br
5151
pp-import\br
5252
embed-directive\br
53-
\terminal{\# define } identifier replacement-list new-line\br
54-
\terminal{\# define } identifier lparen \opt{identifier-list} \terminal{)} replacement-list new-line\br
55-
\terminal{\# define } identifier lparen \terminal{... )} replacement-list new-line\br
56-
\terminal{\# define } identifier lparen identifier-list \terminal{, ... )} replacement-list new-line\br
57-
\terminal{\# undef \ } identifier new-line\br
53+
define-directive\br
54+
undef-directive\br
5855
\terminal{\# line \ \ } pp-tokens new-line\br
5956
\terminal{\# error \ } \opt{pp-tokens} new-line\br
6057
\terminal{\# warning} \opt{pp-tokens} new-line\br
@@ -106,22 +103,6 @@
106103
pp-tokens new-line
107104
\end{bnf}
108105

109-
\begin{bnf}
110-
\nontermdef{lparen}\br
111-
\descr{a \terminal{(} character not immediately preceded by whitespace}
112-
\end{bnf}
113-
114-
\begin{bnf}
115-
\nontermdef{identifier-list}\br
116-
identifier\br
117-
identifier-list \terminal{,} identifier
118-
\end{bnf}
119-
120-
\begin{bnf}
121-
\nontermdef{replacement-list}\br
122-
\opt{pp-tokens}
123-
\end{bnf}
124-
125106
\begin{bnf}
126107
\nontermdef{pp-tokens}\br
127108
preprocessing-token \opt{pp-tokens}
@@ -1455,6 +1436,35 @@
14551436
\indextext{replacement!macro|see{macro, replacement}}%
14561437
\indextext{preprocessing directive!macro replacement|see{macro, replacement}}
14571438

1439+
\begin{bnf}
1440+
\nontermdef{define-directive}\br
1441+
\terminal{\# define } identifier replacement-list new-line\br
1442+
\terminal{\# define } identifier lparen \opt{identifier-list} \terminal{)} replacement-list new-line\br
1443+
\terminal{\# define } identifier lparen \terminal{... )} replacement-list new-line\br
1444+
\terminal{\# define } identifier lparen identifier-list \terminal{, ... )} replacement-list new-line\br
1445+
\end{bnf}
1446+
1447+
\begin{bnf}
1448+
\nontermdef{undef-directive}\br
1449+
\terminal{\# undef \ } identifier new-line\br
1450+
\end{bnf}
1451+
1452+
\begin{bnf}
1453+
\nontermdef{lparen}\br
1454+
\descr{a \terminal{(} character not immediately preceded by whitespace}
1455+
\end{bnf}
1456+
1457+
\begin{bnf}
1458+
\nontermdef{identifier-list}\br
1459+
identifier\br
1460+
identifier-list \terminal{,} identifier
1461+
\end{bnf}
1462+
1463+
\begin{bnf}
1464+
\nontermdef{replacement-list}\br
1465+
\opt{pp-tokens}
1466+
\end{bnf}
1467+
14581468
\pnum
14591469
\indextext{macro!replacement list}%
14601470
Two replacement lists are identical if and only if

0 commit comments

Comments
 (0)