b4_public_types_declare.

* data/c++.m4 (b4_public_types_declare): New.
	* data/glr.cc, data/lalr1.cc: Use it.
This commit is contained in:
Akim Demaille
2008-12-31 13:46:02 +01:00
parent b9e4eb5b72
commit 4f84717d23
4 changed files with 29 additions and 29 deletions

View File

@@ -1,3 +1,9 @@
2009-03-02 Akim Demaille <demaille@gostai.com>
b4_public_types_declare.
* data/c++.m4 (b4_public_types_declare): New.
* data/glr.cc, data/lalr1.cc: Use it.
2009-03-02 Akim Demaille <demaille@gostai.com>
b4_semantic_type_declare.

View File

@@ -111,6 +111,27 @@ m4_ifdef([b4_stype],
[[ typedef YYSTYPE semantic_type;]])])])
# b4_public_types_declare
# -----------------------
# Define the public types: token, semantic value, location, and so forth.
m4_define([b4_public_types_declare],
[[#ifndef YYSTYPE
]b4_semantic_type_declare[
#else
typedef YYSTYPE semantic_type;
#endif]b4_locations_if([
/// Symbol locations.
typedef b4_percent_define_get([[location_type]]) location_type;])[
/// Tokens.
struct token
{
]b4_token_enums(b4_tokens)[
};
/// Token type.
typedef token::yytokentype token_type;
]])
# b4_variant_if([IF-VARIANT-ARE-USED], [IF-NOT])
# ----------------------------------------------
m4_define([b4_variant_if],

View File

@@ -266,20 +266,7 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C++],
class ]b4_parser_class_name[
{
public:
#ifndef YYSTYPE
]b4_semantic_type_declare[
#else
typedef YYSTYPE semantic_type;
#endif
/// Symbol locations.
typedef ]b4_percent_define_get([[location_type]])[ location_type;
/// Tokens.
struct token
{
]b4_token_enums(b4_tokens)[
};
/// Token type.
typedef token::yytokentype token_type;
]b4_public_types_declare[
/// Build a parser object.
]b4_parser_class_name[ (]b4_parse_param_decl[);

View File

@@ -388,21 +388,7 @@ do { \
class ]b4_parser_class_name[
{
public:
#ifndef YYSTYPE
]b4_semantic_type_declare[
#else
typedef YYSTYPE semantic_type;
#endif]b4_locations_if([
/// Symbol locations.
typedef b4_percent_define_get([[location_type]]) location_type;])[
/// Tokens.
struct token
{
]b4_token_enums(b4_tokens)[
};
/// Token type.
typedef token::yytokentype token_type;
]b4_public_types_declare[
/// Build a parser object.
]b4_parser_class_name[ (]b4_parse_param_decl[);
virtual ~]b4_parser_class_name[ ();