`unused variable` warning is reported when grammer definition includes `*` qualifier
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 45/100
Rechercherichtung
Beginne mit der Grammatik unter Verwendung des Qualifizierers * und der generierten test.tab.rb, insbesondere mit den im Bericht gezeigten Methoden _reduce_1 und _reduce_2. Reproduziere die Warnung mit racc test.y, gefolgt von ruby -W test.tab.rb, und vergleiche die generierten Reduktionen mit und ohne den Qualifizierer. Als erledigt gilt die Aufgabe, wenn die reproduzierte Grammatik nicht mehr die Warnung über das ungenutzte result meldet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Ruby reports unused variable warning for source file generated from the grammar definition includes * qualifier.
How to reproduce:
Give the source file geneated from the grammer definition below to Ruby with -W option.
class TestParser
options no_result_var
rule
root
: 'a' 'b'*
$ racc --version
racc version 1.8.1
$ racc test.y
$ ruby -W test.tab.rb
test.y:8: warning: assigned but unused variable - result
test.y:8: warning: assigned but unused variable - result
Ruby code below is geneated from the the above grammer definition.
#
# DO NOT MODIFY!!!!
# This file is automatically generated by Racc 1.8.1
# from Racc grammar file "test.y".
#
require 'racc/parser.rb'
class TestParser < Racc::Parser
##### State transition tables begin ###
racc_action_table = [
2, 3, 4, 6, 4 ]
racc_action_check = [
0, 1, 2, 3, 4 ]
racc_action_pointer = [
-2, 1, -1, 3, 1, nil, nil, nil ]
racc_action_default = [
-4, -4, -1, -4, -1, -3, 8, -2 ]
racc_goto_table = [
5, 1, 7 ]
racc_goto_check = [
2, 1, 2 ]
racc_goto_pointer = [
nil, 1, -2 ]
racc_goto_default = [
nil, nil, nil ]
racc_reduce_table = [
0, 0, :racc_error,
0, 6, :_reduce_1,
2, 6, :_reduce_2,
2, 5, :_reduce_none ]
racc_reduce_n = 4
racc_shift_n = 8
racc_token_table = {
false => 0,
:error => 1,
"a" => 2,
"b" => 3 }
racc_nt_base = 4
racc_use_result_var = false
Racc_arg = [
racc_action_table,
racc_action_check,
racc_action_default,
racc_action_pointer,
racc_goto_table,
racc_goto_check,
racc_goto_default,
racc_goto_pointer,
racc_nt_base,
racc_reduce_table,
racc_token_table,
racc_shift_n,
racc_reduce_n,
racc_use_result_var ]
Ractor.make_shareable(Racc_arg) if defined?(Ractor)
Racc_token_to_s_table = [
"$end",
"error",
"\"a\"",
"\"b\"",
"$start",
"root",
"\"-many@b\"" ]
Ractor.make_shareable(Racc_token_to_s_table) if defined?(Ractor)
Racc_debug_parser = false
##### State transition tables end #####
# reduce 0 omitted
module_eval(<<'.,.,', 'test.y', 7)
def _reduce_1(val, _values)
result = val[1] ? val[1].unshift(val[0]) : val
end
.,.,
module_eval(<<'.,.,', 'test.y', 7)
def _reduce_2(val, _values)
result = val[1] ? val[1].unshift(val[0]) : val
end
.,.,
# reduce 3 omitted
def _reduce_none(val, _values)
val[0]
end
end # class TestParser
- Vorherrschende Sprache
- Yacc
- Sterne
- 569
- Forks
- 95
- Ø Merge
- 5 Std. 11 Min.
- Gemergte PRs (30 T.)
- 1
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus ruby/racc
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 15/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 42/100
Ähnliche Issues
-
A match arm above the largest i64 is compared as 0Evtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
paradigmxyz/solar#2436 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug bulk-filed needs triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 2 Tagen
-
area:codegen backend:slang bug direction:output
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 87/100
gleam-lang/gleam#6491 ·
Maintainer antworten meist innerhalb von 1 Tag