diff options
author | Akim Demaille <akim.demaille@gmail.com> | 2020-06-16 08:01:48 +0200 |
---|---|---|
committer | Akim Demaille <akim.demaille@gmail.com> | 2020-06-16 08:14:42 +0200 |
commit | efb65daa36db3e918ace73c8a500373340867fbe (patch) | |
tree | 454070b09a3231a0f838c03b819a22bddce00704 /tests | |
parent | e077bf1ebcdcd91de5de8944be3bf3c35a00b1fe (diff) | |
download | bison-efb65daa36db3e918ace73c8a500373340867fbe.tar.gz |
c++: get rid of global_tokens_and_yystype
This was a hack to make it easier for people to migrate from yacc.c to
lalr1.cc and from glr.c to glr.cc: when set, YYSTYPE and YYLTYPE were
`#defined`. It was never documented (just mentioned in NEWS for Bison
2.2, 2006-05-19), but was used to simplify the test suite. Stop that:
adjust the test suite to the skeletons, not the converse.
In C++ use yy::parser::semantic_type, yy::parser::location_type, and
yy::parser::token::MY_TOKEN, instead of YYSTYPE, YYLTYPE and MY_TOKEN.
* data/skeletons/glr.cc, data/skeletons/lalr1.cc: Remove its support.
* tests/actions.at, tests/c++.at, tests/calc.at: Adjust.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/actions.at | 1 | ||||
-rw-r--r-- | tests/c++.at | 4 | ||||
-rw-r--r-- | tests/calc.at | 7 |
3 files changed, 4 insertions, 8 deletions
diff --git a/tests/actions.at b/tests/actions.at index 46761c25..d90851de 100644 --- a/tests/actions.at +++ b/tests/actions.at @@ -607,7 +607,6 @@ $5 { int ival; }]) -AT_LALR1_CC_IF([%define global_tokens_and_yystype]) m4_ifval([$6], [[%code provides {]], [[%code {]]) AT_LALR1_CC_IF([typedef yy::location YYLTYPE;])[ ]AT_YYLEX_DECLARE[ diff --git a/tests/c++.at b/tests/c++.at index e3a13224..adc41f31 100644 --- a/tests/c++.at +++ b/tests/c++.at @@ -803,12 +803,10 @@ AT_DATA_GRAMMAR([[input.yy]], [[%language "C++" %define api.namespace {]$1[} %union { int i; } -%define global_tokens_and_yystype %locations %code { - // YYSTYPE contains a namespace reference. - int yylex (YYSTYPE *lval, const ]$1[::parser::location_type*) { + int yylex (]$1[::parser::semantic_type *lval, const ]$1[::parser::location_type*) { lval->i = 3; return 0; } diff --git a/tests/calc.at b/tests/calc.at index 34fa9bab..ee75bf27 100644 --- a/tests/calc.at +++ b/tests/calc.at @@ -213,12 +213,12 @@ read_integer (]AT_YYLEX_FORMALS[) { unget_char (]AT_YYLEX_PRE_ARGS[ c); ]AT_VAL[.ival = read_integer (]AT_YYLEX_ARGS[); - return ]AT_TOKEN_PREFIX[NUM; + return ]AT_CXX_IF([AT_NAMESPACE::parser::token::])[]AT_TOKEN_PREFIX[NUM; } /* Return end-of-file. */ if (c == EOF) - return ]AT_TOKEN_PREFIX[CALC_EOF; + return ]AT_CXX_IF([AT_NAMESPACE::parser::token::])[]AT_TOKEN_PREFIX[CALC_EOF; /* An explicit error raised by the scanner. */ if (c == '#') @@ -226,7 +226,7 @@ read_integer (]AT_YYLEX_FORMALS[) fprintf (stderr, "%d.%d: ", AT_LOC_FIRST_LINE, AT_LOC_FIRST_COLUMN);])[ fputs ("syntax error: invalid character: '#'\n", stderr); - return ]AT_TOKEN_PREFIX[]AT_API_PREFIX[error; + return ]AT_CXX_IF([AT_NAMESPACE::parser::token::])[]AT_TOKEN_PREFIX[]AT_API_PREFIX[error; } /* Return single chars. */ @@ -444,7 +444,6 @@ m4_define([_AT_DATA_CALC_Y(c)], [AT_DATA_GRAMMAR([calc.y], [[/* Infix notation calculator--calc */ ]$4[ -]AT_CXX_IF([%define global_tokens_and_yystype])[ ]AT_LANG_MATCH( [d], [[ %code imports { |