]> git.saurik.com Git - bison.git/commitdiff
muscle: check the kind of api.prefix, api.location.type
authorAkim Demaille <akim@lrde.epita.fr>
Tue, 16 Apr 2013 15:42:43 +0000 (17:42 +0200)
committerAkim Demaille <akim@lrde.epita.fr>
Tue, 16 Apr 2013 15:42:43 +0000 (17:42 +0200)
* data/bison.m4: Check api.prefix.
* data/c++.m4: Check api.location.type.
* doc/bison.texi: Fix uses of api.value.type, api.prefix, api.location.type.
Document {...} values for %define.
* src/parse-gram.y: Fix use of api.prefix.
* tests/calc.at: Fix uses of api.location.type.
* tests/input.at: Check api.prefix, and api.location.type.

data/bison.m4
data/c++.m4
doc/bison.texi
src/parse-gram.y
tests/calc.at
tests/input.at

index fc33d5641f1291a9f1a91356200349806adce7d0..64f1bacc51363b8122601da5258a90b6730ceca8 100644 (file)
@@ -1027,6 +1027,7 @@ m4_define_default([b4_location_initial_line],   [1])
 ## --------------- ##
 
 # api.prefix >< %name-prefix.
+b4_percent_define_check_kind([api.prefix], [code], [deprecated])
 b4_percent_define_ifdef([api.prefix],
 [m4_ifdef([b4_prefix],
 [b4_complain_at(b4_percent_define_get_loc([api.prefix]),
index 2d686b6b921f9cef065b080b32bb621e16590818..7a743806717eadb634042a987da75389d1360137 100644 (file)
@@ -29,6 +29,7 @@ m4_define([b4_comment],
 ## Checks.  ##
 ## -------- ##
 
+b4_percent_define_check_kind([api.location.type], [code], [deprecated])
 b4_percent_define_check_kind([api.namespace], [code], [deprecated])
 
 ## ---------------- ##
index bb6465f5b68d635f74b501b7789266d371f96b43..bd03ee1cf791b0736e2e234ddaf9666484ac8c71 100644 (file)
@@ -2160,7 +2160,7 @@ the same as the declarations for the infix notation calculator.
 %@}
 
 /* Bison declarations.  */
-%define api.value.type int
+%define api.value.type @{int@}
 %token NUM
 
 %left '-' '+'
@@ -3885,7 +3885,7 @@ and then your grammar can use the following instead of @code{%union}:
 %@{
 #include "parser.h"
 %@}
-%define api.value.type "union YYSTYPE"
+%define api.value.type @{union YYSTYPE@}
 %type <val> expr
 %token <tptr> ID
 @end group
@@ -5450,6 +5450,7 @@ parse.trace}.
 
 @deffn {Directive} %define @var{variable}
 @deffnx {Directive} %define @var{variable} @var{value}
+@deffnx {Directive} %define @var{variable} @{@var{value}@}
 @deffnx {Directive} %define @var{variable} "@var{value}"
 Define a variable to adjust Bison's behavior.  @xref{%define Summary}.
 @end deffn
@@ -5499,7 +5500,7 @@ preprocessor guard: @samp{YY_@var{PREFIX}_@var{FILE}_INCLUDED}, where
 uppercase, with each series of non alphanumerical characters converted to a
 single underscore.
 
-For instance with @samp{%define api.prefix "calc"} and @samp{%defines
+For instance with @samp{%define api.prefix @{calc@}} and @samp{%defines
 "lib/parse.h"}, the header will be guarded as follows.
 @example
 #ifndef YY_CALC_LIB_PARSE_H_INCLUDED
@@ -5661,17 +5662,17 @@ features are associated with variables, which are assigned by the
 
 @deffn {Directive} %define @var{variable}
 @deffnx {Directive} %define @var{variable} @var{value}
+@deffnx {Directive} %define @var{variable} @{@var{value}@}
 @deffnx {Directive} %define @var{variable} "@var{value}"
 Define @var{variable} to @var{value}.
 
-@var{value} must be placed in quotation marks if it contains any
-character other than a letter, underscore, period, or non-initial dash
-or digit.  Omitting @code{"@var{value}"} entirely is always equivalent
-to specifying @code{""}.
+The type of the values depend on the syntax.  Braces denote value in the
+target language (e.g., a namespace, a type, etc.).  Keyword values (no
+delimiters) denote finite choice (e.g., a variation of a feature).  String
+values denote remaining cases (e.g., a file name).
 
-It is an error if a @var{variable} is defined by @code{%define}
-multiple times, but see @ref{Bison Options,,-D
-@var{name}[=@var{value}]}.
+It is an error if a @var{variable} is defined by @code{%define} multiple
+times, but see @ref{Bison Options,,-D @var{name}[=@var{value}]}.
 @end deffn
 
 The rest of this section summarizes variables and values that
@@ -5753,7 +5754,7 @@ The parser namespace is @code{foo} and @code{yylex} is referenced as
 @c api.namespace
 
 @c ================================================== api.location.type
-@deffn {Directive} {%define api.location.type} @var{type}
+@deffn {Directive} {%define api.location.type} @{@var{type}@}
 
 @itemize @bullet
 @item Language(s): C++, Java
@@ -5772,7 +5773,7 @@ Introduced in Bison 2.7 for C, C++ and Java.  Introduced under the name
 @end deffn
 
 @c ================================================== api.prefix
-@deffn {Directive} {%define api.prefix} @var{prefix}
+@deffn {Directive} {%define api.prefix} @{@var{prefix}@}
 
 @itemize @bullet
 @item Language(s): All
@@ -5789,7 +5790,7 @@ Introduced in Bison 2.7 for C, C++ and Java.  Introduced under the name
 @end deffn
 
 @c ================================================== api.pure
-@deffn Directive {%define api.pure}
+@deffn Directive {%define api.pure} @var{purity}
 
 @itemize @bullet
 @item Language(s): C
index ebcd31b3a87f001b047a45e6410e5625a2f0f042..355e14881783f8f9887c667abe3c61f641468429 100644 (file)
@@ -82,7 +82,7 @@ static char const *char_name (char);
   #define YYTYPE_UINT8 uint_fast8_t
 }
 
-%define api.prefix "gram_"
+%define api.prefix {gram_}
 %define api.pure full
 %define locations
 %define parse.error verbose
index 00741f8e2f886b72790bf92fafa5521f51515974..3207e69f7885dc3c9bce6d9eada700104c5e1263 100644 (file)
@@ -677,7 +677,7 @@ m4_define([AT_CHECK_CALC_LALR1_CC],
 
 AT_CHECK_CALC_LALR1_CC([])
 AT_CHECK_CALC_LALR1_CC([%locations])
-AT_CHECK_CALC_LALR1_CC([%locations %define api.location.type Span])
+AT_CHECK_CALC_LALR1_CC([%locations %define api.location.type {Span}])
 AT_CHECK_CALC_LALR1_CC([%defines %locations %define parse.error verbose %name-prefix "calc" %verbose %yacc])
 
 AT_CHECK_CALC_LALR1_CC([%locations %define parse.error verbose %define api.prefix "calc" %verbose %yacc])
@@ -711,7 +711,7 @@ m4_define([AT_CHECK_CALC_GLR_CC],
 
 AT_CHECK_CALC_GLR_CC([])
 AT_CHECK_CALC_GLR_CC([%locations])
-AT_CHECK_CALC_GLR_CC([%locations %define api.location.type Span])
+AT_CHECK_CALC_GLR_CC([%locations %define api.location.type {Span}])
 AT_CHECK_CALC_GLR_CC([%defines %define parse.error verbose %name-prefix "calc" %verbose %yacc])
 AT_CHECK_CALC_GLR_CC([%define parse.error verbose %define api.prefix "calc" %verbose %yacc])
 
index a1bd03ac02b724e3bfaef6fa59ff54b018c1807d..7d4f0735409bcc89b2dcdc6ecbde0ee2ea65d027 100644 (file)
@@ -1442,17 +1442,21 @@ AT_SETUP([["%define" code variables]])
 
 m4_pushdef([AT_TEST],
 [AT_DATA([input.yy],
-[[%skeleton "lalr1.cc"
-%define api.namespace    ]$1[quux]$2[
-%define api.token.prefix ]$1[quux]$2[
+[[%skeleton "lalr1.cc" %locations
+%define api.location.type ]$1[quux]$2[
+%define api.namespace     ]$1[quux]$2[
+%define api.prefix        ]$1[quux]$2[
+%define api.token.prefix  ]$1[quux]$2[
 %token TOK // Otherwise api.token.prefix is unused.
 %%
 start: TOK;
 ]])
 
 AT_BISON_CHECK([[input.yy]], [0], [],
-[[input.yy:3.9-24: warning: %define variable 'api.token.prefix' requires '{...}' values [-Wdeprecated]
-input.yy:2.9-21: warning: %define variable 'api.namespace' requires '{...}' values [-Wdeprecated]
+[[input.yy:4.9-18: warning: %define variable 'api.prefix' requires '{...}' values [-Wdeprecated]
+input.yy:5.9-24: warning: %define variable 'api.token.prefix' requires '{...}' values [-Wdeprecated]
+input.yy:2.9-25: warning: %define variable 'api.location.type' requires '{...}' values [-Wdeprecated]
+input.yy:3.9-21: warning: %define variable 'api.namespace' requires '{...}' values [-Wdeprecated]
 ]])
 ])