😺
tree-sitterをRustで使ってjuliaをparseしようとしたけど失敗したときのメモ
最初に
julia言語のプログラムをparseして失敗した時のメモ、そのうちリベンジしたい
parseした後の処理まではしていません。
流れ
プロジェクト作成
cargo new treejulia
cd treejulia
juliaのtree-sitterリポジトリを利用する
git submodule add https://github.com/tree-sitter/tree-sitter-julia
parserの生成
cd tree-sitter-julia
npm install
tree-sitter generate
ビルドスクリプトの作成
fn main() {
let language = "julia";
let package = format!("tree-sitter-{}", language);
let source_directory = format!("{}/src", package);
let source_file = format!("{}/parser.c", source_directory);
println!("cargo:rerun-if-changed={}", source_file); // <1>
cc::Build::new()
.file(source_file)
.include(source_directory)
.compile(&package); // <2>
}
cargo runでエラー。
おそらくscanner.cのビルドをしないといけないっぽいが一旦挫折する。
cargo.tomlの依存関係定義
[dependencies]
tree-sitter = "0.22"
tree-sitter-rust = "0.21"
参考
Discussion