概要
tinyexpression-p4.ubnf に @scopeTree / @declares / @backref を追加し、
手書きのスコープロジック(VariableDeclarations, ExclusiveNakedVariableParser)を
UBNF アノテーションベースに移行する。
変更内容
grammar/tinyexpression-p4.ubnf
Formula に @scopeTree(mode=lexical) を追加(変数スコープのトップレベル)- 各変数宣言ルールに
@declares(symbol=varName) + IDENTIFIER @varName キャプチャを追加
NumberVariableDeclarationStringVariableDeclarationBooleanVariableDeclarationObjectVariableDeclaration
VariableRef に @backref(name=name) を追加(未宣言変数の WARNING)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
概要
tinyexpression-p4.ubnf に
@scopeTree/@declares/@backrefを追加し、手書きのスコープロジック(
VariableDeclarations,ExclusiveNakedVariableParser)をUBNF アノテーションベースに移行する。
変更内容
grammar/tinyexpression-p4.ubnf
Formulaに@scopeTree(mode=lexical)を追加(変数スコープのトップレベル)@declares(symbol=varName)+IDENTIFIER @varNameキャプチャを追加NumberVariableDeclarationStringVariableDeclarationBooleanVariableDeclarationObjectVariableDeclarationVariableRefに@backref(name=name)を追加(未宣言変数の WARNING)MethodParameterに@declares(symbol=paramName)+IDENTIFIER @paramNameを追加前提
@declares,@backref,@scopeTreeサポート済み)ScopeStore.getDiagnostics()をpublishDiagnosticsに接続済み効果
$fooを参照したときに LSP が WARNING を表示する参考
/mnt/c/var/unlaxer-temp/unlaxer-dsl/specs/scope-tree.md