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

プロパティやインデックスの構文 #25

Closed
marihachi opened this issue Apr 10, 2020 · 3 comments
Closed

プロパティやインデックスの構文 #25

marihachi opened this issue Apr 10, 2020 · 3 comments

Comments

@marihachi
Copy link
Contributor

marihachi commented Apr 10, 2020

プロパティとプロパティ(関数コール)、インデックスの構文を整理

プロパティやプロパティ(関数コール)やインデックスのことを、
長いのでパス要素と呼びます。

左再帰はサポートされないため回避しないといけない。
解決策の1つとしては、主となる式の後ろにパス要素が複数個付けられるようにすること。
式のASTにpathesのようなのを追加して、あとに続くパス要素を表現できるようにする。

expr
  = expr_item expr_path+

ノード

インデックス

{
	type: 'path';
	index: number; // インデックス値
}

プロパティ

{
	type: 'path';
	name: string; // プロパティ名
}

プロパティ(関数コール)

{
	type: 'path';
	name: string; // プロパティ名
	args: Node[]; // 関数の引数
}

構文

インデックス

他の式ノードの装飾として:
[<index>]

プロパティ

他の式ノードの装飾として:
.<propName>

プロパティ(関数コール)

他の式ノードの装飾として:
.<propName>(<CallArgs>)
@syuilo
Copy link
Collaborator

syuilo commented Apr 20, 2020

foo["bar"]

もサポートしたい

@cwd-k2
Copy link
Contributor

cwd-k2 commented Jul 31, 2021

Ref = NAME_WITH_NAMESPACE ("[" Expr "]" / "." NAME)*

とすると上手くパースできそう?

@marihachi
Copy link
Contributor Author

Resolved by #196

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

3 participants