Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Support struct-like variants in `parser.py`

オープン
#696 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
45/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
python
領域
compilers

調査の方向性

parser.py から始め、既存の enum variants の処理を issue の VariantsShape の例と比較します。Single フィールドと Multiple フィールドが parser の K syntax にどのようにマッピングされるかを確認し、そのうえで両方の struct-like 形式が受け付けられ、正しく表現されることを検証します。理想的な実装では、可能な場合に中間の mk constructors を削除します。

索引モデルが issue の本文から書いたものです。

説明

Consider

pub enum VariantsShape {
    Single { index: VariantIdx },
    Multiple {
        tag: Scalar,
        tag_encoding: TagEncoding,
        tag_field: usize,
        variants: Vec<LayoutShape>,
    },
}

This can be modeled with proper parser support in K as follows:

syntax VariantsShape ::= variantsShapeSingle(VariantsShapeSingle)     [group(mir-enum), symbol(VariantsShape::Single)]
                       | variantsShapeMultiple(VariantsShapeMultiple) [group(mir-enum), symbol(VariantsShape::Multiple)]

syntax VariantsShapeSingle ::= mk(index: VariantIdx) [group(mir---index)]

syntax VariantsShapeMultiple ::= mk ( tag: Scalar
                                    , tagEncoding: TagEncoding
                                    , tagField: MIRInt
                                    , variants: LayoutShapes
                                    ) [group(mir---tag--tag-encoding--tag-field--variants)]

The ideal solution would be to eliminate the mk constructors, and model the struct-like variants directly, e.g.:

syntax VariantsShape ::= variantsShapeSingle(index: VariantIdx) [group(mir-enum---index), symbol(VariantsShape::Single)]
                       | variantsShapeMultiple ( tag: Scalar
                                               , tagEncoding: TagEncoding
                                               , tagField: MIRInt
                                               , variants: LayoutShapes
                                               ) [group(mir-enum---tag--tag-encoding--tag-field--variants), symbol(VariantsShape::Multiple)]
主要言語
Python
スター
55
フォーク
5
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

runtimeverification/mir-semantics のほかの issue

runtimeverification/mir-semantics の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。