Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

`unused variable` warning is reported when grammer definition includes `*` qualifier

Ouverte
#309 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

@ydah y travaille déjà.

Depuis le 22/1/2026.

  • #310 par @ydah — ouverte

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
45/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
ruby
Domaine
compilers

Piste de recherche

Commencez par la grammaire utilisant le qualificateur * et le test.tab.rb généré, en particulier les méthodes _reduce_1 et _reduce_2 présentées dans le rapport. Reproduisez l’avertissement avec racc test.y, puis ruby -W test.tab.rb, et comparez les réductions générées avec et sans le qualificateur. C’est terminé lorsque la grammaire reproduite ne signale plus l’avertissement concernant result inutilisé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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
Langage dominant
Yacc
Étoiles
569
Forks
95
Merge moyen
12 h 11 min
PR mergées (30 j)
1

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de ruby/racc

Toutes les issues de ruby/racc

Issues similaires

Plus d'issues Compilers

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.