I believe "cvar" stands for "Const, Volatile, Attribute, or Restrict". This is called "type-qualifier" in K&R. [1] Adopt this more generic naming. No functional changes are intended. [1] https://cs.wmich.edu/~gupta/teaching/cs4850/sumII06/The%20syntax%20of%20C%20in%20Backus-Naur%20form.htm
Showing the changes to scripts (1 of 1 file). Show all
Unified · Split
| @@ -223,7 +223,7 @@ storage_class_specifier: · 222 unmodified lines | |||
| 223 | 223 | ||
| 224 | type_specifier: | 224 | type_specifier: |
| 225 | simple_type_specifier | 225 | simple_type_specifier |
| 226 | | cvar_qualifier | 226 | | type_qualifier |
| 227 | | TYPEOF_KEYW '(' parameter_declaration ')' | 227 | | TYPEOF_KEYW '(' parameter_declaration ')' |
| 228 | | TYPEOF_PHRASE | 228 | | TYPEOF_PHRASE |
| 229 | 229 | ||
| @@ -270,21 +270,21 @@ simple_type_specifier: · 40 unmodified lines | |||
| 270 | ; | 270 | ; |
| 271 | 271 | ||
| 272 | ptr_operator: | 272 | ptr_operator: |
| 273 | '*' cvar_qualifier_seq_opt | 273 | '*' type_qualifier_seq_opt |
| 274 | { $$ = $2 ? $2 : $1; } | 274 | { $$ = $2 ? $2 : $1; } |
| 275 | ; | 275 | ; |
| 276 | 276 | ||
| 277 | cvar_qualifier_seq_opt: | 277 | type_qualifier_seq_opt: |
| 278 | /* empty */ { $$ = NULL; } | 278 | /* empty */ { $$ = NULL; } |
| 279 | | cvar_qualifier_seq | 279 | | type_qualifier_seq |
| 280 | ; | 280 | ; |
| 281 | 281 | ||
| 282 | cvar_qualifier_seq: | 282 | type_qualifier_seq: |
| 283 | cvar_qualifier | 283 | type_qualifier |
| 284 | | cvar_qualifier_seq cvar_qualifier { $$ = $2; } | 284 | | type_qualifier_seq type_qualifier { $$ = $2; } |
| 285 | ; | 285 | ; |
| 286 | 286 | ||
| 287 | cvar_qualifier: | 287 | type_qualifier: |
| 288 | CONST_KEYW | VOLATILE_KEYW | ATTRIBUTE_PHRASE | 288 | CONST_KEYW | VOLATILE_KEYW | ATTRIBUTE_PHRASE |
| 289 | | RESTRICT_KEYW | 289 | | RESTRICT_KEYW |
| 290 | { /* restrict has no effect in prototypes so ignore it */ | 290 | { /* restrict has no effect in prototypes so ignore it */ |