From be4528096ec05f0d58bd9ff53a293e1ec3193a85 Mon Sep 17 00:00:00 2001 From: Adela Vais Date: Mon, 19 Sep 2022 15:12:39 +0200 Subject: d: fix interface syntax error Fix syntax error regarding interface inheritance of the Lexer. It appeared when the `%code lexer` option was used. Reported by ledaniel2. * data/skeletons/lalr1.d: Fix syntax. * tests/d.at: Test it. --- data/skeletons/lalr1.d | 5 +++-- tests/d.at | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/data/skeletons/lalr1.d b/data/skeletons/lalr1.d index 3195dbf8..01175325 100644 --- a/data/skeletons/lalr1.d +++ b/data/skeletons/lalr1.d @@ -269,9 +269,10 @@ b4_user_union_members } }]])[ -]b4_lexer_if([[ private class YYLexer implements Lexer { +]b4_lexer_if([[private class YYLexer: Lexer +{ ]b4_percent_code_get([[lexer]])[ - } +} ]])[ /** The object doing lexical analysis for us. */ private Lexer yylexer; diff --git a/tests/d.at b/tests/d.at index 6be53eef..347e868c 100644 --- a/tests/d.at +++ b/tests/d.at @@ -112,6 +112,13 @@ AT_CHECK_D_GREP([[class YYParser : BaseClass]]) AT_CHECK_D_MINIMAL([%define api.parser.extends {Interface}], [], [], [interface Interface {}]) AT_CHECK_D_GREP([[class YYParser : Interface]]) +AT_CHECK_D_MINIMAL([%code lexer +{ + Symbol yylex () {return Symbol();} + void yyerror (string s) {import std.stdio;writeln(s);} +}], [], [], []) +AT_CHECK_D_GREP([[private class YYLexer: Lexer]]) + AT_CHECK_D_MINIMAL( [%define api.parser.extends {BaseClass} %define api.parser.implements {Interface}], [], [], -- cgit v1.2.1