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

パーサーの仕様を変更 #106

Closed
wants to merge 10 commits into from
Closed

パーサーの仕様を変更 #106

wants to merge 10 commits into from

Conversation

noya2ruler
Copy link
Collaborator

大量の仕様変更を行なっている;

大きめの変更

  • パーサーが根ノードを定義して返す仕様から、引数で根ノードを与えてパーサーは void を返す仕様に変更
  • NonLeafLeaf の区別を撤廃
  • 複数行にわたるブロックのパースを補助する Reader クラスを作成
  • Block 構文と Inline 構文を定義、パーサーを関数オブジェクトとして提供させる仕様にした
  • インライン記法はブロック記法を含まない限り先の行まで読み続けるべきなので、そのような仕様になるようパーサーの実装を変更

小さめの変更

  • 保持する uuid を int に変更
  • render が担っていた機能を to_html が担うよう変更、render を削除
  • InlineParser はインスタンスを生成せずに文字列をパースできる仕様に変更
  • ファイル終端の構文 EOF を追加、なお、これはASTには現れない
  • RawText は特別にパーサーを持たず、 InlineParser が実質的なパーサーを担当する

@abap34
Copy link
Owner

abap34 commented May 15, 2024

ありがとう!

中身の前に一旦 Git/GitHub まわりでいくつか修正をお願いします🙇‍♂️

  1. タイトルをきちんとめに書き直しておいて欲しい
  2. new_... というファイルを作るのではなく既存ファイルの置き換えとして書いて欲しい
    • diff を辿るときにおかしくなってしまうので、少しでも共通部分があるようならこうして欲しいです (元のプロジェクトを常に参照しながらやりたいのであれば https://qiita.com/lemtosh469/items/fe24b83398b7373964a1 とかを使うと良さそう)
  3. rebase して今の mainブランチの変更を取り込んでおいて欲しい
  4. 将来的に含まれないファイル(example/syntax_example.md)をこのレポジトリで直接共有しないでほしい
    • へんにコミット増えないように gist とかにしてもらえるとありがたいです

git関連の変更は、可能であればこのブランチで作業して歴史改変してほしいけど、難しそうなら新しくブランチ作って一旦これcloseしてPR出し直すでもokです (EDIT: これはまだブランチ名の規則を書いてなかったのが悪いんですが、もしブランチ作り直すなら feat/#65 みたいな名前にしてほしいです)

@noya2ruler noya2ruler changed the title Feature new parser パーサーの仕様を変更 May 17, 2024
完全なメタデータを取得してからパースを行うようにした
インターフェースを実装する形で構文と対応する抽象構文木のノードを定義することを要求する
@noya2ruler noya2ruler closed this May 26, 2024
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

Successfully merging this pull request may close these issues.

2 participants