Skip to content

P4 LSP: @scopeTree/@declares 変数スコープチェック (UBNF アノテーション移行) #3

Description

@opaopa6969

概要

tinyexpression-p4.ubnf に @scopeTree / @declares / @backref を追加し、
手書きのスコープロジック(VariableDeclarations, ExclusiveNakedVariableParser)を
UBNF アノテーションベースに移行する。

変更内容

grammar/tinyexpression-p4.ubnf

  1. Formula@scopeTree(mode=lexical) を追加(変数スコープのトップレベル)
  2. 各変数宣言ルールに @declares(symbol=varName) + IDENTIFIER @varName キャプチャを追加
    • NumberVariableDeclaration
    • StringVariableDeclaration
    • BooleanVariableDeclaration
    • ObjectVariableDeclaration
  3. VariableRef@backref(name=name) を追加(未宣言変数の WARNING)
  4. MethodParameter@declares(symbol=paramName) + IDENTIFIER @paramName を追加

前提

  • unlaxer-dsl 0.2.0 以降が必要(@declares, @backref, @scopeTree サポート済み)
  • LSP は既に ScopeStore.getDiagnostics()publishDiagnostics に接続済み

効果

  • 未宣言変数 $foo を参照したときに LSP が WARNING を表示する
  • declare された変数は go-to-definition の候補になる(将来拡張)

参考

  • unlaxer-dsl scope-tree.md spec: /mnt/c/var/unlaxer-temp/unlaxer-dsl/specs/scope-tree.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions