This repository was archived by the owner on Nov 25, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
型から追加先を判断する表現 #33
Copy link
Copy link
Open
Description
UniClassDec を extends UniExpr にした場合、
List<UniMemberDec> members;
List<UniClassDec> innerClasses;
というフィールドがあるが、g4ファイルが
normalClassDeclaration => UniClassDec
:
classModifiers$modifiers 'class' className$className typeParameters?
superclass?$superClass superinterfaces?$interfaces classBody$members
;
classBody => List<UniMemberDec>
: '{' classBodyDeclaration*$ADD '}'
;
classBodyDeclaration => List<UniMemberDec>
: classMemberDeclaration$ADD
| instanceInitializer
| staticInitializer
| constructorDeclaration$ADD
;
classMemberDeclaration => List<UniMemberDec>
: fieldDeclaration$ADD
| methodDeclaration$ADD
| classDeclaration←インナークラス
| interfaceDeclaration
| ';'
;
のような状態のためインナークラスをmembersにもinnerClasses加えることが難しい。
解決策として
$ADDするものの型からどちらのListに追加するのか判断するような表現を可能にしたい。
classBody$(members|innerClasses)
classBody => List<UniMemberDec> | List<UniClassDec>
: '{' classBodyDeclaration*$ADD '}'
;
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels