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

[Question] tokens: Next/Prev and reserved keywords #49

Closed
lestrrat opened this issue Nov 20, 2019 · 2 comments
Closed

[Question] tokens: Next/Prev and reserved keywords #49

lestrrat opened this issue Nov 20, 2019 · 2 comments

Comments

@lestrrat
Copy link
Contributor

  1. 現在、Tokens = []*Token で、添え字アクセスしつつ、Next/Prevを使うことをしてますが、これってNext/Prevだけでlinked listを作ればよくないですか?

  2. reserved tokensは一回作って使い回していますが、これって複数のgoroutineでアクセスするときとか、filteredTokensとかを作る時にNext/Prevとかの値が上書きされておかしなことになりませんか?reservedも動的に生成するようにしていいですか?

これら修正してよいなら、#48 の流れでついでにやりたいと思います。

@goccy
Copy link
Owner

goccy commented Nov 20, 2019

  1. 現在、Tokens = []*Token で、添え字アクセスしつつ、Next/Prevを使うことをしてますが、これってNext/Prevだけでlinked listを作ればよくないですか?

token.Tokens は、 Lexer から返してあげた tokens を iteration するときに for range を使わせてあげたいっていうところからきてまして、内部で Next , Prev をもってるのは実装上の都合だったので、公開している I/F を変えない範囲で ( Parser の内部処理など ) は変更しても良いかなと思っています。

ただ、 Next , Prev を利用するようにすると、 token.Tokens に対して好きに token を追加削除した後に Parser に渡すとおかしくなってしまうので、このあたりをケアしてあげるような API を追加 ( Tokens.InsertTokens.Remove を足すとか ) する必要があるなと思っていました。

  1. reserved tokensは一回作って使い回していますが、これって複数のgoroutineでアクセスするときとか、filteredTokensとかを作る時にNext/Prevとかの値が上書きされておかしなことになりませんか?reservedも動的に生成するようにしていいですか?

あれ、 reserved なやつは、 token 生成用の function map で管理しているので、都度生成するようになっていると思いますが、そういうことではなくでしょうか

@lestrrat
Copy link
Contributor Author

2は 失礼しました!読み間違えてました!

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