Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UniProgramのフィールドについて(最上位のノードの検討) #22

Open
RYOSKATE opened this issue Jul 23, 2016 · 5 comments
Open

Comments

@RYOSKATE
Copy link
Contributor

現在UniProgramが最上位のノードとして想定されていると思うのですが
public List<UniClassDec> classes;
というフィールドはJavaなど全ての式が何らかのクラスの下に属している言語でないと対応しません。

例えばC言語ですと
構造体(UniClassDec),関数(UniMethodDec),グローバル変数(UniVariableDec)が並んで現れることが考えられます。

それらをまとめるにはList<UniNode> nodesに変更するか、
List<UniNode>をフィールドに持つさらに上位のノードの用意するかの検討が必要になります。

@exKAZUu
Copy link
Member

exKAZUu commented Jul 25, 2016

UniClassDecなどはUniExprにして,List<UniExpr> nodesにするのが良いかなと考えてる

@RYOSKATE
Copy link
Contributor Author

その場合ですと現在UniMemberDecを継承している

・public class UniMethodDec extends UniMemberDec
・public class UniFieldDec extends UniMemberDec
・UniClassDec extends UniMemberDec
    public List<UniMemberDec> members;

の3クラスについてUniMemberDec部分をUniExprにする感じでしょうか?

もしそうするとUniFieldDecUniVariableDecが全く同じになるのでどちらかに統一したいような気もします。

@exKAZUu
Copy link
Member

exKAZUu commented Jul 25, 2016

そうだね,言語によってはクラスや関数定義が式である(例えば,代入式の右辺に書ける)ケースがあるので.
一方,UniMethodDecUniFieldDecは式として扱われる言語がないような気がするので,統一しないほうが良いかなと思っている.

@RYOSKATE
Copy link
Contributor Author

そうなると平和的に解決するには

・public class UniEnumConstant extends UniMemberDec
・public class UniArg extends UniMemberDec
・public class UniMethodDec extends UniMemberDec
・public class UniFieldDec extends UniMemberDec

はそのままで

・public class UniClassDec extends UniMemberDec
    public List<UniMemberDec> members;
・public class UniProgram extends UniNode 
    public List<UniClassDec> classes;

の2つを

・public class UniClassDec extends UniExpr
    public List<UniMemberDec> members;
・public class UniProgram extends UniNode 
    public List<UniExpr> nodes;

に変更し、

UniMethodDecUniFieldDecに対応させて

・public class UniFunctionDec extends UniExpr(追加する)
・public class UniVariableDec extends UniExpr(すでにある)

というのでいかがでしょうか?

@exKAZUu
Copy link
Member

exKAZUu commented Jul 25, 2016

それが良いと思う

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants