+++ /dev/null
-# 定義抽象語法樹和語法
-
+++ /dev/null
-yoxem@yoxem-HP-Laptop-15-fd0072.6714:1700948777
\ No newline at end of file
+# Ch1 定義抽象語法樹和語法
+
+## 抽象語法樹
+
+C語言、Python語言就算有許多的關鍵字、操作符、符號或是常數變數,在編譯器分析語法以後,最後會轉成編譯器可以操作的樹結構,然後再轉成我們想要的另一個語言的樹,最後輸出另一個語言的程式碼。
+
+但是什麼叫做抽象語法樹呢?我們先從一點句法知識來談。
+
+學過中學國文文法的課程,會背一堆類似「主詞+動詞+受詞」、「主詞+(有/無)+受詞」的結構。可以換個說法,是句子=「主詞+動詞+受詞」或是「主詞+(有/無)+賓詞」的形式。我們將「=」寫成「::=」,「/」(或是)寫成「|」,「動詞」擴充變成「動詞片語」,就變成:
+
+```
+ 句子 ::= (主詞 動詞片語 受詞) | (主詞 (有 | 無) 受詞)...
+
+```
+
+為了易讀所以寫成:
+
+```
+句子 ::= 主詞 動詞片語 受詞
+ | 主詞 (有 | 無) 受詞
+ | ...
+
+```
+
+用這種形式表示的語言句法,叫做「BNF文法」。這種句法看起來很語言學,但是我們想:受詞和主詞可以為名詞、專有名詞或是「形容詞+名詞」;動詞片語可以為動詞或是「副詞+動詞」。因此這樣之規則,就可以生成許多句子,比如「我有筆」、「張三養貓」、「小芳慢慢移動檯燈」等等的句子。然後句子可以用上述規則,分析成語法的樹狀結構,如下圖把「我曾旅居新竹」寫成語法樹。
+
+<figure markdown>
+ ![「我曾旅居新竹」的語法樹](syntaxtree.svg "")
+ <figcaption>「我曾旅居新竹」的語法樹</figcaption>
+</figure>
+
+
+
+
+同理,程式語言通常也有更嚴謹的這樣生成文法,可以用幾個簡單規則生出繁多的程式碼,而且合乎語法規定。這種生成文法也可檢查輸入的程式碼有沒有符合句法的規定。而這種語法生成的程式碼,去掉不需要的逗號等等符號,當然也可以做成語法樹,就是抽象語法樹 (abstract syntax tree, AST),如下圖所示。
+<figure markdown>
+ ![「(2+2) == 4」的語法樹。注意括號已經刪除。](syntaxtree2.svg "")
+ <figcaption>「(2+2) == 4」的語法樹。注意括號已經刪除。</figcaption>
+</figure>
+
+
+而上文的抽象語法樹,可以是我們把程式經過編譯器分析之後,用「樹」儲存的資料結構。而樹形結構我們可以使用Lisp語言的S表達式(S-expressiom; S-exp)來表示,本文採用這樣的表示方法。所以上文的`(2+2)==4`即`(== (+ 2 2) 4)`;`let baz = foo("bar")`,若是把foo("bar")這種函數套用(apply)寫成`(APPLY foo "bar")`,則其S-exp語法樹可寫為`(let baz(APPLY foo "bar"))`。
+
+## 決定語法
+那我們要如何制定這個語言的語法,這樣我們才能夠寫出符合這個語法的函數,然後再用tokenizer和parser轉成AST樹。
+
+不考慮` + - * /`這種運算子,以及向量的表示子,函數可以用`ID(arg1, arg2, ...)`這種方式來表示,其中`arg_x`是引數,`ID`是識別子(identifier,可以把它想成變函數的名字)。
+
+變數可以是`ID`,`arg_n`可以是`ID`或常數(量)。
+
+常數(量)的表示法可以是下列任一:
+
+ - 浮點數如0.0, 36.8,BNF風格的表達法為:`[0-9]+ '.' [0-9]+`。`'c'`指c這個文字,`+`表示前面的重複1次以上;`[0-9]`表示數字0到9。
+
+ - 整數如22、0:`[0-9]+`
+
+ - 字串:`'"' (不是「"」的任一字元|('\' '"')) '"'`(`.`表示任何一個字元)
+
+然而我們還是需要綁定變數`let x = var in boby`(在`body`裡面,`x`指代`var`)、`set x = var`(改變變數值)、lambda`lambda (x)=>{body}`。另外為了要區別要在PDF印上去的一般字元,在這個檔案的常數、變數、函數、關鍵字等前後需要加@表示(但是函數、lambda裡面的變數不用)。比如`@foo(a, b)@`、`@lambda(x)@`、`@"IAmAString"@`、`@2.2@`、`@3@`(後三者應該很少用到)可是若需在PDF印`@`時怎辦?那就用`\@`。比如`foo\@example.com`。
+
+所以我們可以定義以下的BNF風文法:
+
+```
+Language ::= PrintTxt | Exprs
+
+PrintTxt ::= (('\' '@')| 非@字元)+ //「我是一隻貓」或是「www\@example.com」
+
+Exprs ::= @ Expr* @ // *表示前面的重複0次以上(包含不出現)
+
+Expr ::= (Letting | Setting | Lambda | Apply | Var| Const) | "(" Expr ")"
+
+Letting ::= "let" Var "=" Expr "in" Expr // let foo = 12 in ...
+
+Setting ::= Var ":=" Expr "in" Expr // foo := a in ...
+
+Lambda ::= "fn" Var "->" Expr // fn x -> 12
+
+Apply ::= Expr Expr // foo 3 即foo(3)
+
+Var ::= ID
+
+Const ::= String | Float | Int
+
+ID ::= ("_" | [a-z] | [A-Z]) ("_" | [0-9] | [a-z] | [A-Z])+
+
+Integer ::= [0-9]+
+
+Float ::= [0-9]+ "." [0-9]+
+
+String ::= '"' (不是「"」的任一字元|('\' '"')) '"'
+```
+
+## 用ParserCombinator進行tokenize
+Parser combinator(分析器組合子)是一種利用高階函數來簡化分析器撰寫的辦法。這講到頭來會涉及「遞歸下降分析」以及其他編譯理論的東西,但太難了(聽說可以讀編譯理論的「龍書我們可以製作一個小的tokenizer。但是因為自己寫parser combinator太累了,所以我們就用nom來幫我們代勞。
+」)。講一個簡單的案例吧:
+
+假設我們想要將字串的開頭match 0~9 之中的其中一個,我們可以寫一個函數match0to9如下:
+
+```
+function match0to9(string){
+if (string[0] in 0,1,..,9){
+ let rest = string[1:];
+ let matched = string[0];
+ return {type: "OK", rest : rest, matched : matched};
+}
+else{
+ return {type : "Nothing"};
+ }
+}
+```
+
+假設我們要將字串`s`的前3個字的match 0~9呢?如果會高階函數的話,引入一個`then`函數,然後把`match0to9`傳進去,這樣寫起來比較簡潔,行數可以比較少:
+
+```
+function thenDo(input, fun){
+ if (input.type != "Nothing"{
+
+ middle = fun(input.rest);
+ if (middle.type != "Nothing"){
+ // add the matched character of input to the head of the result
+ middle.matched = input.matched + middle.matched
+ return middle;
+ }else{
+ return middle; // return nothing
+ }
+ }else{
+ input; // return nothing
+ }
+
+}
+
+// "s" should be wrapped in a object
+let sWrapped = {type : "OK", rest : s, matched : ""};
+
+// match0~9 3 times
+thenDo(thenDo(thenDo(sWrapped, match0to9), match0to9), match0to9)
+```
+我們可以製作一個小的tokenizer。但是因為自己寫parser combinator太累了,所以我們就用nom來幫我們代勞。
+
+
+安裝nom可以用:`cargo run nom`。
+
+假設我們要match 0-9任意次以上(就是integer),我們可以這樣寫:
+
+```
+
+// import all the parser unit for string
+use nom::character::complete::*;
+// for the return type
+use nom::IResult;
+
+// integer ::= [0-9]+
+pub fn integer(input: &str) -> IResult<&str, &str> {
+ return digit1(input) ; // [0-9]+
+}
+
+// test parser
+#[cfg(test)]
+mod tests {
+ // import the functions ouside mod tests
+ use super::*;
+
+ // test integer
+ #[test]
+ fn test_integer() {
+ //if no error is shown, the function passes the test
+ assert_eq!(integer("12345"), Ok(("", "12345")));
+ assert_eq!(integer("0"), Ok(("", "0")));
+ }
+}
+
+
+```
+
+用`cargo run`可以順利通過:
+
+```
+running 1 test
+test tests::test_integer ... ok
+
+test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+```
+
+我們做第二個tokenizer,`float`:
+
+其中的`recognize`蒐集所有包在裡面的`parsers`的string。
+```
+// collect matched strings of all the parsers,
+use nom::combinator::recognize;
+// given 2 parser and gets the result as (1st_matched, 2nd_matched),
+use nom::sequence::pair;
+// exact matching characters
+use nom::bytes::complete::tag;
+
+// float ::= [0-9]+ "." [0-9]+
+pub fn float(input: &str) -> IResult<&str, &str>{
+ // [0-9]+ "." [0-9]+
+ // "12.345" returns Ok((else, (("12", '.'), "345"))), then recgonize them as
+ // Ok("12.345")
+ let a =
+ recognize(pair(pair(digit1, tag(".")), digit1))(input);
+ return a;
+
+}
+
+```
+
+parser `identifier`(引用的函數的名稱空間略)。使用`fold_may0`和新的空vector來儲存match多次的parser的符合結果:
+```
+pub fn identifier(input : &str) -> IResult<&str, &str>{
+ return recognize(pair(
+ // 1st character is a-z, A-Z or _
+ satisfy(|c| (is_alphabetic(c as u8) || c == '_')),
+ // the tail characters (0+ times matched) storing in a vector
+ fold_many0(
+ // a-z, A-Z, 0-9, _
+ satisfy(|c| (is_alphanumeric(c as u8) || c == '_')),
+ // initial vector
+ Vec::new,
+ // once it matches, append the matched item to the vector.
+ |mut acc: Vec<_>, item| {
+ acc.push(item);
+ acc
+ }
+ )))(input);
+
+}
+
+
+```
+
+
+## 平面操作
+
+### 基本函數與直譯器
+我們藉由以上的概念,可以定義一個將文字、線條等形狀排列到2D平面的語法,畢竟不論輸出PDF、SVG等等,粗略而言,就是一種2D平面安放文字的語言。另外PDF的格式相當晦澀,就算_PDF Explained_的PDF教學,也還是要輔助使用其他的工具,沒辦法看了就自己手刻PDF,所以還是用`printpdf`來教學吧。
+
+現在我們初始化一個專案目錄,然後將需要的S-exp函式庫和pdf函數庫指定為相依函式庫:
+
+```
+cargo init;
+
+cargo add rsexp printpdf;
+```
+
+我們可以定義一些表達式(包含函數、資料結構,S-exp形式)的說明如下。`'()`表示空列表(empty list),因為都要表達是函數的引用,所有的函數寫成形式`(Func "函數名稱" (引數1 引數2 ....))`。Float指64位元浮點數:
+
+```
+(px Float) ; px表達pixel單位,儲存浮點數
+(pt Float) ; pt表達point單位,儲存浮點數
+(style (str pt)) ; 文字樣式。String表示字型的路徑[fontPath],Float表示字型大小(in Pt) (fontSize)
+(str String) ; 儲存字串
+(func "createPDF" '()) ;新增PDF
+(func "createPage" '()) ;新增頁面
+(func "writePdf" '(str)) ;寫入PDF頁面,String是PATH
+
+(func "putchar" '(str style x y)) ; x 軸向右,y 軸向下,str 表示字元(char),style 表示文字樣式
+```
+
+`main.rs`先引用函式庫:
+`use printpdf::*;`
+
+
+其中 `px`、`pt`是單位,所以可以在`main.rs`這樣定義:
+
+```
+enum Measure{
+ Pt(f64),
+ Px(f64)
+}
+```
+
+最後一次定義expression:
+```
+enum Expr{
+ Mea(Measure), // wrapper for measure
+ Str(&str),
+ Style{font_path : Measure, size : Measure},
+ Func(&str, Vec<Expr>),
+ Void // return nothing
+}
+```
+
+然後我們可以這樣定義一個處理輸入輸出的interpreter於`interp`,並修改`main.rs`如下,縱使我們準時:
+```
+fn interp(exp : Expr)->(){
+ // the function will be extended.
+ match exp {
+ Expr::Mea(Measure::Pt(x)) => println!("{:?} pt", x),
+ Expr::Mea(Measure::Px(x)) => println!("{:?} px", x),
+
+ _ => println!("not found expression"),
+ };
+}
+
+// exexute interpreter
+fn main() {
+ interp(Expr::Mea(Measure::Pt(2.2)));
+ interp(Expr::Flo(2.2));
+}
+```
# Another Typesetter - 另一個排版器
-## 序言
-本文是講一個排版器的雛形如何製作的考察,若有任何建議,請聯絡作者 [yoxem@kianting.info](mailto:yoxem@kianting.info)。
+## 摘要
+本文是講一個排版器的雛形如何製作的考察,使用Rust語言。
-內容部分參考[Essentials of Compilation An Incremental Approach in Racket](https://mitpress.mit.edu/9780262047760/essentials-of-compilation/)(EoC)的思路,但因為目的不一樣,所以裡面的內容不太相同。另外EoC主要是講
+###序言
+
+以前從國中時候試用Linux以及架站以後,就開始想用LaTeX排版些自己所寫的東西,其中包含覺得LaTeX的語法不好想要重造輪子。就算後來大學沒有走上資訊工程這條路,還是希望有天至少能夠完成個能用的雛形。
+
+但是這是涉及字體檔案的處理、PDF的處理、語法分析,後來自己因為不知道如何開發,所以一直停擺。不是遇到很多蟲,就是效能問題有缺失。因為時間繁忙很少更不消說了。甚至買了Knuth教授的 _Digital Typography_,想要瞭解斷行演算法,結果粗估五、六十頁,所以幾乎沒有讀。
+
+另外筆者一個分支興趣是編譯器的相關知識,所以開始讀和王垠的編譯器思想系出同門的Jeremy G. Siek所著作之 *Essential of Complication: An Incremental Approach in Racket*(編譯之要素:Racket語言的遞增的方法)。我想到:既然編譯器這種複雜的軟體,可以一層一層的用pass來遞增功能,就像水彩從背景、大物體一直由少漸多的完成。而排版軟體也是把使用者輸入的排版之領域特定語言(DSL)轉換成文字、圖形和二維座標對應關係(最後匯出成PDF或SVG等等)的編譯器,若是能夠用層層遞增的方法來完成,相信也能夠避免結構的複雜化導致錯誤容易發生的挫折。
+
+然而排版語言不只是輸入文字轉圖形而已,更重要的是還要有因應美觀的自動斷行(justification)和斷字(hyphenation)等等的演算法、還有PDF的基本知識、字型函式庫的取用、排版要求(多欄)、甚至還牽涉到語言特有的特性:比如東亞全形文字(漢字、諺文、日文假名、注音符號)和非全形文字中間要加空白,以及從左寫到右的文字(希伯來字母和阿拉伯字母等)的排版方法,不一而足。
+
+為了簡化起見,且目標讀者是臺灣的受眾,本書僅涉及到ASCII英文字母——頂多加些一些附加符號(diacritics)和漢字的排版。其他的功能希望讀者可以漸次由少漸多的附加。另外這邊會使用到一些LISP的表達式來表達抽象語法樹,若是不懂的話,可以看一點教 Lisp或是Scheme的書,如SICP。另外這本書不是編譯原理和描述PDF規格的書,不涉獵底層的知識,有需要的可以參考相關領域的書。
+
+### 先備知識
+
+這不是教一位入門使用者如從零知識撰寫排版軟體的書,讀者應該有知道如何使用靜態型別語言的經驗,比如一點C、或是Rust等等。另外抽象語法樹為求方便,使用LISP撰寫,所以需要會LISP和Scheme的知識(知名教科書SICP的開頭可以讀一讀)。
+
+這本書也不教編譯理論和tokenizing、parsing、狀態機等等的,頂多只會帶到一些很基礎的知識,有需要的請另外再讀。所以使用者需要會有使用正規表達式(regex)的能力。
+
+操作環境使用Linux。需要安裝fontconfig等套件。
- [定義抽象語法樹和語法](./defineASTandGrammar)
--- /dev/null
+#set heading(numbering: "1.1.1.1.")
+
+ #show raw: set text(font: "Noto Sans Mono CJK TC")
+
+
+#set page("a5")
+
+#set text(
+ font: ("New Computer Modern", "AR PL UMing TW"),
+ size: 11pt
+)
+
+#show heading: it => [
+ #set text(font: "Noto Serif CJK TC",
+ weight: "black")
+ #it.body
+]
+
+#set par( justify: true,leading: 1em,
+)
+
+#align(center)[#set text(
+ font: ("EB Garamond 08"),
+ weight:"medium",
+ size: 20pt,
+)
+ Clo: another typesetter]
+#align(center)[#box([#set text(size: 15pt,
+ font: "Noto Serif CJK TC",
+ weight:"medium")
+一個排版器的實作心得])]
+#box(
+ height:0.5em
+)
+#align(center)[#box([#set text(size: 11pt,
+ font: "AR PL UMing TW",
+ weight:"light")
+陳建町])]
+
+#pagebreak()
+
+
+
+
+#set page(
+ margin: (top: 60pt, bottom: 20pt),
+ header: locate(
+ loc => if (calc.odd(loc.page()) == true){
+ [#set align(right)
+ #numbering("i", loc.page())
+ ]
+ } else {
+ [#set align(left)
+ #numbering("i", loc.page())]
+ }
+ ));
+
+
+
+#heading(level:2, "版權聲明",outlined:false)
+
+(c) 2023 陳建町 (Tan, Kian-ting)
+
+本書內容非經許可,禁止複製、分發、商業使用等違反著作權法之行為。
+
+然書中之程式碼,採用 #link("https://opensource.org/license/mit/")[MIT許可證]授權。
+
+#pagebreak()
+
+#outline(
+ title: align(left, [目#box(width:1em)錄 #box(
+ height:1.5em)]),
+ target: heading.where(outlined: true),
+)
+
+#pagebreak()
+
+#set page(
+ numbering: "i",
+ number-align: top+right)
+
+#heading(numbering: none, "序言")
+
+以前從國中時候試用Linux以及架站以後,就開始想用LaTeX排版些自己所寫的東西,其中包含覺得LaTeX的語法不好想要重造輪子。就算後來大學沒有走上資訊工程這條路,還是希望有天至少能夠完成個能用的雛形。
+
+但是這是涉及字體檔案的處理、PDF的處理、語法分析,後來自己因為不知道如何開發,所以一直停擺。不是遇到很多蟲,就是效能問題有缺失。因為時間繁忙很少更不消說了。甚至買了Knuth教授的 _Digital Typography_,想要瞭解斷行演算法,結果粗估五、六十頁,所以幾乎沒有讀。
+
+另外筆者一個分支興趣是編譯器的相關知識,所以開始讀和王垠的編譯器思想系出同門的Jeremy G. Siek所著作之_Essential of Complication: An Incremental Approach in Racket_(編譯之要素:Racket語言的遞增的方法)。我想到:既然編譯器這種複雜的軟體,可以一層一層的用pass來遞增功能,就像水彩從背景、大物體一直由少漸多的完成。而排版軟體也是把使用者輸入的排版之領域特定語言(DSL)轉換成文字、圖形和二維座標對應關係(最後匯出成PDF或SVG等等)的編譯器,若是能夠用層層遞增的方法來完成,相信也能夠避免結構的複雜化導致錯誤容易發生的挫折。
+
+然而排版語言不只是輸入文字轉圖形而已,更重要的是還要有因應美觀的自動斷行(justification)和斷字(hyphenation)等等的演算法、還有PDF的基本知識、字型函式庫的取用、排版要求(多欄)、甚至還牽涉到語言特有的特性:比如東亞全形文字(漢字、諺文、日文假名、注音符號)和非全形文字中間要加空白,以及從左寫到右的文字(希伯來字母和阿拉伯字母等)的排版方法,不一而足。
+
+為了簡化起見,且目標讀者是臺灣的受眾,本書僅涉及到ASCII英文字母——頂多加些一些附加符號(diacritics)和漢字的排版。其他的功能希望讀者可以漸次由少漸多的附加。另外這邊會使用到一些LISP的表達式來表達抽象語法樹,若是不懂的話,可以看一點教 Lisp或是Scheme的書,如SICP。另外這本書不是編譯原理和描述PDF規格的書,不涉獵底層的知識,有需要的可以參考相關領域的書。
+
+#heading(numbering: none, "致謝")
+
+感謝Donald Knuth教授開發出這麼一套排版系統以及排版的演算法,除了造福科學排版的諸多用戶外,也間接鼓舞我想要研究排版軟體如何實作;感謝Jeremy G.Siek老師的_Essential of Complication: An Incremental Approach in Racket_,讓我獲得排版語言編譯器設計的啟發。感謝王垠讓我對編譯器相關的技術有興趣,從而斷斷續續學習相關的資訊。
+
+感謝愛爾蘭語,除了讓我對語言和語言復興的知識打開新的世界以外,這個軟體的名字Clo也是從這裡來的(cló有「活字」的意思,因為技術限制抱歉沒辦法輸入長音符號)。
+
+感謝我的父母,雖然專長不是電腦資訊科技,但是要感謝他們讓我讓我有餘力能夠在中學的時候研究這種興趣,這條路才能走下去。
+
+感謝這本書閱讀的人們,讓我知道筆者不是孤單的。
+
+Siōng-āu Kám-siā góa ê Siōng Chú, nā-bô i ê hû-chhî kap pó-siú, chit-pún chheh iā bô-hó oân-sêng.(最後感謝上主,若無扶持保守,這本書也很難完成)
+
+#pagebreak()
+
+
+#set page(
+ margin: (top: 60pt, bottom: 20pt),
+ header: locate(
+ loc =>{
+ let chapter_query = query(selector(heading.where(level: 1)).after(loc),loc)
+ let section_query = query(selector(heading.where(level: 2)).after(loc),loc)
+ let chapter = "";
+ let section = "";
+ if chapter_query == (){chapter = ""}
+ else{chapter = chapter_query.at(0).body};
+ if section_query == (){section = ""}
+ else{section = section_query.at(0).body}
+
+
+
+
+ if (calc.odd(loc.page()) == true){
+ grid(
+ columns: (0.333333fr, 0.333333fr, 0.333333fr),
+
+text(style: "italic")[ ],
+[#set align(center)
+#chapter],
+[ #h(1fr) #loc.page-numbering()])
+ } else {
+ grid(
+ columns: (0.333333fr, 0.333333fr, 0.333333fr),
+
+text(style: "italic")[#loc.page-numbering()],
+[#set align(center)
+#section],
+[ ])
+ }}
+ ));
+
+#show heading: it => [
+ #set text(font: ("New Computer Modern", "Noto Serif CJK TC"),
+ weight: "black")
+ #counter(heading).display() #it
+]
+
+
+#set page(numbering: "1")
+#counter(page).update(1)
+#set heading(numbering: "1.1.1.1.1")
+= 先備知識
+
+這不是教一位入門使用者如從零知識撰寫排版軟體的書,讀者應該有知道如何使用靜態型別語言的經驗,比如一點C、或是Rust等等。另外抽象語法樹為求方便,使用LISP撰寫,所以需要會LISP和Scheme的知識(知名教科書SICP的開頭可以讀一讀)。
+
+這本書也不教編譯理論和tokenizing、parsing、狀態機等等的,頂多只會帶到一些很基礎的知識,有需要的請另外再讀。所以使用者需要會有使用正規表達式(regex)的能力。
+
+== 抽象語法樹
+
+C語言、Python語言就算有許多的關鍵字、操作符、符號或是常數變數,在編譯器分析語法以後,最後會轉成編譯器可以操作的樹結構,然後再轉成我們想要的另一個語言的樹,最後輸出另一個語言的程式碼。
+
+但是什麼叫做抽象語法樹呢?我們先從一點句法知識來談。
+
+學過中學國文文法的課程,會背一堆類似「主詞+動詞+受詞」、「主詞+(有/無)+受詞」的結構。可以換個說法,是句子=「主詞+動詞+受詞」或是「主詞+(有/無)+賓詞」的形式。我們將「=」寫成「::=」,「/」(或是)寫成「|」,動詞擴充變成「動詞片語」,就變成:
+
+```
+ 句子 ::= (主詞 動詞片語 受詞) | (主詞 (有 | 無) 受詞)...
+
+```
+
+用這種形式表示的語言句法,叫做「BNF文法」。這種句法看起來很語言學,但是我們想:受詞和主詞可以為名詞、專有名詞或是「形容詞+名詞」;動詞片語可以為動詞或是「副詞+動詞」。因此這樣之規則,就可以生成許多句子,比如「我有筆」、「張三養貓」、「小芳慢慢移動檯燈」等等的句子。然後句子可以用上述規則,分析成語法的樹狀結構,如圖1把「我曾旅居新竹」寫成語法樹。
+
+#figure(
+ image("syntaxtree.svg", width: 40%),
+ caption: [
+ 「我曾旅居新竹」的語法樹
+ ],
+ supplement: [圖],
+)
+
+同理,程式語言通常也有更嚴謹的這樣生成文法,可以用幾個簡單規則生出繁多的程式碼,而且合乎語法規定。這種生成文法也可檢查輸入的程式碼有沒有符合句法的規定。而這種語法生成的程式碼,去掉不需要的逗號等等符號,當然也可以做成語法樹,就是抽象語法樹 (abstract syntax tree, AST),如圖2所示。
+
+#figure(
+ image("syntaxtree2.svg", width: 30%),
+ caption: [
+ `(2+2) == 4`的語法樹。注意括號已經刪除。
+ ],
+ supplement: [圖],
+)
+
+而上文的抽象語法樹,可以是我們把程式經過編譯器分析之後,用「樹」儲存的資料結構。而樹形結構我們可以使用Lisp語言的S表達式(S-expressiom; S-exp)來表示,本文採用這樣的表示方法。所以上文的`(2+2)==4`即`(== (+ 2 2) 4)`;`let baz = foo("bar")`,若是把foo("bar")這種函數套用(apply)寫成`(APPLY foo "bar")`,則其S-exp語法樹可寫為`(let baz(APPLY foo "bar"))`。
--- /dev/null
+[ Clo: another typesetter]{align="center"} [[
+一個排版器的實作心得]{.box}]{align="center"} []{.box} [[
+陳建町]{.box}]{align="center"}
+
+版權聲明
+
+\(c\) 2023 陳建町 (Tan, Kian-ting)
+
+本書內容非經許可,禁止複製、分發、商業使用等違反著作權法之行為。
+
+然書中之程式碼,採用
+[MIT許可證](https://opensource.org/license/mit/)授權。
+
+序言
+
+以前從國中時候試用Linux以及架站以後,就開始想用LaTeX排版些自己所寫的東西,其中包含覺得LaTeX的語法不好想要重造輪子。就算後來大學沒有走上資訊工程這條路,還是希望有天至少能夠完成個能用的雛形。
+
+但是這是涉及字體檔案的處理、PDF的處理、語法分析,後來自己因為不知道如何開發,所以一直停擺。不是遇到很多蟲,就是效能問題有缺失。因為時間繁忙很少更不消說了。甚至買了Knuth教授的
+*Digital
+Typography*,想要瞭解斷行演算法,結果粗估五、六十頁,所以幾乎沒有讀。
+
+另外筆者一個分支興趣是編譯器的相關知識,所以開始讀和王垠的編譯器思想系出同門的Jeremy
+G. Siek所著作之_Essential of Complication: An Incremental Approach in
+Racket
--- /dev/null
+<svg baseProfile="full" height="248px" preserveAspectRatio="xMidYMid meet" style="font-family: times, serif; font-weight: normal; font-style: normal; font-size: 16px;" version="1.1" viewBox="0,0,144.0,248.0" width="144px" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">句子</text></svg><svg width="27.7778%" x="0%" y="48px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">主詞</text></svg><svg width="100%" x="0%" y="48px"><defs /><svg width="100%" x="0" y="8px"><defs /><text text-anchor="middle" x="50%" y="16px">代詞 </text></svg><svg width="100%" x="0%" y="64px"><defs /><svg width="100%" x="0" y="8px"><defs /><text text-anchor="middle" x="50%" y="16px">我</text></svg></svg><line stroke="black" x1="50%" x2="50%" y1="27.2px" y2="72px" /></svg><line stroke="black" x1="50%" x2="50%" y1="19.2px" y2="56px" /></svg><line stroke="black" x1="50%" x2="13.8889%" y1="19.2px" y2="48px" /><svg width="72.2222%" x="27.7778%" y="48px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">謂語</text></svg><svg width="69.2308%" x="0%" y="48px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">動詞</text><text text-anchor="middle" x="50%" y="32px">片語 </text></svg><svg width="44.4444%" x="0%" y="64px"><defs /><svg width="100%" x="0" y="8px"><defs /><text text-anchor="middle" x="50%" y="16px">副詞</text></svg><svg width="100%" x="0%" y="64px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">曾</text></svg></svg><line stroke="black" x1="50%" x2="50%" y1="27.2px" y2="64px" /></svg><line stroke="black" x1="50%" x2="22.2222%" y1="35.2px" y2="72px" /><svg width="55.5556%" x="44.4444%" y="64px"><defs /><svg width="100%" x="0" y="8px"><defs /><text text-anchor="middle" x="50%" y="16px">動詞 </text></svg><svg width="100%" x="0%" y="64px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">旅居</text></svg></svg><line stroke="black" x1="50%" x2="50%" y1="27.2px" y2="64px" /></svg><line stroke="black" x1="50%" x2="72.2222%" y1="35.2px" y2="72px" /></svg><line stroke="black" x1="50%" x2="34.6154%" y1="19.2px" y2="48px" /><svg width="30.7692%" x="69.2308%" y="48px"><defs /><svg width="100%" x="0" y="8px"><defs /><text text-anchor="middle" x="50%" y="16px">受詞</text></svg><svg width="100%" x="0%" y="64px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">專有</text><text text-anchor="middle" x="50%" y="32px">名詞</text></svg><svg width="100%" x="0%" y="64px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">新竹</text></svg></svg><line stroke="black" x1="50%" x2="50%" y1="35.2px" y2="64px" /></svg><line stroke="black" x1="50%" x2="50%" y1="27.2px" y2="64px" /></svg><line stroke="black" x1="50%" x2="84.6154%" y1="19.2px" y2="56px" /></svg><line stroke="black" x1="50%" x2="63.8889%" y1="19.2px" y2="48px" /></svg>
--- /dev/null
+<svg baseProfile="full" height="120px" preserveAspectRatio="xMidYMid meet" style="font-family: times, serif; font-weight: normal; font-style: normal; font-size: 16px;" version="1.1" viewBox="0,0,72.0,120.0" width="72px" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">==</text></svg><svg width="66.6667%" x="0%" y="48px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">+</text></svg><svg width="50%" x="0%" y="48px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">1</text></svg></svg><line stroke="black" x1="50%" x2="25%" y1="19.2px" y2="48px" /><svg width="50%" x="50%" y="48px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">1</text></svg></svg><line stroke="black" x1="50%" x2="75%" y1="19.2px" y2="48px" /></svg><line stroke="black" x1="50%" x2="33.3333%" y1="19.2px" y2="48px" /><svg width="33.3333%" x="66.6667%" y="48px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">2</text></svg></svg><line stroke="black" x1="50%" x2="83.3333%" y1="19.2px" y2="48px" /></svg>
site_name: Another Typesetter 另一個排版器
-site_url: https://blog.kianting.info/pages/typesetter
+site_url: https://blog.kianting.info/pages/docs/anotherTypeSetter/
nav:
- Home: index.md
-theme: readthedocs
\ No newline at end of file
+ - Ch 1: defineASTandGrammar.md
+ - Ch 2: 2DManipulating.md
+theme: readthedocs
+
+markdown_extensions:
+ - attr_list
+ - md_in_html
--- /dev/null
+site_name: My Docs
+++ /dev/null
-# 定義抽象語法樹和語法
-
- <link rel="shortcut icon" href="/pages/typesetter/img/favicon.ico">
+ <link rel="shortcut icon" href="/pages/docs/anotherTypeSetter/img/favicon.ico">
<title>Another Typesetter 另一個排版器</title>
- <link rel="stylesheet" href="/pages/typesetter/css/theme.css" />
- <link rel="stylesheet" href="/pages/typesetter/css/theme_extra.css" />
+ <link rel="stylesheet" href="/pages/docs/anotherTypeSetter/css/theme.css" />
+ <link rel="stylesheet" href="/pages/docs/anotherTypeSetter/css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" />
- <script src="/pages/typesetter/js/jquery-2.1.1.min.js" defer></script>
- <script src="/pages/typesetter/js/modernizr-2.8.3.min.js" defer></script>
+ <script src="/pages/docs/anotherTypeSetter/js/jquery-2.1.1.min.js" defer></script>
+ <script src="/pages/docs/anotherTypeSetter/js/modernizr-2.8.3.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
- <a href="/pages/typesetter/." class="icon icon-home"> Another Typesetter 另一個排版器</a>
+ <a href="/pages/docs/anotherTypeSetter/." class="icon icon-home"> Another Typesetter 另一個排版器</a>
<div role="search">
- <form id ="rtd-search-form" class="wy-form" action="/pages/typesetter/search.html" method="get">
+ <form id ="rtd-search-form" class="wy-form" action="/pages/docs/anotherTypeSetter//search.html" method="get">
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
</form>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
- <li class="toctree-l1"><a class="reference internal" href="/pages/typesetter/.">Home</a>
+ <li class="toctree-l1"><a class="reference internal" href="/pages/docs/anotherTypeSetter/.">Home</a>
+ </li>
+ </ul>
+ <ul>
+ <li class="toctree-l1"><a class="reference internal" href="/pages/docs/anotherTypeSetter/defineASTandGrammar/">Ch 1</a>
+ </li>
+ </ul>
+ <ul>
+ <li class="toctree-l1"><a class="" href="/pages/docs/anotherTypeSetter/2DManipulating.md">Ch 2</a>
</li>
</ul>
</div>
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
- <a href="/pages/typesetter/.">Another Typesetter 另一個排版器</a>
+ <a href="/pages/docs/anotherTypeSetter/.">Another Typesetter 另一個排版器</a>
</nav>
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
- <li><a href="/pages/typesetter/.">Docs</a> »</li>
+ <li><a href="/pages/docs/anotherTypeSetter/.">Docs</a> »</li>
<li class="wy-breadcrumbs-aside">
</span>
</div>
- <script>var base_url = '/pages/typesetter';</script>
- <script src="/pages/typesetter/js/theme.js" defer></script>
- <script src="/pages/typesetter/search/main.js" defer></script>
+ <script>var base_url = '/pages/docs/anotherTypeSetter/';</script>
+ <script src="/pages/docs/anotherTypeSetter/js/theme.js" defer></script>
+ <script src="/pages/docs/anotherTypeSetter/search/main.js" defer></script>
<script defer>
window.onload = function () {
SphinxRtdTheme.Navigation.enable(true);
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- <link rel="canonical" href="https://blog.kianting.info/pages/typesetter/defineASTandGrammar/">
+ <link rel="canonical" href="https://blog.kianting.info/pages/docs/anotherTypeSetter/defineASTandGrammar/">
<link rel="shortcut icon" href="../img/favicon.ico">
- <title>defineASTandGrammar - Another Typesetter 另一個排版器</title>
+ <title>Ch 1 - Another Typesetter 另一個排版器</title>
<link rel="stylesheet" href="../css/theme.css" />
<link rel="stylesheet" href="../css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" />
<script>
// Current page data
- var mkdocs_page_name = "defineASTandGrammar";
+ var mkdocs_page_name = "Ch 1";
var mkdocs_page_input_path = "defineASTandGrammar.md";
- var mkdocs_page_url = "/pages/typesetter/defineASTandGrammar/";
+ var mkdocs_page_url = "/pages/docs/anotherTypeSetter/defineASTandGrammar/";
</script>
<script src="../js/jquery-2.1.1.min.js" defer></script>
<li class="toctree-l1"><a class="reference internal" href="..">Home</a>
</li>
</ul>
+ <ul class="current">
+ <li class="toctree-l1 current"><a class="reference internal current" href="./">Ch 1</a>
+ <ul class="current">
+ <li class="toctree-l2"><a class="reference internal" href="#_1">抽象語法樹</a>
+ </li>
+ <li class="toctree-l2"><a class="reference internal" href="#_2">決定語法</a>
+ </li>
+ <li class="toctree-l2"><a class="reference internal" href="#parsercombinatortokenize">用ParserCombinator進行tokenize</a>
+ </li>
+ <li class="toctree-l2"><a class="reference internal" href="#_3">平面操作</a>
+ <ul>
+ <li class="toctree-l3"><a class="reference internal" href="#_4">基本函數與直譯器</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul>
+ <li class="toctree-l1"><a class="" href="../2DManipulating.md">Ch 2</a>
+ </li>
+ </ul>
</div>
</div>
</nav>
- <li>defineASTandGrammar</li>
+ <li>Ch 1</li>
<li class="wy-breadcrumbs-aside">
</li>
<div role="main">
<div class="section">
-
+ <h1 id="ch1">Ch1 定義抽象語法樹和語法</h1>
+<h2 id="_1">抽象語法樹</h2>
+<p>C語言、Python語言就算有許多的關鍵字、操作符、符號或是常數變數,在編譯器分析語法以後,最後會轉成編譯器可以操作的樹結構,然後再轉成我們想要的另一個語言的樹,最後輸出另一個語言的程式碼。</p>
+<p>但是什麼叫做抽象語法樹呢?我們先從一點句法知識來談。</p>
+<p>學過中學國文文法的課程,會背一堆類似「主詞+動詞+受詞」、「主詞+(有/無)+受詞」的結構。可以換個說法,是句子=「主詞+動詞+受詞」或是「主詞+(有/無)+賓詞」的形式。我們將「=」寫成「::=」,「/」(或是)寫成「|」,「動詞」擴充變成「動詞片語」,就變成:</p>
+<pre><code> 句子 ::= (主詞 動詞片語 受詞) | (主詞 (有 | 無) 受詞)...
+
+</code></pre>
+<p>為了易讀所以寫成:</p>
+<pre><code>句子 ::= 主詞 動詞片語 受詞
+ | 主詞 (有 | 無) 受詞
+ | ...
+
+</code></pre>
+<p>用這種形式表示的語言句法,叫做「BNF文法」。這種句法看起來很語言學,但是我們想:受詞和主詞可以為名詞、專有名詞或是「形容詞+名詞」;動詞片語可以為動詞或是「副詞+動詞」。因此這樣之規則,就可以生成許多句子,比如「我有筆」、「張三養貓」、「小芳慢慢移動檯燈」等等的句子。然後句子可以用上述規則,分析成語法的樹狀結構,如下圖把「我曾旅居新竹」寫成語法樹。</p>
+<figure>
+<p><img alt="「我曾旅居新竹」的語法樹" src="../syntaxtree.svg" title="" />
+ </p>
+<figcaption>「我曾旅居新竹」的語法樹</figcaption>
+</figure>
+<p>同理,程式語言通常也有更嚴謹的這樣生成文法,可以用幾個簡單規則生出繁多的程式碼,而且合乎語法規定。這種生成文法也可檢查輸入的程式碼有沒有符合句法的規定。而這種語法生成的程式碼,去掉不需要的逗號等等符號,當然也可以做成語法樹,就是抽象語法樹 (abstract syntax tree, AST),如下圖所示。</p>
+<figure>
+<p><img alt="「(2+2) == 4」的語法樹。注意括號已經刪除。" src="../syntaxtree2.svg" title="" />
+ </p>
+<figcaption>「(2+2) == 4」的語法樹。注意括號已經刪除。</figcaption>
+</figure>
+<p>而上文的抽象語法樹,可以是我們把程式經過編譯器分析之後,用「樹」儲存的資料結構。而樹形結構我們可以使用Lisp語言的S表達式(S-expressiom; S-exp)來表示,本文採用這樣的表示方法。所以上文的<code>(2+2)==4</code>即<code>(== (+ 2 2) 4)</code>;<code>let baz = foo("bar")</code>,若是把foo("bar")這種函數套用(apply)寫成<code>(APPLY foo "bar")</code>,則其S-exp語法樹可寫為<code>(let baz(APPLY foo "bar"))</code>。</p>
+<h2 id="_2">決定語法</h2>
+<p>那我們要如何制定這個語言的語法,這樣我們才能夠寫出符合這個語法的函數,然後再用tokenizer和parser轉成AST樹。</p>
+<p>不考慮<code>+ - * /</code>這種運算子,以及向量的表示子,函數可以用<code>ID(arg1, arg2, ...)</code>這種方式來表示,其中<code>arg_x</code>是引數,<code>ID</code>是識別子(identifier,可以把它想成變函數的名字)。</p>
+<p>變數可以是<code>ID</code>,<code>arg_n</code>可以是<code>ID</code>或常數(量)。</p>
+<p>常數(量)的表示法可以是下列任一:</p>
+<ul>
+<li>
+<p>浮點數如0.0, 36.8,BNF風格的表達法為:<code>[0-9]+ '.' [0-9]+</code>。<code>'c'</code>指c這個文字,<code>+</code>表示前面的重複1次以上;<code>[0-9]</code>表示數字0到9。</p>
+</li>
+<li>
+<p>整數如22、0:<code>[0-9]+</code></p>
+</li>
+<li>
+<p>字串:<code>'"' (不是「"」的任一字元|('\' '"')) '"'</code>(<code>.</code>表示任何一個字元)</p>
+</li>
+</ul>
+<p>然而我們還是需要綁定變數<code>let x = var in boby</code>(在<code>body</code>裡面,<code>x</code>指代<code>var</code>)、<code>set x = var</code>(改變變數值)、lambda<code>lambda (x)=>{body}</code>。另外為了要區別要在PDF印上去的一般字元,在這個檔案的常數、變數、函數、關鍵字等前後需要加@表示(但是函數、lambda裡面的變數不用)。比如<code>@foo(a, b)@</code>、<code>@lambda(x)@</code>、<code>@"IAmAString"@</code>、<code>@2.2@</code>、<code>@3@</code>(後三者應該很少用到)可是若需在PDF印<code>@</code>時怎辦?那就用<code>\@</code>。比如<code>foo\@example.com</code>。</p>
+<p>所以我們可以定義以下的BNF風文法:</p>
+<pre><code>Language ::= PrintTxt | Exprs
+
+PrintTxt ::= (('\' '@')| 非@字元)+ //「我是一隻貓」或是「www\@example.com」
+
+Exprs ::= @ Expr* @ // *表示前面的重複0次以上(包含不出現)
+
+Expr ::= (Letting | Setting | Lambda | Apply | Var| Const) | "(" Expr ")"
+
+Letting ::= "let" Var "=" Expr "in" Expr // let foo = 12 in ...
+
+Setting ::= Var ":=" Expr "in" Expr // foo := a in ...
+
+Lambda ::= "fn" Var "->" Expr // fn x -> 12
+
+Apply ::= Expr Expr // foo 3 即foo(3)
+
+Var ::= ID
+
+Const ::= String | Float | Int
+
+Int ::= [0-9]+
+
+Float ::= [0-9]+ "." [0-9]+
+
+String ::= '"' (不是「"」的任一字元|('\' '"')) '"'
+</code></pre>
+<h2 id="parsercombinatortokenize">用ParserCombinator進行tokenize</h2>
+<p>Parser combinator(分析器組合子)是一種利用高階函數來簡化分析器撰寫的辦法。講一個簡單的案例吧:</p>
+<p>假設我們想要將字串的開頭match 0~9 之中的其中一個,我們可以寫一個函數match0to9如下:</p>
+<pre><code>function match0to9(string){
+if (string[0] in 0,1,..,9){
+ let rest = string[1:];
+ let matched = string[0];
+ return {type: "OK", rest : rest, matched : matched};
+}
+else{
+ return {type : "Nothing"};
+ }
+}
+</code></pre>
+<p>假設我們要將字串的前兩個字的match 0~9呢?如果會高階函數的話,引入一個<code>then</code>函數,然後把<code>match0to9</code>傳進去,這樣寫起來比較簡潔:</p>
+<pre><code>function thenDo(input, fun){
+ if (input.type != "Nothing"{
+
+ middle = fun(input.rest);
+ if (middle.type != "Nothing"){
+ middle.matched = input.matched + middle.matched
+ return middle;
+ }else{
+ return middle; // return nothing
+ }
+ }else{
+ input; // return nothing
+ }
+
+}
+
+
+</code></pre>
+<h2 id="_3">平面操作</h2>
+<h3 id="_4">基本函數與直譯器</h3>
+<p>我們藉由以上的概念,可以定義一個將文字、線條等形狀排列到2D平面的語法,畢竟不論輸出PDF、SVG等等,粗略而言,就是一種2D平面安放文字的語言。另外PDF的格式相當晦澀,就算_PDF Explained_的PDF教學,也還是要輔助使用其他的工具,沒辦法看了就自己手刻PDF,所以還是用<code>printpdf</code>來教學吧。</p>
+<p>現在我們初始化一個專案目錄,然後將需要的S-exp函式庫和pdf函數庫指定為相依函式庫:</p>
+<pre><code>cargo init;
+
+cargo add rsexp printpdf;
+</code></pre>
+<p>我們可以定義一些表達式(包含函數、資料結構,S-exp形式)的說明如下。<code>'()</code>表示空列表(empty list),因為都要表達是函數的引用,所有的函數寫成形式<code>(Func "函數名稱" (引數1 引數2 ....))</code>。Float指64位元浮點數:</p>
+<pre><code>(px Float) ; px表達pixel單位,儲存浮點數
+(pt Float) ; pt表達point單位,儲存浮點數
+(style (str pt)) ; 文字樣式。String表示字型的路徑[fontPath],Float表示字型大小(in Pt) (fontSize)
+(str String) ; 儲存字串
+(func "createPDF" '()) ;新增PDF
+(func "createPage" '()) ;新增頁面
+(func "writePdf" '(str)) ;寫入PDF頁面,String是PATH
+
+(func "putchar" '(str style x y)) ; x 軸向右,y 軸向下,str 表示字元(char),style 表示文字樣式
+</code></pre>
+<p><code>main.rs</code>先引用函式庫:
+<code>use printpdf::*;</code></p>
+<p>其中 <code>px</code>、<code>pt</code>是單位,所以可以在<code>main.rs</code>這樣定義:</p>
+<pre><code>enum Measure{
+ Pt(f64),
+ Px(f64)
+}
+</code></pre>
+<p>最後一次定義expression:</p>
+<pre><code>enum Expr{
+ Mea(Measure), // wrapper for measure
+ Str(&str),
+ Style{font_path : Measure, size : Measure},
+ Func(&str, Vec<Expr>),
+ Void // return nothing
+}
+</code></pre>
+<p>然後我們可以這樣定義一個處理輸入輸出的interpreter於<code>interp</code>,並修改<code>main.rs</code>如下,縱使我們準時:</p>
+<pre><code>fn interp(exp : Expr)->(){
+ // the function will be extended.
+ match exp {
+ Expr::Mea(Measure::Pt(x)) => println!("{:?} pt", x),
+ Expr::Mea(Measure::Px(x)) => println!("{:?} px", x),
+
+ _ => println!("not found expression"),
+ };
+}
+
+// exexute interpreter
+fn main() {
+ interp(Expr::Mea(Measure::Pt(2.2)));
+ interp(Expr::Flo(2.2));
+}
+</code></pre>
</div>
</div>
<footer>
+ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+
+
+ <a href=".." class="btn btn-neutral" title="Home"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+
+ </div>
+
<hr/>
<span class="rst-current-version" data-toggle="rst-current-version">
+ <span><a href=".." style="color: #fcfcfc;">« Previous</a></span>
+
</span>
</div>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="None">
- <link rel="canonical" href="https://blog.kianting.info/pages/typesetter/">
+ <link rel="canonical" href="https://blog.kianting.info/pages/docs/anotherTypeSetter/">
<link rel="shortcut icon" href="img/favicon.ico">
<title>Another Typesetter 另一個排版器</title>
<link rel="stylesheet" href="css/theme.css" />
// Current page data
var mkdocs_page_name = "Home";
var mkdocs_page_input_path = "index.md";
- var mkdocs_page_url = "/pages/typesetter/";
+ var mkdocs_page_url = "/pages/docs/anotherTypeSetter/";
</script>
<script src="js/jquery-2.1.1.min.js" defer></script>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href=".">Home</a>
<ul class="current">
- <li class="toctree-l2"><a class="reference internal" href="#_1">序言</a>
+ <li class="toctree-l2"><a class="reference internal" href="#_1">摘要</a>
+ <ul>
+ <li class="toctree-l3"><a class="reference internal" href="#_2">序言</a>
+ </li>
+ <li class="toctree-l3"><a class="reference internal" href="#_3">先備知識</a>
+ </li>
+ </ul>
</li>
</ul>
</li>
</ul>
+ <ul>
+ <li class="toctree-l1"><a class="reference internal" href="defineASTandGrammar/">Ch 1</a>
+ </li>
+ </ul>
+ <ul>
+ <li class="toctree-l1"><a class="" href="2DManipulating.md">Ch 2</a>
+ </li>
+ </ul>
</div>
</div>
</nav>
<div class="section">
<h1 id="another-typesetter-">Another Typesetter - 另一個排版器</h1>
-<h2 id="_1">序言</h2>
-<p>本文是講一個排版器的雛形如何製作的考察,若有任何建議,請聯絡作者 <a href="mailto:yoxem@kianting.info">yoxem@kianting.info</a>。</p>
-<p>內容部分參考<a href="https://mitpress.mit.edu/9780262047760/essentials-of-compilation/">Essentials of Compilation An Incremental Approach in Racket</a>(EoC)的思路,但因為目的不一樣,所以裡面的內容不太相同。另外EoC主要是講</p>
+<h2 id="_1">摘要</h2>
+<p>本文是講一個排版器的雛形如何製作的考察,使用Rust語言。</p>
+<h3 id="_2">序言</h3>
+<p>以前從國中時候試用Linux以及架站以後,就開始想用LaTeX排版些自己所寫的東西,其中包含覺得LaTeX的語法不好想要重造輪子。就算後來大學沒有走上資訊工程這條路,還是希望有天至少能夠完成個能用的雛形。</p>
+<p>但是這是涉及字體檔案的處理、PDF的處理、語法分析,後來自己因為不知道如何開發,所以一直停擺。不是遇到很多蟲,就是效能問題有缺失。因為時間繁忙很少更不消說了。甚至買了Knuth教授的 <em>Digital Typography</em>,想要瞭解斷行演算法,結果粗估五、六十頁,所以幾乎沒有讀。</p>
+<p>另外筆者一個分支興趣是編譯器的相關知識,所以開始讀和王垠的編譯器思想系出同門的Jeremy G. Siek所著作之 <em>Essential of Complication: An Incremental Approach in Racket</em>(編譯之要素:Racket語言的遞增的方法)。我想到:既然編譯器這種複雜的軟體,可以一層一層的用pass來遞增功能,就像水彩從背景、大物體一直由少漸多的完成。而排版軟體也是把使用者輸入的排版之領域特定語言(DSL)轉換成文字、圖形和二維座標對應關係(最後匯出成PDF或SVG等等)的編譯器,若是能夠用層層遞增的方法來完成,相信也能夠避免結構的複雜化導致錯誤容易發生的挫折。</p>
+<p>然而排版語言不只是輸入文字轉圖形而已,更重要的是還要有因應美觀的自動斷行(justification)和斷字(hyphenation)等等的演算法、還有PDF的基本知識、字型函式庫的取用、排版要求(多欄)、甚至還牽涉到語言特有的特性:比如東亞全形文字(漢字、諺文、日文假名、注音符號)和非全形文字中間要加空白,以及從左寫到右的文字(希伯來字母和阿拉伯字母等)的排版方法,不一而足。</p>
+<p>為了簡化起見,且目標讀者是臺灣的受眾,本書僅涉及到ASCII英文字母——頂多加些一些附加符號(diacritics)和漢字的排版。其他的功能希望讀者可以漸次由少漸多的附加。另外這邊會使用到一些LISP的表達式來表達抽象語法樹,若是不懂的話,可以看一點教 Lisp或是Scheme的書,如SICP。另外這本書不是編譯原理和描述PDF規格的書,不涉獵底層的知識,有需要的可以參考相關領域的書。</p>
+<h3 id="_3">先備知識</h3>
+<p>這不是教一位入門使用者如從零知識撰寫排版軟體的書,讀者應該有知道如何使用靜態型別語言的經驗,比如一點C、或是Rust等等。另外抽象語法樹為求方便,使用LISP撰寫,所以需要會LISP和Scheme的知識(知名教科書SICP的開頭可以讀一讀)。</p>
+<p>這本書也不教編譯理論和tokenizing、parsing、狀態機等等的,頂多只會帶到一些很基礎的知識,有需要的請另外再讀。所以使用者需要會有使用正規表達式(regex)的能力。</p>
+<p>操作環境使用Linux。需要安裝fontconfig等套件。</p>
<ul>
<li><a href="./defineASTandGrammar">定義抽象語法樹和語法</a></li>
</ul>
</div>
<footer>
+ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+
+ <a href="defineASTandGrammar/" class="btn btn-neutral float-right" title="Ch 1">Next <span class="icon icon-circle-arrow-right"></span></a>
+
+
+ </div>
+
<hr/>
+ <span style="margin-left: 15px"><a href="defineASTandGrammar/" style="color: #fcfcfc">Next »</a></span>
+
</span>
</div>
<script>var base_url = '.';</script>
<!--
MkDocs version : 1.1.2
-Build Date UTC : 2023-11-26 09:43:07.856027+00:00
+Build Date UTC : 2023-12-01 16:29:33.709363+00:00
-->
--- /dev/null
+#set heading(numbering: "1.1.1.1.")
+
+ #show raw: set text(font: "Noto Sans Mono CJK TC")
+
+
+#set page("a5")
+
+#set text(
+ font: ("New Computer Modern", "AR PL UMing TW"),
+ size: 11pt
+)
+
+#show heading: it => [
+ #set text(font: "Noto Serif CJK TC",
+ weight: "black")
+ #it.body
+]
+
+#set par( justify: true,leading: 1em,
+)
+
+#align(center)[#set text(
+ font: ("EB Garamond 08"),
+ weight:"medium",
+ size: 20pt,
+)
+ Clo: another typesetter]
+#align(center)[#box([#set text(size: 15pt,
+ font: "Noto Serif CJK TC",
+ weight:"medium")
+一個排版器的實作心得])]
+#box(
+ height:0.5em
+)
+#align(center)[#box([#set text(size: 11pt,
+ font: "AR PL UMing TW",
+ weight:"light")
+陳建町])]
+
+#pagebreak()
+
+
+
+
+#set page(
+ margin: (top: 60pt, bottom: 20pt),
+ header: locate(
+ loc => if (calc.odd(loc.page()) == true){
+ [#set align(right)
+ #numbering("i", loc.page())
+ ]
+ } else {
+ [#set align(left)
+ #numbering("i", loc.page())]
+ }
+ ));
+
+
+
+#heading(level:2, "版權聲明",outlined:false)
+
+(c) 2023 陳建町 (Tan, Kian-ting)
+
+本書內容非經許可,禁止複製、分發、商業使用等違反著作權法之行為。
+
+然書中之程式碼,採用 #link("https://opensource.org/license/mit/")[MIT許可證]授權。
+
+#pagebreak()
+
+#outline(
+ title: align(left, [目#box(width:1em)錄 #box(
+ height:1.5em)]),
+ target: heading.where(outlined: true),
+)
+
+#pagebreak()
+
+#set page(
+ numbering: "i",
+ number-align: top+right)
+
+#heading(numbering: none, "序言")
+
+以前從國中時候試用Linux以及架站以後,就開始想用LaTeX排版些自己所寫的東西,其中包含覺得LaTeX的語法不好想要重造輪子。就算後來大學沒有走上資訊工程這條路,還是希望有天至少能夠完成個能用的雛形。
+
+但是這是涉及字體檔案的處理、PDF的處理、語法分析,後來自己因為不知道如何開發,所以一直停擺。不是遇到很多蟲,就是效能問題有缺失。因為時間繁忙很少更不消說了。甚至買了Knuth教授的 _Digital Typography_,想要瞭解斷行演算法,結果粗估五、六十頁,所以幾乎沒有讀。
+
+另外筆者一個分支興趣是編譯器的相關知識,所以開始讀和王垠的編譯器思想系出同門的Jeremy G. Siek所著作之_Essential of Complication: An Incremental Approach in Racket_(編譯之要素:Racket語言的遞增的方法)。我想到:既然編譯器這種複雜的軟體,可以一層一層的用pass來遞增功能,就像水彩從背景、大物體一直由少漸多的完成。而排版軟體也是把使用者輸入的排版之領域特定語言(DSL)轉換成文字、圖形和二維座標對應關係(最後匯出成PDF或SVG等等)的編譯器,若是能夠用層層遞增的方法來完成,相信也能夠避免結構的複雜化導致錯誤容易發生的挫折。
+
+然而排版語言不只是輸入文字轉圖形而已,更重要的是還要有因應美觀的自動斷行(justification)和斷字(hyphenation)等等的演算法、還有PDF的基本知識、字型函式庫的取用、排版要求(多欄)、甚至還牽涉到語言特有的特性:比如東亞全形文字(漢字、諺文、日文假名、注音符號)和非全形文字中間要加空白,以及從左寫到右的文字(希伯來字母和阿拉伯字母等)的排版方法,不一而足。
+
+為了簡化起見,且目標讀者是臺灣的受眾,本書僅涉及到ASCII英文字母——頂多加些一些附加符號(diacritics)和漢字的排版。其他的功能希望讀者可以漸次由少漸多的附加。另外這邊會使用到一些LISP的表達式來表達抽象語法樹,若是不懂的話,可以看一點教 Lisp或是Scheme的書,如SICP。另外這本書不是編譯原理和描述PDF規格的書,不涉獵底層的知識,有需要的可以參考相關領域的書。
+
+#heading(numbering: none, "致謝")
+
+感謝Donald Knuth教授開發出這麼一套排版系統以及排版的演算法,除了造福科學排版的諸多用戶外,也間接鼓舞我想要研究排版軟體如何實作;感謝Jeremy G.Siek老師的_Essential of Complication: An Incremental Approach in Racket_,讓我獲得排版語言編譯器設計的啟發。感謝王垠讓我對編譯器相關的技術有興趣,從而斷斷續續學習相關的資訊。
+
+感謝愛爾蘭語,除了讓我對語言和語言復興的知識打開新的世界以外,這個軟體的名字Clo也是從這裡來的(cló有「活字」的意思,因為技術限制抱歉沒辦法輸入長音符號)。
+
+感謝我的父母,雖然專長不是電腦資訊科技,但是要感謝他們讓我讓我有餘力能夠在中學的時候研究這種興趣,這條路才能走下去。
+
+感謝這本書閱讀的人們,讓我知道筆者不是孤單的。
+
+Siōng-āu Kám-siā góa ê Siōng Chú, nā-bô i ê hû-chhî kap pó-siú, chit-pún chheh iā bô-hó oân-sêng.(最後感謝上主,若無扶持保守,這本書也很難完成)
+
+#pagebreak()
+
+
+#set page(
+ margin: (top: 60pt, bottom: 20pt),
+ header: locate(
+ loc =>{
+ let chapter_query = query(selector(heading.where(level: 1)).after(loc),loc)
+ let section_query = query(selector(heading.where(level: 2)).after(loc),loc)
+ let chapter = "";
+ let section = "";
+ if chapter_query == (){chapter = ""}
+ else{chapter = chapter_query.at(0).body};
+ if section_query == (){section = ""}
+ else{section = section_query.at(0).body}
+
+
+
+
+ if (calc.odd(loc.page()) == true){
+ grid(
+ columns: (0.333333fr, 0.333333fr, 0.333333fr),
+
+text(style: "italic")[ ],
+[#set align(center)
+#chapter],
+[ #h(1fr) #loc.page-numbering()])
+ } else {
+ grid(
+ columns: (0.333333fr, 0.333333fr, 0.333333fr),
+
+text(style: "italic")[#loc.page-numbering()],
+[#set align(center)
+#section],
+[ ])
+ }}
+ ));
+
+#show heading: it => [
+ #set text(font: ("New Computer Modern", "Noto Serif CJK TC"),
+ weight: "black")
+ #counter(heading).display() #it
+]
+
+
+#set page(numbering: "1")
+#counter(page).update(1)
+#set heading(numbering: "1.1.1.1.1")
+= 先備知識
+
+這不是教一位入門使用者如從零知識撰寫排版軟體的書,讀者應該有知道如何使用靜態型別語言的經驗,比如一點C、或是Rust等等。另外抽象語法樹為求方便,使用LISP撰寫,所以需要會LISP和Scheme的知識(知名教科書SICP的開頭可以讀一讀)。
+
+這本書也不教編譯理論和tokenizing、parsing、狀態機等等的,頂多只會帶到一些很基礎的知識,有需要的請另外再讀。所以使用者需要會有使用正規表達式(regex)的能力。
+
+== 抽象語法樹
+
+C語言、Python語言就算有許多的關鍵字、操作符、符號或是常數變數,在編譯器分析語法以後,最後會轉成編譯器可以操作的樹結構,然後再轉成我們想要的另一個語言的樹,最後輸出另一個語言的程式碼。
+
+但是什麼叫做抽象語法樹呢?我們先從一點句法知識來談。
+
+學過中學國文文法的課程,會背一堆類似「主詞+動詞+受詞」、「主詞+(有/無)+受詞」的結構。可以換個說法,是句子=「主詞+動詞+受詞」或是「主詞+(有/無)+賓詞」的形式。我們將「=」寫成「::=」,「/」(或是)寫成「|」,動詞擴充變成「動詞片語」,就變成:
+
+```
+ 句子 ::= (主詞 動詞片語 受詞) | (主詞 (有 | 無) 受詞)...
+
+```
+
+用這種形式表示的語言句法,叫做「BNF文法」。這種句法看起來很語言學,但是我們想:受詞和主詞可以為名詞、專有名詞或是「形容詞+名詞」;動詞片語可以為動詞或是「副詞+動詞」。因此這樣之規則,就可以生成許多句子,比如「我有筆」、「張三養貓」、「小芳慢慢移動檯燈」等等的句子。然後句子可以用上述規則,分析成語法的樹狀結構,如圖1把「我曾旅居新竹」寫成語法樹。
+
+#figure(
+ image("syntaxtree.svg", width: 40%),
+ caption: [
+ 「我曾旅居新竹」的語法樹
+ ],
+ supplement: [圖],
+)
+
+同理,程式語言通常也有更嚴謹的這樣生成文法,可以用幾個簡單規則生出繁多的程式碼,而且合乎語法規定。這種生成文法也可檢查輸入的程式碼有沒有符合句法的規定。而這種語法生成的程式碼,去掉不需要的逗號等等符號,當然也可以做成語法樹,就是抽象語法樹 (abstract syntax tree, AST),如圖2所示。
+
+#figure(
+ image("syntaxtree2.svg", width: 30%),
+ caption: [
+ `(2+2) == 4`的語法樹。注意括號已經刪除。
+ ],
+ supplement: [圖],
+)
+
+而上文的抽象語法樹,可以是我們把程式經過編譯器分析之後,用「樹」儲存的資料結構。而樹形結構我們可以使用Lisp語言的S表達式(S-expressiom; S-exp)來表示,本文採用這樣的表示方法。所以上文的`(2+2)==4`即`(== (+ 2 2) 4)`;`let baz = foo("bar")`,若是把foo("bar")這種函數套用(apply)寫成`(APPLY foo "bar")`,則其S-exp語法樹可寫為`(let baz(APPLY foo "bar"))`。
--- /dev/null
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+
+ <link rel="canonical" href="https://blog.kianting.info/pages/docs/anotherTypeSetter/index2/">
+ <link rel="shortcut icon" href="../img/favicon.ico">
+ <title>Index2 - Another Typesetter 另一個排版器</title>
+ <link rel="stylesheet" href="../css/theme.css" />
+ <link rel="stylesheet" href="../css/theme_extra.css" />
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" />
+
+ <script>
+ // Current page data
+ var mkdocs_page_name = "Index2";
+ var mkdocs_page_input_path = "index2.md";
+ var mkdocs_page_url = "/pages/docs/anotherTypeSetter/index2/";
+ </script>
+
+ <script src="../js/jquery-2.1.1.min.js" defer></script>
+ <script src="../js/modernizr-2.8.3.min.js" defer></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+ <a href=".." class="icon icon-home"> Another Typesetter 另一個排版器</a>
+ <div role="search">
+ <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" title="Type search term here" />
+ </form>
+</div>
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+ <ul>
+ <li class="toctree-l1"><a class="reference internal" href="..">Home</a>
+ </li>
+ </ul>
+ <ul>
+ <li class="toctree-l1"><a class="reference internal" href="../defineASTandGrammar/">Ch 1</a>
+ </li>
+ </ul>
+ <ul>
+ <li class="toctree-l1"><a class="" href="../2DManipulating.md">Ch 2</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="..">Another Typesetter 另一個排版器</a>
+ </nav>
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="..">Docs</a> »</li>
+
+
+
+ <li>Index2</li>
+ <li class="wy-breadcrumbs-aside">
+
+ </li>
+ </ul>
+
+ <hr/>
+</div>
+ <div role="main">
+ <div class="section">
+
+ <p>[ Clo: another typesetter]{align="center"} [[
+一個排版器的實作心得]{.box}]{align="center"} []{.box} [[
+陳建町]{.box}]{align="center"}</p>
+<p>版權聲明</p>
+<p>(c) 2023 陳建町 (Tan, Kian-ting)</p>
+<p>本書內容非經許可,禁止複製、分發、商業使用等違反著作權法之行為。</p>
+<p>然書中之程式碼,採用
+<a href="https://opensource.org/license/mit/">MIT許可證</a>授權。</p>
+<p>序言</p>
+<p>以前從國中時候試用Linux以及架站以後,就開始想用LaTeX排版些自己所寫的東西,其中包含覺得LaTeX的語法不好想要重造輪子。就算後來大學沒有走上資訊工程這條路,還是希望有天至少能夠完成個能用的雛形。</p>
+<p>但是這是涉及字體檔案的處理、PDF的處理、語法分析,後來自己因為不知道如何開發,所以一直停擺。不是遇到很多蟲,就是效能問題有缺失。因為時間繁忙很少更不消說了。甚至買了Knuth教授的
+<em>Digital
+Typography</em>,想要瞭解斷行演算法,結果粗估五、六十頁,所以幾乎沒有讀。</p>
+<p>另外筆者一個分支興趣是編譯器的相關知識,所以開始讀和王垠的編譯器思想系出同門的Jeremy
+G. Siek所著作之_Essential of Complication: An Incremental Approach in
+Racket</p>
+
+ </div>
+ </div>
+ <footer>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <!-- Copyright etc -->
+
+ </div>
+
+ Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+ <div class="rst-versions" role="note" aria-label="versions">
+ <span class="rst-current-version" data-toggle="rst-current-version">
+
+
+
+ </span>
+</div>
+ <script>var base_url = '..';</script>
+ <script src="../js/theme.js" defer></script>
+ <script src="../search/main.js" defer></script>
+ <script defer>
+ window.onload = function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ };
+ </script>
+
+</body>
+</html>
<li class="toctree-l1"><a class="reference internal" href="./.">Home</a>
</li>
</ul>
+ <ul>
+ <li class="toctree-l1"><a class="reference internal" href="./defineASTandGrammar/">Ch 1</a>
+ </li>
+ </ul>
+ <ul>
+ <li class="toctree-l1"><a class="" href="./2DManipulating.md">Ch 2</a>
+ </li>
+ </ul>
</div>
</div>
</nav>
-{"config":{"lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Another Typesetter - \u53e6\u4e00\u500b\u6392\u7248\u5668 \u5e8f\u8a00 \u672c\u6587\u662f\u8b1b\u4e00\u500b\u6392\u7248\u5668\u7684\u96db\u5f62\u5982\u4f55\u88fd\u4f5c\u7684\u8003\u5bdf\uff0c\u82e5\u6709\u4efb\u4f55\u5efa\u8b70\uff0c\u8acb\u806f\u7d61\u4f5c\u8005 yoxem@kianting.info \u3002 \u5167\u5bb9\u90e8\u5206\u53c3\u8003 Essentials of Compilation An Incremental Approach in Racket (EoC)\u7684\u601d\u8def\uff0c\u4f46\u56e0\u70ba\u76ee\u7684\u4e0d\u4e00\u6a23\uff0c\u6240\u4ee5\u88e1\u9762\u7684\u5167\u5bb9\u4e0d\u592a\u76f8\u540c\u3002\u53e6\u5916EoC\u4e3b\u8981\u662f\u8b1b \u5b9a\u7fa9\u62bd\u8c61\u8a9e\u6cd5\u6a39\u548c\u8a9e\u6cd5","title":"Home"},{"location":"#another-typesetter-","text":"","title":"Another Typesetter - \u53e6\u4e00\u500b\u6392\u7248\u5668"},{"location":"#_1","text":"\u672c\u6587\u662f\u8b1b\u4e00\u500b\u6392\u7248\u5668\u7684\u96db\u5f62\u5982\u4f55\u88fd\u4f5c\u7684\u8003\u5bdf\uff0c\u82e5\u6709\u4efb\u4f55\u5efa\u8b70\uff0c\u8acb\u806f\u7d61\u4f5c\u8005 yoxem@kianting.info \u3002 \u5167\u5bb9\u90e8\u5206\u53c3\u8003 Essentials of Compilation An Incremental Approach in Racket (EoC)\u7684\u601d\u8def\uff0c\u4f46\u56e0\u70ba\u76ee\u7684\u4e0d\u4e00\u6a23\uff0c\u6240\u4ee5\u88e1\u9762\u7684\u5167\u5bb9\u4e0d\u592a\u76f8\u540c\u3002\u53e6\u5916EoC\u4e3b\u8981\u662f\u8b1b \u5b9a\u7fa9\u62bd\u8c61\u8a9e\u6cd5\u6a39\u548c\u8a9e\u6cd5","title":"\u5e8f\u8a00"},{"location":"defineASTandGrammar/","text":"","title":"defineASTandGrammar"}]}
\ No newline at end of file
+{"config":{"lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Another Typesetter - \u53e6\u4e00\u500b\u6392\u7248\u5668 \u6458\u8981 \u672c\u6587\u662f\u8b1b\u4e00\u500b\u6392\u7248\u5668\u7684\u96db\u5f62\u5982\u4f55\u88fd\u4f5c\u7684\u8003\u5bdf\uff0c\u4f7f\u7528Rust\u8a9e\u8a00\u3002 \u5e8f\u8a00 \u4ee5\u524d\u5f9e\u570b\u4e2d\u6642\u5019\u8a66\u7528Linux\u4ee5\u53ca\u67b6\u7ad9\u4ee5\u5f8c\uff0c\u5c31\u958b\u59cb\u60f3\u7528LaTeX\u6392\u7248\u4e9b\u81ea\u5df1\u6240\u5beb\u7684\u6771\u897f\uff0c\u5176\u4e2d\u5305\u542b\u89ba\u5f97LaTeX\u7684\u8a9e\u6cd5\u4e0d\u597d\u60f3\u8981\u91cd\u9020\u8f2a\u5b50\u3002\u5c31\u7b97\u5f8c\u4f86\u5927\u5b78\u6c92\u6709\u8d70\u4e0a\u8cc7\u8a0a\u5de5\u7a0b\u9019\u689d\u8def\uff0c\u9084\u662f\u5e0c\u671b\u6709\u5929\u81f3\u5c11\u80fd\u5920\u5b8c\u6210\u500b\u80fd\u7528\u7684\u96db\u5f62\u3002 \u4f46\u662f\u9019\u662f\u6d89\u53ca\u5b57\u9ad4\u6a94\u6848\u7684\u8655\u7406\u3001PDF\u7684\u8655\u7406\u3001\u8a9e\u6cd5\u5206\u6790\uff0c\u5f8c\u4f86\u81ea\u5df1\u56e0\u70ba\u4e0d\u77e5\u9053\u5982\u4f55\u958b\u767c\uff0c\u6240\u4ee5\u4e00\u76f4\u505c\u64fa\u3002\u4e0d\u662f\u9047\u5230\u5f88\u591a\u87f2\uff0c\u5c31\u662f\u6548\u80fd\u554f\u984c\u6709\u7f3a\u5931\u3002\u56e0\u70ba\u6642\u9593\u7e41\u5fd9\u5f88\u5c11\u66f4\u4e0d\u6d88\u8aaa\u4e86\u3002\u751a\u81f3\u8cb7\u4e86Knuth\u6559\u6388\u7684 Digital Typography \uff0c\u60f3\u8981\u77ad\u89e3\u65b7\u884c\u6f14\u7b97\u6cd5\uff0c\u7d50\u679c\u7c97\u4f30\u4e94\u3001\u516d\u5341\u9801\uff0c\u6240\u4ee5\u5e7e\u4e4e\u6c92\u6709\u8b80\u3002 \u53e6\u5916\u7b46\u8005\u4e00\u500b\u5206\u652f\u8208\u8da3\u662f\u7de8\u8b6f\u5668\u7684\u76f8\u95dc\u77e5\u8b58\uff0c\u6240\u4ee5\u958b\u59cb\u8b80\u548c\u738b\u57a0\u7684\u7de8\u8b6f\u5668\u601d\u60f3\u7cfb\u51fa\u540c\u9580\u7684Jeremy G. Siek\u6240\u8457\u4f5c\u4e4b Essential of Complication: An Incremental Approach in Racket \uff08\u7de8\u8b6f\u4e4b\u8981\u7d20\uff1aRacket\u8a9e\u8a00\u7684\u905e\u589e\u7684\u65b9\u6cd5\uff09\u3002\u6211\u60f3\u5230\uff1a\u65e2\u7136\u7de8\u8b6f\u5668\u9019\u7a2e\u8907\u96dc\u7684\u8edf\u9ad4\uff0c\u53ef\u4ee5\u4e00\u5c64\u4e00\u5c64\u7684\u7528pass\u4f86\u905e\u589e\u529f\u80fd\uff0c\u5c31\u50cf\u6c34\u5f69\u5f9e\u80cc\u666f\u3001\u5927\u7269\u9ad4\u4e00\u76f4\u7531\u5c11\u6f38\u591a\u7684\u5b8c\u6210\u3002\u800c\u6392\u7248\u8edf\u9ad4\u4e5f\u662f\u628a\u4f7f\u7528\u8005\u8f38\u5165\u7684\u6392\u7248\u4e4b\u9818\u57df\u7279\u5b9a\u8a9e\u8a00(DSL)\u8f49\u63db\u6210\u6587\u5b57\u3001\u5716\u5f62\u548c\u4e8c\u7dad\u5ea7\u6a19\u5c0d\u61c9\u95dc\u4fc2\uff08\u6700\u5f8c\u532f\u51fa\u6210PDF\u6216SVG\u7b49\u7b49\uff09\u7684\u7de8\u8b6f\u5668\uff0c\u82e5\u662f\u80fd\u5920\u7528\u5c64\u5c64\u905e\u589e\u7684\u65b9\u6cd5\u4f86\u5b8c\u6210\uff0c\u76f8\u4fe1\u4e5f\u80fd\u5920\u907f\u514d\u7d50\u69cb\u7684\u8907\u96dc\u5316\u5c0e\u81f4\u932f\u8aa4\u5bb9\u6613\u767c\u751f\u7684\u632b\u6298\u3002 \u7136\u800c\u6392\u7248\u8a9e\u8a00\u4e0d\u53ea\u662f\u8f38\u5165\u6587\u5b57\u8f49\u5716\u5f62\u800c\u5df2\uff0c\u66f4\u91cd\u8981\u7684\u662f\u9084\u8981\u6709\u56e0\u61c9\u7f8e\u89c0\u7684\u81ea\u52d5\u65b7\u884c(justification)\u548c\u65b7\u5b57(hyphenation)\u7b49\u7b49\u7684\u6f14\u7b97\u6cd5\u3001\u9084\u6709PDF\u7684\u57fa\u672c\u77e5\u8b58\u3001\u5b57\u578b\u51fd\u5f0f\u5eab\u7684\u53d6\u7528\u3001\u6392\u7248\u8981\u6c42\uff08\u591a\u6b04\uff09\u3001\u751a\u81f3\u9084\u727d\u6d89\u5230\u8a9e\u8a00\u7279\u6709\u7684\u7279\u6027\uff1a\u6bd4\u5982\u6771\u4e9e\u5168\u5f62\u6587\u5b57\uff08\u6f22\u5b57\u3001\u8afa\u6587\u3001\u65e5\u6587\u5047\u540d\u3001\u6ce8\u97f3\u7b26\u865f\uff09\u548c\u975e\u5168\u5f62\u6587\u5b57\u4e2d\u9593\u8981\u52a0\u7a7a\u767d\uff0c\u4ee5\u53ca\u5f9e\u5de6\u5beb\u5230\u53f3\u7684\u6587\u5b57\uff08\u5e0c\u4f2f\u4f86\u5b57\u6bcd\u548c\u963f\u62c9\u4f2f\u5b57\u6bcd\u7b49\uff09\u7684\u6392\u7248\u65b9\u6cd5\uff0c\u4e0d\u4e00\u800c\u8db3\u3002 \u70ba\u4e86\u7c21\u5316\u8d77\u898b\uff0c\u4e14\u76ee\u6a19\u8b80\u8005\u662f\u81fa\u7063\u7684\u53d7\u773e\uff0c\u672c\u66f8\u50c5\u6d89\u53ca\u5230ASCII\u82f1\u6587\u5b57\u6bcd\u2014\u2014\u9802\u591a\u52a0\u4e9b\u4e00\u4e9b\u9644\u52a0\u7b26\u865f(diacritics)\u548c\u6f22\u5b57\u7684\u6392\u7248\u3002\u5176\u4ed6\u7684\u529f\u80fd\u5e0c\u671b\u8b80\u8005\u53ef\u4ee5\u6f38\u6b21\u7531\u5c11\u6f38\u591a\u7684\u9644\u52a0\u3002\u53e6\u5916\u9019\u908a\u6703\u4f7f\u7528\u5230\u4e00\u4e9bLISP\u7684\u8868\u9054\u5f0f\u4f86\u8868\u9054\u62bd\u8c61\u8a9e\u6cd5\u6a39\uff0c\u82e5\u662f\u4e0d\u61c2\u7684\u8a71\uff0c\u53ef\u4ee5\u770b\u4e00\u9ede\u6559 Lisp\u6216\u662fScheme\u7684\u66f8\uff0c\u5982SICP\u3002\u53e6\u5916\u9019\u672c\u66f8\u4e0d\u662f\u7de8\u8b6f\u539f\u7406\u548c\u63cf\u8ff0PDF\u898f\u683c\u7684\u66f8\uff0c\u4e0d\u6d89\u7375\u5e95\u5c64\u7684\u77e5\u8b58\uff0c\u6709\u9700\u8981\u7684\u53ef\u4ee5\u53c3\u8003\u76f8\u95dc\u9818\u57df\u7684\u66f8\u3002 \u5148\u5099\u77e5\u8b58 \u9019\u4e0d\u662f\u6559\u4e00\u4f4d\u5165\u9580\u4f7f\u7528\u8005\u5982\u5f9e\u96f6\u77e5\u8b58\u64b0\u5beb\u6392\u7248\u8edf\u9ad4\u7684\u66f8\uff0c\u8b80\u8005\u61c9\u8a72\u6709\u77e5\u9053\u5982\u4f55\u4f7f\u7528\u975c\u614b\u578b\u5225\u8a9e\u8a00\u7684\u7d93\u9a57\uff0c\u6bd4\u5982\u4e00\u9edeC\u3001\u6216\u662fRust\u7b49\u7b49\u3002\u53e6\u5916\u62bd\u8c61\u8a9e\u6cd5\u6a39\u70ba\u6c42\u65b9\u4fbf\uff0c\u4f7f\u7528LISP\u64b0\u5beb\uff0c\u6240\u4ee5\u9700\u8981\u6703LISP\u548cScheme\u7684\u77e5\u8b58\uff08\u77e5\u540d\u6559\u79d1\u66f8SICP\u7684\u958b\u982d\u53ef\u4ee5\u8b80\u4e00\u8b80\uff09\u3002 \u9019\u672c\u66f8\u4e5f\u4e0d\u6559\u7de8\u8b6f\u7406\u8ad6\u548ctokenizing\u3001parsing\u3001\u72c0\u614b\u6a5f\u7b49\u7b49\u7684\uff0c\u9802\u591a\u53ea\u6703\u5e36\u5230\u4e00\u4e9b\u5f88\u57fa\u790e\u7684\u77e5\u8b58\uff0c\u6709\u9700\u8981\u7684\u8acb\u53e6\u5916\u518d\u8b80\u3002\u6240\u4ee5\u4f7f\u7528\u8005\u9700\u8981\u6703\u6709\u4f7f\u7528\u6b63\u898f\u8868\u9054\u5f0f(regex)\u7684\u80fd\u529b\u3002 \u64cd\u4f5c\u74b0\u5883\u4f7f\u7528Linux\u3002\u9700\u8981\u5b89\u88ddfontconfig\u7b49\u5957\u4ef6\u3002 \u5b9a\u7fa9\u62bd\u8c61\u8a9e\u6cd5\u6a39\u548c\u8a9e\u6cd5","title":"Home"},{"location":"#another-typesetter-","text":"","title":"Another Typesetter - \u53e6\u4e00\u500b\u6392\u7248\u5668"},{"location":"#_1","text":"\u672c\u6587\u662f\u8b1b\u4e00\u500b\u6392\u7248\u5668\u7684\u96db\u5f62\u5982\u4f55\u88fd\u4f5c\u7684\u8003\u5bdf\uff0c\u4f7f\u7528Rust\u8a9e\u8a00\u3002","title":"\u6458\u8981"},{"location":"#_2","text":"\u4ee5\u524d\u5f9e\u570b\u4e2d\u6642\u5019\u8a66\u7528Linux\u4ee5\u53ca\u67b6\u7ad9\u4ee5\u5f8c\uff0c\u5c31\u958b\u59cb\u60f3\u7528LaTeX\u6392\u7248\u4e9b\u81ea\u5df1\u6240\u5beb\u7684\u6771\u897f\uff0c\u5176\u4e2d\u5305\u542b\u89ba\u5f97LaTeX\u7684\u8a9e\u6cd5\u4e0d\u597d\u60f3\u8981\u91cd\u9020\u8f2a\u5b50\u3002\u5c31\u7b97\u5f8c\u4f86\u5927\u5b78\u6c92\u6709\u8d70\u4e0a\u8cc7\u8a0a\u5de5\u7a0b\u9019\u689d\u8def\uff0c\u9084\u662f\u5e0c\u671b\u6709\u5929\u81f3\u5c11\u80fd\u5920\u5b8c\u6210\u500b\u80fd\u7528\u7684\u96db\u5f62\u3002 \u4f46\u662f\u9019\u662f\u6d89\u53ca\u5b57\u9ad4\u6a94\u6848\u7684\u8655\u7406\u3001PDF\u7684\u8655\u7406\u3001\u8a9e\u6cd5\u5206\u6790\uff0c\u5f8c\u4f86\u81ea\u5df1\u56e0\u70ba\u4e0d\u77e5\u9053\u5982\u4f55\u958b\u767c\uff0c\u6240\u4ee5\u4e00\u76f4\u505c\u64fa\u3002\u4e0d\u662f\u9047\u5230\u5f88\u591a\u87f2\uff0c\u5c31\u662f\u6548\u80fd\u554f\u984c\u6709\u7f3a\u5931\u3002\u56e0\u70ba\u6642\u9593\u7e41\u5fd9\u5f88\u5c11\u66f4\u4e0d\u6d88\u8aaa\u4e86\u3002\u751a\u81f3\u8cb7\u4e86Knuth\u6559\u6388\u7684 Digital Typography \uff0c\u60f3\u8981\u77ad\u89e3\u65b7\u884c\u6f14\u7b97\u6cd5\uff0c\u7d50\u679c\u7c97\u4f30\u4e94\u3001\u516d\u5341\u9801\uff0c\u6240\u4ee5\u5e7e\u4e4e\u6c92\u6709\u8b80\u3002 \u53e6\u5916\u7b46\u8005\u4e00\u500b\u5206\u652f\u8208\u8da3\u662f\u7de8\u8b6f\u5668\u7684\u76f8\u95dc\u77e5\u8b58\uff0c\u6240\u4ee5\u958b\u59cb\u8b80\u548c\u738b\u57a0\u7684\u7de8\u8b6f\u5668\u601d\u60f3\u7cfb\u51fa\u540c\u9580\u7684Jeremy G. Siek\u6240\u8457\u4f5c\u4e4b Essential of Complication: An Incremental Approach in Racket \uff08\u7de8\u8b6f\u4e4b\u8981\u7d20\uff1aRacket\u8a9e\u8a00\u7684\u905e\u589e\u7684\u65b9\u6cd5\uff09\u3002\u6211\u60f3\u5230\uff1a\u65e2\u7136\u7de8\u8b6f\u5668\u9019\u7a2e\u8907\u96dc\u7684\u8edf\u9ad4\uff0c\u53ef\u4ee5\u4e00\u5c64\u4e00\u5c64\u7684\u7528pass\u4f86\u905e\u589e\u529f\u80fd\uff0c\u5c31\u50cf\u6c34\u5f69\u5f9e\u80cc\u666f\u3001\u5927\u7269\u9ad4\u4e00\u76f4\u7531\u5c11\u6f38\u591a\u7684\u5b8c\u6210\u3002\u800c\u6392\u7248\u8edf\u9ad4\u4e5f\u662f\u628a\u4f7f\u7528\u8005\u8f38\u5165\u7684\u6392\u7248\u4e4b\u9818\u57df\u7279\u5b9a\u8a9e\u8a00(DSL)\u8f49\u63db\u6210\u6587\u5b57\u3001\u5716\u5f62\u548c\u4e8c\u7dad\u5ea7\u6a19\u5c0d\u61c9\u95dc\u4fc2\uff08\u6700\u5f8c\u532f\u51fa\u6210PDF\u6216SVG\u7b49\u7b49\uff09\u7684\u7de8\u8b6f\u5668\uff0c\u82e5\u662f\u80fd\u5920\u7528\u5c64\u5c64\u905e\u589e\u7684\u65b9\u6cd5\u4f86\u5b8c\u6210\uff0c\u76f8\u4fe1\u4e5f\u80fd\u5920\u907f\u514d\u7d50\u69cb\u7684\u8907\u96dc\u5316\u5c0e\u81f4\u932f\u8aa4\u5bb9\u6613\u767c\u751f\u7684\u632b\u6298\u3002 \u7136\u800c\u6392\u7248\u8a9e\u8a00\u4e0d\u53ea\u662f\u8f38\u5165\u6587\u5b57\u8f49\u5716\u5f62\u800c\u5df2\uff0c\u66f4\u91cd\u8981\u7684\u662f\u9084\u8981\u6709\u56e0\u61c9\u7f8e\u89c0\u7684\u81ea\u52d5\u65b7\u884c(justification)\u548c\u65b7\u5b57(hyphenation)\u7b49\u7b49\u7684\u6f14\u7b97\u6cd5\u3001\u9084\u6709PDF\u7684\u57fa\u672c\u77e5\u8b58\u3001\u5b57\u578b\u51fd\u5f0f\u5eab\u7684\u53d6\u7528\u3001\u6392\u7248\u8981\u6c42\uff08\u591a\u6b04\uff09\u3001\u751a\u81f3\u9084\u727d\u6d89\u5230\u8a9e\u8a00\u7279\u6709\u7684\u7279\u6027\uff1a\u6bd4\u5982\u6771\u4e9e\u5168\u5f62\u6587\u5b57\uff08\u6f22\u5b57\u3001\u8afa\u6587\u3001\u65e5\u6587\u5047\u540d\u3001\u6ce8\u97f3\u7b26\u865f\uff09\u548c\u975e\u5168\u5f62\u6587\u5b57\u4e2d\u9593\u8981\u52a0\u7a7a\u767d\uff0c\u4ee5\u53ca\u5f9e\u5de6\u5beb\u5230\u53f3\u7684\u6587\u5b57\uff08\u5e0c\u4f2f\u4f86\u5b57\u6bcd\u548c\u963f\u62c9\u4f2f\u5b57\u6bcd\u7b49\uff09\u7684\u6392\u7248\u65b9\u6cd5\uff0c\u4e0d\u4e00\u800c\u8db3\u3002 \u70ba\u4e86\u7c21\u5316\u8d77\u898b\uff0c\u4e14\u76ee\u6a19\u8b80\u8005\u662f\u81fa\u7063\u7684\u53d7\u773e\uff0c\u672c\u66f8\u50c5\u6d89\u53ca\u5230ASCII\u82f1\u6587\u5b57\u6bcd\u2014\u2014\u9802\u591a\u52a0\u4e9b\u4e00\u4e9b\u9644\u52a0\u7b26\u865f(diacritics)\u548c\u6f22\u5b57\u7684\u6392\u7248\u3002\u5176\u4ed6\u7684\u529f\u80fd\u5e0c\u671b\u8b80\u8005\u53ef\u4ee5\u6f38\u6b21\u7531\u5c11\u6f38\u591a\u7684\u9644\u52a0\u3002\u53e6\u5916\u9019\u908a\u6703\u4f7f\u7528\u5230\u4e00\u4e9bLISP\u7684\u8868\u9054\u5f0f\u4f86\u8868\u9054\u62bd\u8c61\u8a9e\u6cd5\u6a39\uff0c\u82e5\u662f\u4e0d\u61c2\u7684\u8a71\uff0c\u53ef\u4ee5\u770b\u4e00\u9ede\u6559 Lisp\u6216\u662fScheme\u7684\u66f8\uff0c\u5982SICP\u3002\u53e6\u5916\u9019\u672c\u66f8\u4e0d\u662f\u7de8\u8b6f\u539f\u7406\u548c\u63cf\u8ff0PDF\u898f\u683c\u7684\u66f8\uff0c\u4e0d\u6d89\u7375\u5e95\u5c64\u7684\u77e5\u8b58\uff0c\u6709\u9700\u8981\u7684\u53ef\u4ee5\u53c3\u8003\u76f8\u95dc\u9818\u57df\u7684\u66f8\u3002","title":"\u5e8f\u8a00"},{"location":"#_3","text":"\u9019\u4e0d\u662f\u6559\u4e00\u4f4d\u5165\u9580\u4f7f\u7528\u8005\u5982\u5f9e\u96f6\u77e5\u8b58\u64b0\u5beb\u6392\u7248\u8edf\u9ad4\u7684\u66f8\uff0c\u8b80\u8005\u61c9\u8a72\u6709\u77e5\u9053\u5982\u4f55\u4f7f\u7528\u975c\u614b\u578b\u5225\u8a9e\u8a00\u7684\u7d93\u9a57\uff0c\u6bd4\u5982\u4e00\u9edeC\u3001\u6216\u662fRust\u7b49\u7b49\u3002\u53e6\u5916\u62bd\u8c61\u8a9e\u6cd5\u6a39\u70ba\u6c42\u65b9\u4fbf\uff0c\u4f7f\u7528LISP\u64b0\u5beb\uff0c\u6240\u4ee5\u9700\u8981\u6703LISP\u548cScheme\u7684\u77e5\u8b58\uff08\u77e5\u540d\u6559\u79d1\u66f8SICP\u7684\u958b\u982d\u53ef\u4ee5\u8b80\u4e00\u8b80\uff09\u3002 \u9019\u672c\u66f8\u4e5f\u4e0d\u6559\u7de8\u8b6f\u7406\u8ad6\u548ctokenizing\u3001parsing\u3001\u72c0\u614b\u6a5f\u7b49\u7b49\u7684\uff0c\u9802\u591a\u53ea\u6703\u5e36\u5230\u4e00\u4e9b\u5f88\u57fa\u790e\u7684\u77e5\u8b58\uff0c\u6709\u9700\u8981\u7684\u8acb\u53e6\u5916\u518d\u8b80\u3002\u6240\u4ee5\u4f7f\u7528\u8005\u9700\u8981\u6703\u6709\u4f7f\u7528\u6b63\u898f\u8868\u9054\u5f0f(regex)\u7684\u80fd\u529b\u3002 \u64cd\u4f5c\u74b0\u5883\u4f7f\u7528Linux\u3002\u9700\u8981\u5b89\u88ddfontconfig\u7b49\u5957\u4ef6\u3002 \u5b9a\u7fa9\u62bd\u8c61\u8a9e\u6cd5\u6a39\u548c\u8a9e\u6cd5","title":"\u5148\u5099\u77e5\u8b58"},{"location":"defineASTandGrammar/","text":"Ch1 \u5b9a\u7fa9\u62bd\u8c61\u8a9e\u6cd5\u6a39\u548c\u8a9e\u6cd5 \u62bd\u8c61\u8a9e\u6cd5\u6a39 C\u8a9e\u8a00\u3001Python\u8a9e\u8a00\u5c31\u7b97\u6709\u8a31\u591a\u7684\u95dc\u9375\u5b57\u3001\u64cd\u4f5c\u7b26\u3001\u7b26\u865f\u6216\u662f\u5e38\u6578\u8b8a\u6578\uff0c\u5728\u7de8\u8b6f\u5668\u5206\u6790\u8a9e\u6cd5\u4ee5\u5f8c\uff0c\u6700\u5f8c\u6703\u8f49\u6210\u7de8\u8b6f\u5668\u53ef\u4ee5\u64cd\u4f5c\u7684\u6a39\u7d50\u69cb\uff0c\u7136\u5f8c\u518d\u8f49\u6210\u6211\u5011\u60f3\u8981\u7684\u53e6\u4e00\u500b\u8a9e\u8a00\u7684\u6a39\uff0c\u6700\u5f8c\u8f38\u51fa\u53e6\u4e00\u500b\u8a9e\u8a00\u7684\u7a0b\u5f0f\u78bc\u3002 \u4f46\u662f\u4ec0\u9ebc\u53eb\u505a\u62bd\u8c61\u8a9e\u6cd5\u6a39\u5462\uff1f\u6211\u5011\u5148\u5f9e\u4e00\u9ede\u53e5\u6cd5\u77e5\u8b58\u4f86\u8ac7\u3002 \u5b78\u904e\u4e2d\u5b78\u570b\u6587\u6587\u6cd5\u7684\u8ab2\u7a0b\uff0c\u6703\u80cc\u4e00\u5806\u985e\u4f3c\u300c\u4e3b\u8a5e+\u52d5\u8a5e+\u53d7\u8a5e\u300d\u3001\u300c\u4e3b\u8a5e+(\u6709/\u7121)+\u53d7\u8a5e\u300d\u7684\u7d50\u69cb\u3002\u53ef\u4ee5\u63db\u500b\u8aaa\u6cd5\uff0c\u662f\u53e5\u5b50=\u300c\u4e3b\u8a5e+\u52d5\u8a5e+\u53d7\u8a5e\u300d\u6216\u662f\u300c\u4e3b\u8a5e+(\u6709/\u7121)+\u8cd3\u8a5e\u300d\u7684\u5f62\u5f0f\u3002\u6211\u5011\u5c07\u300c=\u300d\u5beb\u6210\u300c::=\u300d\uff0c\u300c/\u300d\uff08\u6216\u662f\uff09\u5beb\u6210\u300c|\u300d\uff0c\u300c\u52d5\u8a5e\u300d\u64f4\u5145\u8b8a\u6210\u300c\u52d5\u8a5e\u7247\u8a9e\u300d\uff0c\u5c31\u8b8a\u6210\uff1a \u53e5\u5b50 ::= (\u4e3b\u8a5e \u52d5\u8a5e\u7247\u8a9e \u53d7\u8a5e) | (\u4e3b\u8a5e (\u6709 | \u7121) \u53d7\u8a5e)... \u70ba\u4e86\u6613\u8b80\u6240\u4ee5\u5beb\u6210\uff1a \u53e5\u5b50 ::= \u4e3b\u8a5e \u52d5\u8a5e\u7247\u8a9e \u53d7\u8a5e | \u4e3b\u8a5e (\u6709 | \u7121) \u53d7\u8a5e | ... \u7528\u9019\u7a2e\u5f62\u5f0f\u8868\u793a\u7684\u8a9e\u8a00\u53e5\u6cd5\uff0c\u53eb\u505a\u300cBNF\u6587\u6cd5\u300d\u3002\u9019\u7a2e\u53e5\u6cd5\u770b\u8d77\u4f86\u5f88\u8a9e\u8a00\u5b78\uff0c\u4f46\u662f\u6211\u5011\u60f3\uff1a\u53d7\u8a5e\u548c\u4e3b\u8a5e\u53ef\u4ee5\u70ba\u540d\u8a5e\u3001\u5c08\u6709\u540d\u8a5e\u6216\u662f\u300c\u5f62\u5bb9\u8a5e+\u540d\u8a5e\u300d\uff1b\u52d5\u8a5e\u7247\u8a9e\u53ef\u4ee5\u70ba\u52d5\u8a5e\u6216\u662f\u300c\u526f\u8a5e+\u52d5\u8a5e\u300d\u3002\u56e0\u6b64\u9019\u6a23\u4e4b\u898f\u5247\uff0c\u5c31\u53ef\u4ee5\u751f\u6210\u8a31\u591a\u53e5\u5b50\uff0c\u6bd4\u5982\u300c\u6211\u6709\u7b46\u300d\u3001\u300c\u5f35\u4e09\u990a\u8c93\u300d\u3001\u300c\u5c0f\u82b3\u6162\u6162\u79fb\u52d5\u6aaf\u71c8\u300d\u7b49\u7b49\u7684\u53e5\u5b50\u3002\u7136\u5f8c\u53e5\u5b50\u53ef\u4ee5\u7528\u4e0a\u8ff0\u898f\u5247\uff0c\u5206\u6790\u6210\u8a9e\u6cd5\u7684\u6a39\u72c0\u7d50\u69cb\uff0c\u5982\u4e0b\u5716\u628a\u300c\u6211\u66fe\u65c5\u5c45\u65b0\u7af9\u300d\u5beb\u6210\u8a9e\u6cd5\u6a39\u3002 \u300c\u6211\u66fe\u65c5\u5c45\u65b0\u7af9\u300d\u7684\u8a9e\u6cd5\u6a39 \u540c\u7406\uff0c\u7a0b\u5f0f\u8a9e\u8a00\u901a\u5e38\u4e5f\u6709\u66f4\u56b4\u8b39\u7684\u9019\u6a23\u751f\u6210\u6587\u6cd5\uff0c\u53ef\u4ee5\u7528\u5e7e\u500b\u7c21\u55ae\u898f\u5247\u751f\u51fa\u7e41\u591a\u7684\u7a0b\u5f0f\u78bc\uff0c\u800c\u4e14\u5408\u4e4e\u8a9e\u6cd5\u898f\u5b9a\u3002\u9019\u7a2e\u751f\u6210\u6587\u6cd5\u4e5f\u53ef\u6aa2\u67e5\u8f38\u5165\u7684\u7a0b\u5f0f\u78bc\u6709\u6c92\u6709\u7b26\u5408\u53e5\u6cd5\u7684\u898f\u5b9a\u3002\u800c\u9019\u7a2e\u8a9e\u6cd5\u751f\u6210\u7684\u7a0b\u5f0f\u78bc\uff0c\u53bb\u6389\u4e0d\u9700\u8981\u7684\u9017\u865f\u7b49\u7b49\u7b26\u865f\uff0c\u7576\u7136\u4e5f\u53ef\u4ee5\u505a\u6210\u8a9e\u6cd5\u6a39\uff0c\u5c31\u662f\u62bd\u8c61\u8a9e\u6cd5\u6a39 (abstract syntax tree, AST)\uff0c\u5982\u4e0b\u5716\u6240\u793a\u3002 \u300c(2+2) == 4\u300d\u7684\u8a9e\u6cd5\u6a39\u3002\u6ce8\u610f\u62ec\u865f\u5df2\u7d93\u522a\u9664\u3002 \u800c\u4e0a\u6587\u7684\u62bd\u8c61\u8a9e\u6cd5\u6a39\uff0c\u53ef\u4ee5\u662f\u6211\u5011\u628a\u7a0b\u5f0f\u7d93\u904e\u7de8\u8b6f\u5668\u5206\u6790\u4e4b\u5f8c\uff0c\u7528\u300c\u6a39\u300d\u5132\u5b58\u7684\u8cc7\u6599\u7d50\u69cb\u3002\u800c\u6a39\u5f62\u7d50\u69cb\u6211\u5011\u53ef\u4ee5\u4f7f\u7528Lisp\u8a9e\u8a00\u7684S\u8868\u9054\u5f0f(S-expressiom; S-exp)\u4f86\u8868\u793a\uff0c\u672c\u6587\u63a1\u7528\u9019\u6a23\u7684\u8868\u793a\u65b9\u6cd5\u3002\u6240\u4ee5\u4e0a\u6587\u7684 (2+2)==4 \u5373 (== (+ 2 2) 4) \uff1b let baz = foo(\"bar\") \uff0c\u82e5\u662f\u628afoo(\"bar\")\u9019\u7a2e\u51fd\u6578\u5957\u7528(apply)\u5beb\u6210 (APPLY foo \"bar\") \uff0c\u5247\u5176S-exp\u8a9e\u6cd5\u6a39\u53ef\u5beb\u70ba (let baz(APPLY foo \"bar\")) \u3002 \u6c7a\u5b9a\u8a9e\u6cd5 \u90a3\u6211\u5011\u8981\u5982\u4f55\u5236\u5b9a\u9019\u500b\u8a9e\u8a00\u7684\u8a9e\u6cd5\uff0c\u9019\u6a23\u6211\u5011\u624d\u80fd\u5920\u5beb\u51fa\u7b26\u5408\u9019\u500b\u8a9e\u6cd5\u7684\u51fd\u6578\uff0c\u7136\u5f8c\u518d\u7528tokenizer\u548cparser\u8f49\u6210AST\u6a39\u3002 \u4e0d\u8003\u616e + - * / \u9019\u7a2e\u904b\u7b97\u5b50\uff0c\u4ee5\u53ca\u5411\u91cf\u7684\u8868\u793a\u5b50\uff0c\u51fd\u6578\u53ef\u4ee5\u7528 ID(arg1, arg2, ...) \u9019\u7a2e\u65b9\u5f0f\u4f86\u8868\u793a\uff0c\u5176\u4e2d arg_x \u662f\u5f15\u6578\uff0c ID \u662f\u8b58\u5225\u5b50\uff08identifier\uff0c\u53ef\u4ee5\u628a\u5b83\u60f3\u6210\u8b8a\u51fd\u6578\u7684\u540d\u5b57\uff09\u3002 \u8b8a\u6578\u53ef\u4ee5\u662f ID \uff0c arg_n \u53ef\u4ee5\u662f ID \u6216\u5e38\u6578\uff08\u91cf\uff09\u3002 \u5e38\u6578\uff08\u91cf\uff09\u7684\u8868\u793a\u6cd5\u53ef\u4ee5\u662f\u4e0b\u5217\u4efb\u4e00\uff1a \u6d6e\u9ede\u6578\u59820.0, 36.8\uff0cBNF\u98a8\u683c\u7684\u8868\u9054\u6cd5\u70ba\uff1a [0-9]+ '.' [0-9]+ \u3002 'c' \u6307c\u9019\u500b\u6587\u5b57\uff0c + \u8868\u793a\u524d\u9762\u7684\u91cd\u89071\u6b21\u4ee5\u4e0a\uff1b [0-9] \u8868\u793a\u6578\u5b570\u52309\u3002 \u6574\u6578\u598222\u30010\uff1a [0-9]+ \u5b57\u4e32\uff1a '\"' (\u4e0d\u662f\u300c\"\u300d\u7684\u4efb\u4e00\u5b57\u5143|('\\' '\"')) '\"' \uff08 . \u8868\u793a\u4efb\u4f55\u4e00\u500b\u5b57\u5143\uff09 \u7136\u800c\u6211\u5011\u9084\u662f\u9700\u8981\u7d81\u5b9a\u8b8a\u6578 let x = var in boby \uff08\u5728 body \u88e1\u9762\uff0c x \u6307\u4ee3 var \uff09\u3001 set x = var \uff08\u6539\u8b8a\u8b8a\u6578\u503c\uff09\u3001lambda lambda (x)=>{body} \u3002\u53e6\u5916\u70ba\u4e86\u8981\u5340\u5225\u8981\u5728PDF\u5370\u4e0a\u53bb\u7684\u4e00\u822c\u5b57\u5143\uff0c\u5728\u9019\u500b\u6a94\u6848\u7684\u5e38\u6578\u3001\u8b8a\u6578\u3001\u51fd\u6578\u3001\u95dc\u9375\u5b57\u7b49\u524d\u5f8c\u9700\u8981\u52a0@\u8868\u793a\uff08\u4f46\u662f\u51fd\u6578\u3001lambda\u88e1\u9762\u7684\u8b8a\u6578\u4e0d\u7528\uff09\u3002\u6bd4\u5982 @foo(a, b)@ \u3001 @lambda(x)@ \u3001 @\"IAmAString\"@ \u3001 @2.2@ \u3001 @3@ \uff08\u5f8c\u4e09\u8005\u61c9\u8a72\u5f88\u5c11\u7528\u5230\uff09\u53ef\u662f\u82e5\u9700\u5728PDF\u5370 @ \u6642\u600e\u8fa6\uff1f\u90a3\u5c31\u7528 \\@ \u3002\u6bd4\u5982 foo\\@example.com \u3002 \u6240\u4ee5\u6211\u5011\u53ef\u4ee5\u5b9a\u7fa9\u4ee5\u4e0b\u7684BNF\u98a8\u6587\u6cd5\uff1a Language ::= PrintTxt | Exprs PrintTxt ::= (('\\' '@')| \u975e@\u5b57\u5143)+ //\u300c\u6211\u662f\u4e00\u96bb\u8c93\u300d\u6216\u662f\u300cwww\\@example.com\u300d Exprs ::= @ Expr* @ // *\u8868\u793a\u524d\u9762\u7684\u91cd\u89070\u6b21\u4ee5\u4e0a\uff08\u5305\u542b\u4e0d\u51fa\u73fe\uff09 Expr ::= (Letting | Setting | Lambda | Apply | Var| Const) | \"(\" Expr \")\" Letting ::= \"let\" Var \"=\" Expr \"in\" Expr // let foo = 12 in ... Setting ::= Var \":=\" Expr \"in\" Expr // foo := a in ... Lambda ::= \"fn\" Var \"->\" Expr // fn x -> 12 Apply ::= Expr Expr // foo 3 \u5373foo(3) Var ::= ID Const ::= String | Float | Int Int ::= [0-9]+ Float ::= [0-9]+ \".\" [0-9]+ String ::= '\"' (\u4e0d\u662f\u300c\"\u300d\u7684\u4efb\u4e00\u5b57\u5143|('\\' '\"')) '\"' \u7528ParserCombinator\u9032\u884ctokenize Parser combinator\uff08\u5206\u6790\u5668\u7d44\u5408\u5b50\uff09\u662f\u4e00\u7a2e\u5229\u7528\u9ad8\u968e\u51fd\u6578\u4f86\u7c21\u5316\u5206\u6790\u5668\u64b0\u5beb\u7684\u8fa6\u6cd5\u3002\u8b1b\u4e00\u500b\u7c21\u55ae\u7684\u6848\u4f8b\u5427\uff1a \u5047\u8a2d\u6211\u5011\u60f3\u8981\u5c07\u5b57\u4e32\u7684\u958b\u982dmatch 0~9 \u4e4b\u4e2d\u7684\u5176\u4e2d\u4e00\u500b\uff0c\u6211\u5011\u53ef\u4ee5\u5beb\u4e00\u500b\u51fd\u6578match0to9\u5982\u4e0b\uff1a function match0to9(string){ if (string[0] in 0,1,..,9){ let rest = string[1:]; let matched = string[0]; return {type: \"OK\", rest : rest, matched : matched}; } else{ return {type : \"Nothing\"}; } } \u5047\u8a2d\u6211\u5011\u8981\u5c07\u5b57\u4e32\u7684\u524d\u5169\u500b\u5b57\u7684match 0~9\u5462\uff1f\u5982\u679c\u6703\u9ad8\u968e\u51fd\u6578\u7684\u8a71\uff0c\u5f15\u5165\u4e00\u500b then \u51fd\u6578\uff0c\u7136\u5f8c\u628a match0to9 \u50b3\u9032\u53bb\uff0c\u9019\u6a23\u5beb\u8d77\u4f86\u6bd4\u8f03\u7c21\u6f54\uff1a function thenDo(input, fun){ if (input.type != \"Nothing\"{ middle = fun(input.rest); if (middle.type != \"Nothing\"){ middle.matched = input.matched + middle.matched return middle; }else{ return middle; // return nothing } }else{ input; // return nothing } } \u5e73\u9762\u64cd\u4f5c \u57fa\u672c\u51fd\u6578\u8207\u76f4\u8b6f\u5668 \u6211\u5011\u85c9\u7531\u4ee5\u4e0a\u7684\u6982\u5ff5\uff0c\u53ef\u4ee5\u5b9a\u7fa9\u4e00\u500b\u5c07\u6587\u5b57\u3001\u7dda\u689d\u7b49\u5f62\u72c0\u6392\u5217\u52302D\u5e73\u9762\u7684\u8a9e\u6cd5\uff0c\u7562\u7adf\u4e0d\u8ad6\u8f38\u51faPDF\u3001SVG\u7b49\u7b49\uff0c\u7c97\u7565\u800c\u8a00\uff0c\u5c31\u662f\u4e00\u7a2e2D\u5e73\u9762\u5b89\u653e\u6587\u5b57\u7684\u8a9e\u8a00\u3002\u53e6\u5916PDF\u7684\u683c\u5f0f\u76f8\u7576\u6666\u6f80\uff0c\u5c31\u7b97_PDF Explained_\u7684PDF\u6559\u5b78\uff0c\u4e5f\u9084\u662f\u8981\u8f14\u52a9\u4f7f\u7528\u5176\u4ed6\u7684\u5de5\u5177\uff0c\u6c92\u8fa6\u6cd5\u770b\u4e86\u5c31\u81ea\u5df1\u624b\u523bPDF\uff0c\u6240\u4ee5\u9084\u662f\u7528 printpdf \u4f86\u6559\u5b78\u5427\u3002 \u73fe\u5728\u6211\u5011\u521d\u59cb\u5316\u4e00\u500b\u5c08\u6848\u76ee\u9304\uff0c\u7136\u5f8c\u5c07\u9700\u8981\u7684S-exp\u51fd\u5f0f\u5eab\u548cpdf\u51fd\u6578\u5eab\u6307\u5b9a\u70ba\u76f8\u4f9d\u51fd\u5f0f\u5eab\uff1a cargo init; cargo add rsexp printpdf; \u6211\u5011\u53ef\u4ee5\u5b9a\u7fa9\u4e00\u4e9b\u8868\u9054\u5f0f\uff08\u5305\u542b\u51fd\u6578\u3001\u8cc7\u6599\u7d50\u69cb\uff0cS-exp\u5f62\u5f0f\uff09\u7684\u8aaa\u660e\u5982\u4e0b\u3002 '() \u8868\u793a\u7a7a\u5217\u8868(empty list)\uff0c\u56e0\u70ba\u90fd\u8981\u8868\u9054\u662f\u51fd\u6578\u7684\u5f15\u7528\uff0c\u6240\u6709\u7684\u51fd\u6578\u5beb\u6210\u5f62\u5f0f (Func \"\u51fd\u6578\u540d\u7a31\" (\u5f15\u65781 \u5f15\u65782 ....)) \u3002Float\u630764\u4f4d\u5143\u6d6e\u9ede\u6578\uff1a (px Float) ; px\u8868\u9054pixel\u55ae\u4f4d\uff0c\u5132\u5b58\u6d6e\u9ede\u6578 (pt Float) ; pt\u8868\u9054point\u55ae\u4f4d\uff0c\u5132\u5b58\u6d6e\u9ede\u6578 (style (str pt)) ; \u6587\u5b57\u6a23\u5f0f\u3002String\u8868\u793a\u5b57\u578b\u7684\u8def\u5f91[fontPath]\uff0cFloat\u8868\u793a\u5b57\u578b\u5927\u5c0f(in Pt) (fontSize) (str String) ; \u5132\u5b58\u5b57\u4e32 (func \"createPDF\" '()) ;\u65b0\u589ePDF (func \"createPage\" '()) ;\u65b0\u589e\u9801\u9762 (func \"writePdf\" '(str)) ;\u5beb\u5165PDF\u9801\u9762\uff0cString\u662fPATH (func \"putchar\" '(str style x y)) ; x \u8ef8\u5411\u53f3\uff0cy \u8ef8\u5411\u4e0b\uff0cstr \u8868\u793a\u5b57\u5143(char)\uff0cstyle \u8868\u793a\u6587\u5b57\u6a23\u5f0f main.rs \u5148\u5f15\u7528\u51fd\u5f0f\u5eab\uff1a use printpdf::*; \u5176\u4e2d px \u3001 pt \u662f\u55ae\u4f4d\uff0c\u6240\u4ee5\u53ef\u4ee5\u5728 main.rs \u9019\u6a23\u5b9a\u7fa9\uff1a enum Measure{ Pt(f64), Px(f64) } \u6700\u5f8c\u4e00\u6b21\u5b9a\u7fa9expression\uff1a enum Expr{ Mea(Measure), // wrapper for measure Str(&str), Style{font_path : Measure, size : Measure}, Func(&str, Vec<Expr>), Void // return nothing } \u7136\u5f8c\u6211\u5011\u53ef\u4ee5\u9019\u6a23\u5b9a\u7fa9\u4e00\u500b\u8655\u7406\u8f38\u5165\u8f38\u51fa\u7684interpreter\u65bc interp \uff0c\u4e26\u4fee\u6539 main.rs \u5982\u4e0b\uff0c\u7e31\u4f7f\u6211\u5011\u6e96\u6642\uff1a fn interp(exp : Expr)->(){ // the function will be extended. match exp { Expr::Mea(Measure::Pt(x)) => println!(\"{:?} pt\", x), Expr::Mea(Measure::Px(x)) => println!(\"{:?} px\", x), _ => println!(\"not found expression\"), }; } // exexute interpreter fn main() { interp(Expr::Mea(Measure::Pt(2.2))); interp(Expr::Flo(2.2)); }","title":"Ch 1"},{"location":"defineASTandGrammar/#ch1","text":"","title":"Ch1 \u5b9a\u7fa9\u62bd\u8c61\u8a9e\u6cd5\u6a39\u548c\u8a9e\u6cd5"},{"location":"defineASTandGrammar/#_1","text":"C\u8a9e\u8a00\u3001Python\u8a9e\u8a00\u5c31\u7b97\u6709\u8a31\u591a\u7684\u95dc\u9375\u5b57\u3001\u64cd\u4f5c\u7b26\u3001\u7b26\u865f\u6216\u662f\u5e38\u6578\u8b8a\u6578\uff0c\u5728\u7de8\u8b6f\u5668\u5206\u6790\u8a9e\u6cd5\u4ee5\u5f8c\uff0c\u6700\u5f8c\u6703\u8f49\u6210\u7de8\u8b6f\u5668\u53ef\u4ee5\u64cd\u4f5c\u7684\u6a39\u7d50\u69cb\uff0c\u7136\u5f8c\u518d\u8f49\u6210\u6211\u5011\u60f3\u8981\u7684\u53e6\u4e00\u500b\u8a9e\u8a00\u7684\u6a39\uff0c\u6700\u5f8c\u8f38\u51fa\u53e6\u4e00\u500b\u8a9e\u8a00\u7684\u7a0b\u5f0f\u78bc\u3002 \u4f46\u662f\u4ec0\u9ebc\u53eb\u505a\u62bd\u8c61\u8a9e\u6cd5\u6a39\u5462\uff1f\u6211\u5011\u5148\u5f9e\u4e00\u9ede\u53e5\u6cd5\u77e5\u8b58\u4f86\u8ac7\u3002 \u5b78\u904e\u4e2d\u5b78\u570b\u6587\u6587\u6cd5\u7684\u8ab2\u7a0b\uff0c\u6703\u80cc\u4e00\u5806\u985e\u4f3c\u300c\u4e3b\u8a5e+\u52d5\u8a5e+\u53d7\u8a5e\u300d\u3001\u300c\u4e3b\u8a5e+(\u6709/\u7121)+\u53d7\u8a5e\u300d\u7684\u7d50\u69cb\u3002\u53ef\u4ee5\u63db\u500b\u8aaa\u6cd5\uff0c\u662f\u53e5\u5b50=\u300c\u4e3b\u8a5e+\u52d5\u8a5e+\u53d7\u8a5e\u300d\u6216\u662f\u300c\u4e3b\u8a5e+(\u6709/\u7121)+\u8cd3\u8a5e\u300d\u7684\u5f62\u5f0f\u3002\u6211\u5011\u5c07\u300c=\u300d\u5beb\u6210\u300c::=\u300d\uff0c\u300c/\u300d\uff08\u6216\u662f\uff09\u5beb\u6210\u300c|\u300d\uff0c\u300c\u52d5\u8a5e\u300d\u64f4\u5145\u8b8a\u6210\u300c\u52d5\u8a5e\u7247\u8a9e\u300d\uff0c\u5c31\u8b8a\u6210\uff1a \u53e5\u5b50 ::= (\u4e3b\u8a5e \u52d5\u8a5e\u7247\u8a9e \u53d7\u8a5e) | (\u4e3b\u8a5e (\u6709 | \u7121) \u53d7\u8a5e)... \u70ba\u4e86\u6613\u8b80\u6240\u4ee5\u5beb\u6210\uff1a \u53e5\u5b50 ::= \u4e3b\u8a5e \u52d5\u8a5e\u7247\u8a9e \u53d7\u8a5e | \u4e3b\u8a5e (\u6709 | \u7121) \u53d7\u8a5e | ... \u7528\u9019\u7a2e\u5f62\u5f0f\u8868\u793a\u7684\u8a9e\u8a00\u53e5\u6cd5\uff0c\u53eb\u505a\u300cBNF\u6587\u6cd5\u300d\u3002\u9019\u7a2e\u53e5\u6cd5\u770b\u8d77\u4f86\u5f88\u8a9e\u8a00\u5b78\uff0c\u4f46\u662f\u6211\u5011\u60f3\uff1a\u53d7\u8a5e\u548c\u4e3b\u8a5e\u53ef\u4ee5\u70ba\u540d\u8a5e\u3001\u5c08\u6709\u540d\u8a5e\u6216\u662f\u300c\u5f62\u5bb9\u8a5e+\u540d\u8a5e\u300d\uff1b\u52d5\u8a5e\u7247\u8a9e\u53ef\u4ee5\u70ba\u52d5\u8a5e\u6216\u662f\u300c\u526f\u8a5e+\u52d5\u8a5e\u300d\u3002\u56e0\u6b64\u9019\u6a23\u4e4b\u898f\u5247\uff0c\u5c31\u53ef\u4ee5\u751f\u6210\u8a31\u591a\u53e5\u5b50\uff0c\u6bd4\u5982\u300c\u6211\u6709\u7b46\u300d\u3001\u300c\u5f35\u4e09\u990a\u8c93\u300d\u3001\u300c\u5c0f\u82b3\u6162\u6162\u79fb\u52d5\u6aaf\u71c8\u300d\u7b49\u7b49\u7684\u53e5\u5b50\u3002\u7136\u5f8c\u53e5\u5b50\u53ef\u4ee5\u7528\u4e0a\u8ff0\u898f\u5247\uff0c\u5206\u6790\u6210\u8a9e\u6cd5\u7684\u6a39\u72c0\u7d50\u69cb\uff0c\u5982\u4e0b\u5716\u628a\u300c\u6211\u66fe\u65c5\u5c45\u65b0\u7af9\u300d\u5beb\u6210\u8a9e\u6cd5\u6a39\u3002 \u300c\u6211\u66fe\u65c5\u5c45\u65b0\u7af9\u300d\u7684\u8a9e\u6cd5\u6a39 \u540c\u7406\uff0c\u7a0b\u5f0f\u8a9e\u8a00\u901a\u5e38\u4e5f\u6709\u66f4\u56b4\u8b39\u7684\u9019\u6a23\u751f\u6210\u6587\u6cd5\uff0c\u53ef\u4ee5\u7528\u5e7e\u500b\u7c21\u55ae\u898f\u5247\u751f\u51fa\u7e41\u591a\u7684\u7a0b\u5f0f\u78bc\uff0c\u800c\u4e14\u5408\u4e4e\u8a9e\u6cd5\u898f\u5b9a\u3002\u9019\u7a2e\u751f\u6210\u6587\u6cd5\u4e5f\u53ef\u6aa2\u67e5\u8f38\u5165\u7684\u7a0b\u5f0f\u78bc\u6709\u6c92\u6709\u7b26\u5408\u53e5\u6cd5\u7684\u898f\u5b9a\u3002\u800c\u9019\u7a2e\u8a9e\u6cd5\u751f\u6210\u7684\u7a0b\u5f0f\u78bc\uff0c\u53bb\u6389\u4e0d\u9700\u8981\u7684\u9017\u865f\u7b49\u7b49\u7b26\u865f\uff0c\u7576\u7136\u4e5f\u53ef\u4ee5\u505a\u6210\u8a9e\u6cd5\u6a39\uff0c\u5c31\u662f\u62bd\u8c61\u8a9e\u6cd5\u6a39 (abstract syntax tree, AST)\uff0c\u5982\u4e0b\u5716\u6240\u793a\u3002 \u300c(2+2) == 4\u300d\u7684\u8a9e\u6cd5\u6a39\u3002\u6ce8\u610f\u62ec\u865f\u5df2\u7d93\u522a\u9664\u3002 \u800c\u4e0a\u6587\u7684\u62bd\u8c61\u8a9e\u6cd5\u6a39\uff0c\u53ef\u4ee5\u662f\u6211\u5011\u628a\u7a0b\u5f0f\u7d93\u904e\u7de8\u8b6f\u5668\u5206\u6790\u4e4b\u5f8c\uff0c\u7528\u300c\u6a39\u300d\u5132\u5b58\u7684\u8cc7\u6599\u7d50\u69cb\u3002\u800c\u6a39\u5f62\u7d50\u69cb\u6211\u5011\u53ef\u4ee5\u4f7f\u7528Lisp\u8a9e\u8a00\u7684S\u8868\u9054\u5f0f(S-expressiom; S-exp)\u4f86\u8868\u793a\uff0c\u672c\u6587\u63a1\u7528\u9019\u6a23\u7684\u8868\u793a\u65b9\u6cd5\u3002\u6240\u4ee5\u4e0a\u6587\u7684 (2+2)==4 \u5373 (== (+ 2 2) 4) \uff1b let baz = foo(\"bar\") \uff0c\u82e5\u662f\u628afoo(\"bar\")\u9019\u7a2e\u51fd\u6578\u5957\u7528(apply)\u5beb\u6210 (APPLY foo \"bar\") \uff0c\u5247\u5176S-exp\u8a9e\u6cd5\u6a39\u53ef\u5beb\u70ba (let baz(APPLY foo \"bar\")) \u3002","title":"\u62bd\u8c61\u8a9e\u6cd5\u6a39"},{"location":"defineASTandGrammar/#_2","text":"\u90a3\u6211\u5011\u8981\u5982\u4f55\u5236\u5b9a\u9019\u500b\u8a9e\u8a00\u7684\u8a9e\u6cd5\uff0c\u9019\u6a23\u6211\u5011\u624d\u80fd\u5920\u5beb\u51fa\u7b26\u5408\u9019\u500b\u8a9e\u6cd5\u7684\u51fd\u6578\uff0c\u7136\u5f8c\u518d\u7528tokenizer\u548cparser\u8f49\u6210AST\u6a39\u3002 \u4e0d\u8003\u616e + - * / \u9019\u7a2e\u904b\u7b97\u5b50\uff0c\u4ee5\u53ca\u5411\u91cf\u7684\u8868\u793a\u5b50\uff0c\u51fd\u6578\u53ef\u4ee5\u7528 ID(arg1, arg2, ...) \u9019\u7a2e\u65b9\u5f0f\u4f86\u8868\u793a\uff0c\u5176\u4e2d arg_x \u662f\u5f15\u6578\uff0c ID \u662f\u8b58\u5225\u5b50\uff08identifier\uff0c\u53ef\u4ee5\u628a\u5b83\u60f3\u6210\u8b8a\u51fd\u6578\u7684\u540d\u5b57\uff09\u3002 \u8b8a\u6578\u53ef\u4ee5\u662f ID \uff0c arg_n \u53ef\u4ee5\u662f ID \u6216\u5e38\u6578\uff08\u91cf\uff09\u3002 \u5e38\u6578\uff08\u91cf\uff09\u7684\u8868\u793a\u6cd5\u53ef\u4ee5\u662f\u4e0b\u5217\u4efb\u4e00\uff1a \u6d6e\u9ede\u6578\u59820.0, 36.8\uff0cBNF\u98a8\u683c\u7684\u8868\u9054\u6cd5\u70ba\uff1a [0-9]+ '.' [0-9]+ \u3002 'c' \u6307c\u9019\u500b\u6587\u5b57\uff0c + \u8868\u793a\u524d\u9762\u7684\u91cd\u89071\u6b21\u4ee5\u4e0a\uff1b [0-9] \u8868\u793a\u6578\u5b570\u52309\u3002 \u6574\u6578\u598222\u30010\uff1a [0-9]+ \u5b57\u4e32\uff1a '\"' (\u4e0d\u662f\u300c\"\u300d\u7684\u4efb\u4e00\u5b57\u5143|('\\' '\"')) '\"' \uff08 . \u8868\u793a\u4efb\u4f55\u4e00\u500b\u5b57\u5143\uff09 \u7136\u800c\u6211\u5011\u9084\u662f\u9700\u8981\u7d81\u5b9a\u8b8a\u6578 let x = var in boby \uff08\u5728 body \u88e1\u9762\uff0c x \u6307\u4ee3 var \uff09\u3001 set x = var \uff08\u6539\u8b8a\u8b8a\u6578\u503c\uff09\u3001lambda lambda (x)=>{body} \u3002\u53e6\u5916\u70ba\u4e86\u8981\u5340\u5225\u8981\u5728PDF\u5370\u4e0a\u53bb\u7684\u4e00\u822c\u5b57\u5143\uff0c\u5728\u9019\u500b\u6a94\u6848\u7684\u5e38\u6578\u3001\u8b8a\u6578\u3001\u51fd\u6578\u3001\u95dc\u9375\u5b57\u7b49\u524d\u5f8c\u9700\u8981\u52a0@\u8868\u793a\uff08\u4f46\u662f\u51fd\u6578\u3001lambda\u88e1\u9762\u7684\u8b8a\u6578\u4e0d\u7528\uff09\u3002\u6bd4\u5982 @foo(a, b)@ \u3001 @lambda(x)@ \u3001 @\"IAmAString\"@ \u3001 @2.2@ \u3001 @3@ \uff08\u5f8c\u4e09\u8005\u61c9\u8a72\u5f88\u5c11\u7528\u5230\uff09\u53ef\u662f\u82e5\u9700\u5728PDF\u5370 @ \u6642\u600e\u8fa6\uff1f\u90a3\u5c31\u7528 \\@ \u3002\u6bd4\u5982 foo\\@example.com \u3002 \u6240\u4ee5\u6211\u5011\u53ef\u4ee5\u5b9a\u7fa9\u4ee5\u4e0b\u7684BNF\u98a8\u6587\u6cd5\uff1a Language ::= PrintTxt | Exprs PrintTxt ::= (('\\' '@')| \u975e@\u5b57\u5143)+ //\u300c\u6211\u662f\u4e00\u96bb\u8c93\u300d\u6216\u662f\u300cwww\\@example.com\u300d Exprs ::= @ Expr* @ // *\u8868\u793a\u524d\u9762\u7684\u91cd\u89070\u6b21\u4ee5\u4e0a\uff08\u5305\u542b\u4e0d\u51fa\u73fe\uff09 Expr ::= (Letting | Setting | Lambda | Apply | Var| Const) | \"(\" Expr \")\" Letting ::= \"let\" Var \"=\" Expr \"in\" Expr // let foo = 12 in ... Setting ::= Var \":=\" Expr \"in\" Expr // foo := a in ... Lambda ::= \"fn\" Var \"->\" Expr // fn x -> 12 Apply ::= Expr Expr // foo 3 \u5373foo(3) Var ::= ID Const ::= String | Float | Int Int ::= [0-9]+ Float ::= [0-9]+ \".\" [0-9]+ String ::= '\"' (\u4e0d\u662f\u300c\"\u300d\u7684\u4efb\u4e00\u5b57\u5143|('\\' '\"')) '\"'","title":"\u6c7a\u5b9a\u8a9e\u6cd5"},{"location":"defineASTandGrammar/#parsercombinatortokenize","text":"Parser combinator\uff08\u5206\u6790\u5668\u7d44\u5408\u5b50\uff09\u662f\u4e00\u7a2e\u5229\u7528\u9ad8\u968e\u51fd\u6578\u4f86\u7c21\u5316\u5206\u6790\u5668\u64b0\u5beb\u7684\u8fa6\u6cd5\u3002\u8b1b\u4e00\u500b\u7c21\u55ae\u7684\u6848\u4f8b\u5427\uff1a \u5047\u8a2d\u6211\u5011\u60f3\u8981\u5c07\u5b57\u4e32\u7684\u958b\u982dmatch 0~9 \u4e4b\u4e2d\u7684\u5176\u4e2d\u4e00\u500b\uff0c\u6211\u5011\u53ef\u4ee5\u5beb\u4e00\u500b\u51fd\u6578match0to9\u5982\u4e0b\uff1a function match0to9(string){ if (string[0] in 0,1,..,9){ let rest = string[1:]; let matched = string[0]; return {type: \"OK\", rest : rest, matched : matched}; } else{ return {type : \"Nothing\"}; } } \u5047\u8a2d\u6211\u5011\u8981\u5c07\u5b57\u4e32\u7684\u524d\u5169\u500b\u5b57\u7684match 0~9\u5462\uff1f\u5982\u679c\u6703\u9ad8\u968e\u51fd\u6578\u7684\u8a71\uff0c\u5f15\u5165\u4e00\u500b then \u51fd\u6578\uff0c\u7136\u5f8c\u628a match0to9 \u50b3\u9032\u53bb\uff0c\u9019\u6a23\u5beb\u8d77\u4f86\u6bd4\u8f03\u7c21\u6f54\uff1a function thenDo(input, fun){ if (input.type != \"Nothing\"{ middle = fun(input.rest); if (middle.type != \"Nothing\"){ middle.matched = input.matched + middle.matched return middle; }else{ return middle; // return nothing } }else{ input; // return nothing } }","title":"\u7528ParserCombinator\u9032\u884ctokenize"},{"location":"defineASTandGrammar/#_3","text":"","title":"\u5e73\u9762\u64cd\u4f5c"},{"location":"defineASTandGrammar/#_4","text":"\u6211\u5011\u85c9\u7531\u4ee5\u4e0a\u7684\u6982\u5ff5\uff0c\u53ef\u4ee5\u5b9a\u7fa9\u4e00\u500b\u5c07\u6587\u5b57\u3001\u7dda\u689d\u7b49\u5f62\u72c0\u6392\u5217\u52302D\u5e73\u9762\u7684\u8a9e\u6cd5\uff0c\u7562\u7adf\u4e0d\u8ad6\u8f38\u51faPDF\u3001SVG\u7b49\u7b49\uff0c\u7c97\u7565\u800c\u8a00\uff0c\u5c31\u662f\u4e00\u7a2e2D\u5e73\u9762\u5b89\u653e\u6587\u5b57\u7684\u8a9e\u8a00\u3002\u53e6\u5916PDF\u7684\u683c\u5f0f\u76f8\u7576\u6666\u6f80\uff0c\u5c31\u7b97_PDF Explained_\u7684PDF\u6559\u5b78\uff0c\u4e5f\u9084\u662f\u8981\u8f14\u52a9\u4f7f\u7528\u5176\u4ed6\u7684\u5de5\u5177\uff0c\u6c92\u8fa6\u6cd5\u770b\u4e86\u5c31\u81ea\u5df1\u624b\u523bPDF\uff0c\u6240\u4ee5\u9084\u662f\u7528 printpdf \u4f86\u6559\u5b78\u5427\u3002 \u73fe\u5728\u6211\u5011\u521d\u59cb\u5316\u4e00\u500b\u5c08\u6848\u76ee\u9304\uff0c\u7136\u5f8c\u5c07\u9700\u8981\u7684S-exp\u51fd\u5f0f\u5eab\u548cpdf\u51fd\u6578\u5eab\u6307\u5b9a\u70ba\u76f8\u4f9d\u51fd\u5f0f\u5eab\uff1a cargo init; cargo add rsexp printpdf; \u6211\u5011\u53ef\u4ee5\u5b9a\u7fa9\u4e00\u4e9b\u8868\u9054\u5f0f\uff08\u5305\u542b\u51fd\u6578\u3001\u8cc7\u6599\u7d50\u69cb\uff0cS-exp\u5f62\u5f0f\uff09\u7684\u8aaa\u660e\u5982\u4e0b\u3002 '() \u8868\u793a\u7a7a\u5217\u8868(empty list)\uff0c\u56e0\u70ba\u90fd\u8981\u8868\u9054\u662f\u51fd\u6578\u7684\u5f15\u7528\uff0c\u6240\u6709\u7684\u51fd\u6578\u5beb\u6210\u5f62\u5f0f (Func \"\u51fd\u6578\u540d\u7a31\" (\u5f15\u65781 \u5f15\u65782 ....)) \u3002Float\u630764\u4f4d\u5143\u6d6e\u9ede\u6578\uff1a (px Float) ; px\u8868\u9054pixel\u55ae\u4f4d\uff0c\u5132\u5b58\u6d6e\u9ede\u6578 (pt Float) ; pt\u8868\u9054point\u55ae\u4f4d\uff0c\u5132\u5b58\u6d6e\u9ede\u6578 (style (str pt)) ; \u6587\u5b57\u6a23\u5f0f\u3002String\u8868\u793a\u5b57\u578b\u7684\u8def\u5f91[fontPath]\uff0cFloat\u8868\u793a\u5b57\u578b\u5927\u5c0f(in Pt) (fontSize) (str String) ; \u5132\u5b58\u5b57\u4e32 (func \"createPDF\" '()) ;\u65b0\u589ePDF (func \"createPage\" '()) ;\u65b0\u589e\u9801\u9762 (func \"writePdf\" '(str)) ;\u5beb\u5165PDF\u9801\u9762\uff0cString\u662fPATH (func \"putchar\" '(str style x y)) ; x \u8ef8\u5411\u53f3\uff0cy \u8ef8\u5411\u4e0b\uff0cstr \u8868\u793a\u5b57\u5143(char)\uff0cstyle \u8868\u793a\u6587\u5b57\u6a23\u5f0f main.rs \u5148\u5f15\u7528\u51fd\u5f0f\u5eab\uff1a use printpdf::*; \u5176\u4e2d px \u3001 pt \u662f\u55ae\u4f4d\uff0c\u6240\u4ee5\u53ef\u4ee5\u5728 main.rs \u9019\u6a23\u5b9a\u7fa9\uff1a enum Measure{ Pt(f64), Px(f64) } \u6700\u5f8c\u4e00\u6b21\u5b9a\u7fa9expression\uff1a enum Expr{ Mea(Measure), // wrapper for measure Str(&str), Style{font_path : Measure, size : Measure}, Func(&str, Vec<Expr>), Void // return nothing } \u7136\u5f8c\u6211\u5011\u53ef\u4ee5\u9019\u6a23\u5b9a\u7fa9\u4e00\u500b\u8655\u7406\u8f38\u5165\u8f38\u51fa\u7684interpreter\u65bc interp \uff0c\u4e26\u4fee\u6539 main.rs \u5982\u4e0b\uff0c\u7e31\u4f7f\u6211\u5011\u6e96\u6642\uff1a fn interp(exp : Expr)->(){ // the function will be extended. match exp { Expr::Mea(Measure::Pt(x)) => println!(\"{:?} pt\", x), Expr::Mea(Measure::Px(x)) => println!(\"{:?} px\", x), _ => println!(\"not found expression\"), }; } // exexute interpreter fn main() { interp(Expr::Mea(Measure::Pt(2.2))); interp(Expr::Flo(2.2)); }","title":"\u57fa\u672c\u51fd\u6578\u8207\u76f4\u8b6f\u5668"},{"location":"index2/","text":"[ Clo: another typesetter]{align=\"center\"} [[ \u4e00\u500b\u6392\u7248\u5668\u7684\u5be6\u4f5c\u5fc3\u5f97]{.box}]{align=\"center\"} []{.box} [[ \u9673\u5efa\u753a]{.box}]{align=\"center\"} \u7248\u6b0a\u8072\u660e (c) 2023 \u9673\u5efa\u753a (Tan, Kian-ting) \u672c\u66f8\u5167\u5bb9\u975e\u7d93\u8a31\u53ef\uff0c\u7981\u6b62\u8907\u88fd\u3001\u5206\u767c\u3001\u5546\u696d\u4f7f\u7528\u7b49\u9055\u53cd\u8457\u4f5c\u6b0a\u6cd5\u4e4b\u884c\u70ba\u3002 \u7136\u66f8\u4e2d\u4e4b\u7a0b\u5f0f\u78bc\uff0c\u63a1\u7528 MIT\u8a31\u53ef\u8b49 \u6388\u6b0a\u3002 \u5e8f\u8a00 \u4ee5\u524d\u5f9e\u570b\u4e2d\u6642\u5019\u8a66\u7528Linux\u4ee5\u53ca\u67b6\u7ad9\u4ee5\u5f8c\uff0c\u5c31\u958b\u59cb\u60f3\u7528LaTeX\u6392\u7248\u4e9b\u81ea\u5df1\u6240\u5beb\u7684\u6771\u897f\uff0c\u5176\u4e2d\u5305\u542b\u89ba\u5f97LaTeX\u7684\u8a9e\u6cd5\u4e0d\u597d\u60f3\u8981\u91cd\u9020\u8f2a\u5b50\u3002\u5c31\u7b97\u5f8c\u4f86\u5927\u5b78\u6c92\u6709\u8d70\u4e0a\u8cc7\u8a0a\u5de5\u7a0b\u9019\u689d\u8def\uff0c\u9084\u662f\u5e0c\u671b\u6709\u5929\u81f3\u5c11\u80fd\u5920\u5b8c\u6210\u500b\u80fd\u7528\u7684\u96db\u5f62\u3002 \u4f46\u662f\u9019\u662f\u6d89\u53ca\u5b57\u9ad4\u6a94\u6848\u7684\u8655\u7406\u3001PDF\u7684\u8655\u7406\u3001\u8a9e\u6cd5\u5206\u6790\uff0c\u5f8c\u4f86\u81ea\u5df1\u56e0\u70ba\u4e0d\u77e5\u9053\u5982\u4f55\u958b\u767c\uff0c\u6240\u4ee5\u4e00\u76f4\u505c\u64fa\u3002\u4e0d\u662f\u9047\u5230\u5f88\u591a\u87f2\uff0c\u5c31\u662f\u6548\u80fd\u554f\u984c\u6709\u7f3a\u5931\u3002\u56e0\u70ba\u6642\u9593\u7e41\u5fd9\u5f88\u5c11\u66f4\u4e0d\u6d88\u8aaa\u4e86\u3002\u751a\u81f3\u8cb7\u4e86Knuth\u6559\u6388\u7684 Digital Typography \uff0c\u60f3\u8981\u77ad\u89e3\u65b7\u884c\u6f14\u7b97\u6cd5\uff0c\u7d50\u679c\u7c97\u4f30\u4e94\u3001\u516d\u5341\u9801\uff0c\u6240\u4ee5\u5e7e\u4e4e\u6c92\u6709\u8b80\u3002 \u53e6\u5916\u7b46\u8005\u4e00\u500b\u5206\u652f\u8208\u8da3\u662f\u7de8\u8b6f\u5668\u7684\u76f8\u95dc\u77e5\u8b58\uff0c\u6240\u4ee5\u958b\u59cb\u8b80\u548c\u738b\u57a0\u7684\u7de8\u8b6f\u5668\u601d\u60f3\u7cfb\u51fa\u540c\u9580\u7684Jeremy G. Siek\u6240\u8457\u4f5c\u4e4b_Essential of Complication: An Incremental Approach in Racket","title":"Index2"}]}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url>
- <loc>https://blog.kianting.info/pages/typesetter/</loc>
- <lastmod>2023-11-26</lastmod>
+ <loc>https://blog.kianting.info/pages/docs/anotherTypeSetter/</loc>
+ <lastmod>2023-12-01</lastmod>
+ <changefreq>daily</changefreq>
+ </url><url>
+ <loc>https://blog.kianting.info/pages/docs/anotherTypeSetter/defineASTandGrammar/</loc>
+ <lastmod>2023-12-01</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>
\ No newline at end of file
--- /dev/null
+<svg baseProfile="full" height="248px" preserveAspectRatio="xMidYMid meet" style="font-family: times, serif; font-weight: normal; font-style: normal; font-size: 16px;" version="1.1" viewBox="0,0,144.0,248.0" width="144px" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">句子</text></svg><svg width="27.7778%" x="0%" y="48px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">主詞</text></svg><svg width="100%" x="0%" y="48px"><defs /><svg width="100%" x="0" y="8px"><defs /><text text-anchor="middle" x="50%" y="16px">代詞 </text></svg><svg width="100%" x="0%" y="64px"><defs /><svg width="100%" x="0" y="8px"><defs /><text text-anchor="middle" x="50%" y="16px">我</text></svg></svg><line stroke="black" x1="50%" x2="50%" y1="27.2px" y2="72px" /></svg><line stroke="black" x1="50%" x2="50%" y1="19.2px" y2="56px" /></svg><line stroke="black" x1="50%" x2="13.8889%" y1="19.2px" y2="48px" /><svg width="72.2222%" x="27.7778%" y="48px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">謂語</text></svg><svg width="69.2308%" x="0%" y="48px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">動詞</text><text text-anchor="middle" x="50%" y="32px">片語 </text></svg><svg width="44.4444%" x="0%" y="64px"><defs /><svg width="100%" x="0" y="8px"><defs /><text text-anchor="middle" x="50%" y="16px">副詞</text></svg><svg width="100%" x="0%" y="64px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">曾</text></svg></svg><line stroke="black" x1="50%" x2="50%" y1="27.2px" y2="64px" /></svg><line stroke="black" x1="50%" x2="22.2222%" y1="35.2px" y2="72px" /><svg width="55.5556%" x="44.4444%" y="64px"><defs /><svg width="100%" x="0" y="8px"><defs /><text text-anchor="middle" x="50%" y="16px">動詞 </text></svg><svg width="100%" x="0%" y="64px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">旅居</text></svg></svg><line stroke="black" x1="50%" x2="50%" y1="27.2px" y2="64px" /></svg><line stroke="black" x1="50%" x2="72.2222%" y1="35.2px" y2="72px" /></svg><line stroke="black" x1="50%" x2="34.6154%" y1="19.2px" y2="48px" /><svg width="30.7692%" x="69.2308%" y="48px"><defs /><svg width="100%" x="0" y="8px"><defs /><text text-anchor="middle" x="50%" y="16px">受詞</text></svg><svg width="100%" x="0%" y="64px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">專有</text><text text-anchor="middle" x="50%" y="32px">名詞</text></svg><svg width="100%" x="0%" y="64px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">新竹</text></svg></svg><line stroke="black" x1="50%" x2="50%" y1="35.2px" y2="64px" /></svg><line stroke="black" x1="50%" x2="50%" y1="27.2px" y2="64px" /></svg><line stroke="black" x1="50%" x2="84.6154%" y1="19.2px" y2="56px" /></svg><line stroke="black" x1="50%" x2="63.8889%" y1="19.2px" y2="48px" /></svg>
--- /dev/null
+<svg baseProfile="full" height="120px" preserveAspectRatio="xMidYMid meet" style="font-family: times, serif; font-weight: normal; font-style: normal; font-size: 16px;" version="1.1" viewBox="0,0,72.0,120.0" width="72px" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">==</text></svg><svg width="66.6667%" x="0%" y="48px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">+</text></svg><svg width="50%" x="0%" y="48px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">1</text></svg></svg><line stroke="black" x1="50%" x2="25%" y1="19.2px" y2="48px" /><svg width="50%" x="50%" y="48px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">1</text></svg></svg><line stroke="black" x1="50%" x2="75%" y1="19.2px" y2="48px" /></svg><line stroke="black" x1="50%" x2="33.3333%" y1="19.2px" y2="48px" /><svg width="33.3333%" x="66.6667%" y="48px"><defs /><svg width="100%" x="0" y="0px"><defs /><text text-anchor="middle" x="50%" y="16px">2</text></svg></svg><line stroke="black" x1="50%" x2="83.3333%" y1="19.2px" y2="48px" /></svg>
--- /dev/null
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "ch1"
+version = "0.1.0"
+dependencies = [
+ "nom",
+]
+
+[[package]]
+name = "memchr"
+version = "2.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
--- /dev/null
+[package]
+name = "ch1"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+nom = "7.1.3"
--- /dev/null
+// import all the parser unit for string
+use nom::character::{complete::*, is_alphanumeric, is_alphabetic};
+
+#[macro_use]
+extern crate nom;
+
+// for the return type
+use nom::IResult;
+// collect all the parser matched strings,
+use nom::combinator::recognize;
+// given 2 parser and gets the result as (1stmatched, 2ndmatched),
+use nom::sequence::pair;
+// exact matching characters
+use nom::bytes::complete::tag;
+// match a parser 0+ times
+use nom::multi::fold_many0;
+
+// integer ::= [0-9]+
+pub fn integer(input: &str) -> IResult<&str, &str> {
+ return digit1(input) ; // [0-9]+
+}
+
+// float ::= [0-9]+ "." [0-9]+
+pub fn float(input: &str) -> IResult<&str, &str>{
+ // [0-9]+ "." [0-9]+
+ // "12.345" returns Ok((else, (("12", '.'), "345"))), then recgonize them as
+ // Ok("12.345")
+ let a =
+ recognize(pair(pair(digit1, tag(".")), digit1))(input);
+ return a;
+
+}
+
+// ("_" | [a-z] | [A-Z]) ("_" | [0-9] | [a-z] | [A-Z])+
+pub fn identifier(input : &str) -> IResult<&str, &str>{
+ return recognize(pair(
+ // 1st character is a-z, A-Z or _
+ satisfy(|c| (is_alphabetic(c as u8) || c == '_')),
+ // the tail characters (0+ times matched) storing in a vector
+ fold_many0(
+ // a-z, A-Z, 0-9, _
+ satisfy(|c| (is_alphanumeric(c as u8) || c == '_')),
+ // initial vector
+ Vec::new,
+ // once it matches, append the matched item to the vector.
+ |mut acc: Vec<_>, item| {
+ acc.push(item);
+ acc
+ }
+ )))(input);
+
+}
+
+
+
+// test parser
+#[cfg(test)]
+mod tests {
+ // import the functions ouside mod tests
+ use super::*;
+
+
+ // test integer
+ #[test]
+ fn test_integer() {
+ //if no error is shown, the function passes the test
+ assert_eq!(integer("12345"), Ok(("", "12345")));
+ assert_eq!(integer("0"), Ok(("", "0")));
+ }
+
+ #[test]
+ fn test_float() {
+ assert_eq!(float("12.345"), Ok(("", "12.345")));
+ }
+
+ #[test]
+ fn test_identifier() {
+ assert_eq!(identifier("_"), Ok(("", "_")));
+ }
+}
--- /dev/null
+{"rustc_fingerprint":863783435189865176,"outputs":{"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.71.1 (eb26296b5 2023-08-03)\nbinary: rustc\ncommit-hash: eb26296b556cef10fb713a38f3d16b9886080f26\ncommit-date: 2023-08-03\nhost: x86_64-unknown-linux-gnu\nrelease: 1.71.1\nLLVM version: 16.0.5\n","stderr":""},"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/yoxem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}}
\ No newline at end of file
--- /dev/null
+Signature: 8a477f597d28d172789f06886806bc55
+# This file is a cache directory tag created by cargo.
+# For information about cache directory tags see https://bford.info/cachedir/
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+{"message":"unused `#[macro_use]` import","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":109,"byte_end":121,"line_start":4,"line_end":4,"column_start":1,"column_end":13,"is_primary":true,"text":[{"text":"#[macro_use]","highlight_start":1,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused `#[macro_use]` import\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:4:1\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m#[macro_use]\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_imports)]` on by default\u001b[0m\n\n"}
+{"message":"1 warning emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 1 warning emitted\u001b[0m\n\n"}
--- /dev/null
+a6bf9d6458defbdc
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":8738920895606195810,"profile":7880216272462909439,"path":1684066648322511884,"deps":[[6954241390595330609,"nom",false,9528270570367385276]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ch1-07d4929d340d9efb/dep-test-bin-ch1"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+{"message":"unused `#[macro_use]` import","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":109,"byte_end":121,"line_start":4,"line_end":4,"column_start":1,"column_end":13,"is_primary":true,"text":[{"text":"#[macro_use]","highlight_start":1,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused `#[macro_use]` import\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:4:1\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m#[macro_use]\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_imports)]` on by default\u001b[0m\n\n"}
+{"message":"1 warning emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 1 warning emitted\u001b[0m\n\n"}
--- /dev/null
+e72d5ea752ed1fe1
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":8738920895606195810,"profile":7364977192075987598,"path":1684066648322511884,"deps":[[6954241390595330609,"nom",false,8919617311978624897]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ch1-57fd53436cb557c8/dep-test-bin-ch1"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":8738920895606195810,"profile":16217916096779473954,"path":1684066648322511884,"deps":[[6954241390595330609,"nom",false,8919617311978624897]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ch1-d2faebf0f4349873/dep-bin-ch1"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+{"message":"unused `#[macro_use]` import","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":109,"byte_end":121,"line_start":4,"line_end":4,"column_start":1,"column_end":13,"is_primary":true,"text":[{"text":"#[macro_use]","highlight_start":1,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused `#[macro_use]` import\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:4:1\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m#[macro_use]\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_imports)]` on by default\u001b[0m\n\n"}
+{"message":"`main` function not found in crate `ch1`","code":{"code":"E0601","explanation":"No `main` function was found in a binary crate.\n\nTo fix this error, add a `main` function:\n\n```\nfn main() {\n // Your program will start here.\n println!(\"Hello world!\");\n}\n```\n\nIf you don't know the basics of Rust, you can look at the\n[Rust Book][rust-book] to get started.\n\n[rust-book]: https://doc.rust-lang.org/book/\n"},"level":"error","spans":[{"file_name":"src/main.rs","byte_start":2063,"byte_end":2063,"line_start":80,"line_end":80,"column_start":2,"column_end":2,"is_primary":true,"text":[{"text":"}","highlight_start":2,"highlight_end":2}],"label":"consider adding a `main` function to `src/main.rs`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0601]\u001b[0m\u001b[0m\u001b[1m: `main` function not found in crate `ch1`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:80:2\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m80\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m}\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mconsider adding a `main` function to `src/main.rs`\u001b[0m\n\n"}
+{"message":"aborting due to previous error; 1 warning emitted","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror\u001b[0m\u001b[0m\u001b[1m: aborting due to previous error; 1 warning emitted\u001b[0m\n\n"}
+{"message":"For more information about this error, try `rustc --explain E0601`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1mFor more information about this error, try `rustc --explain E0601`.\u001b[0m\n"}
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+dc04578d282f118e
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"alloc\", \"std\"]","target":13876443730220172507,"profile":7767436220172716501,"path":2387599723792994816,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/memchr-01dbc4587e7dba77/dep-lib-memchr"}}],"rustflags":[],"metadata":7513296495906230968,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+f410f339751f25a2
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"alloc\", \"std\"]","target":13876443730220172507,"profile":7890341536494525235,"path":2387599723792994816,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/memchr-6c3f2604a168adfc/dep-lib-memchr"}}],"rustflags":[],"metadata":7513296495906230968,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+2ae99062fb56ae66
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"std\"]","target":1009644266440026082,"profile":7767436220172716501,"path":10134622611887052030,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/minimal-lexical-053a98cbe8ddf902/dep-lib-minimal-lexical"}}],"rustflags":[],"metadata":2051824130325965549,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+c19071702303a813
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"std\"]","target":1009644266440026082,"profile":7890341536494525235,"path":10134622611887052030,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/minimal-lexical-69d29d1e7f21ab28/dep-lib-minimal-lexical"}}],"rustflags":[],"metadata":2051824130325965549,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+bc7e8ece99373b84
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"alloc\", \"default\", \"std\"]","target":1745534342555606081,"profile":7767436220172716501,"path":9978048319144250237,"deps":[[889836035008422344,"memchr",false,10237015279206335708],[10953957149292187054,"minimal_lexical",false,7398946875506747690]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/nom-2511ea9097602b48/dep-lib-nom"}}],"rustflags":[],"metadata":9858338621379386705,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+8117e9e4afd8c87b
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"alloc\", \"default\", \"std\"]","target":1745534342555606081,"profile":7890341536494525235,"path":9978048319144250237,"deps":[[889836035008422344,"memchr",false,11683779396626485492],[10953957149292187054,"minimal_lexical",false,1416385533553250497]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/nom-2e36d95dbcef1226/dep-lib-nom"}}],"rustflags":[],"metadata":9858338621379386705,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/ch1-07d4929d340d9efb: src/main.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/ch1-07d4929d340d9efb.d: src/main.rs
+
+src/main.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/ch1-57fd53436cb557c8.rmeta: src/main.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/ch1-57fd53436cb557c8.d: src/main.rs
+
+src/main.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/ch1-d2faebf0f4349873.rmeta: src/main.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/ch1-d2faebf0f4349873.d: src/main.rs
+
+src/main.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/memchr-01dbc4587e7dba77.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/default_rank.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/rabinkarp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/shiftor.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/twoway.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/cow.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/ext.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/searcher.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/vector.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libmemchr-01dbc4587e7dba77.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/default_rank.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/rabinkarp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/shiftor.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/twoway.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/cow.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/ext.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/searcher.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/vector.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/memchr-01dbc4587e7dba77.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/default_rank.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/rabinkarp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/shiftor.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/twoway.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/cow.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/ext.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/searcher.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/vector.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/macros.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/default_rank.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/rabinkarp.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/shiftor.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/twoway.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/packedpair.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/packedpair.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/packedpair.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/cow.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/ext.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/searcher.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/vector.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/memchr-6c3f2604a168adfc.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/default_rank.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/rabinkarp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/shiftor.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/twoway.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/cow.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/ext.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/searcher.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/vector.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/memchr-6c3f2604a168adfc.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/default_rank.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/rabinkarp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/shiftor.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/twoway.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/cow.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/ext.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/searcher.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/vector.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/macros.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/default_rank.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/rabinkarp.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/shiftor.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/twoway.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/packedpair.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/packedpair.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/packedpair.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/cow.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/ext.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/searcher.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/vector.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/minimal_lexical-053a98cbe8ddf902.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/bellerophon.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/bigint.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/extended_float.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/fpu.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/heapvec.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/lemire.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/libm.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/mask.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/num.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/number.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/parse.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/rounding.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/slow.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/stackvec.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_bellerophon.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_lemire.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_small.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libminimal_lexical-053a98cbe8ddf902.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/bellerophon.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/bigint.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/extended_float.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/fpu.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/heapvec.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/lemire.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/libm.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/mask.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/num.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/number.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/parse.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/rounding.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/slow.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/stackvec.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_bellerophon.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_lemire.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_small.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/minimal_lexical-053a98cbe8ddf902.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/bellerophon.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/bigint.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/extended_float.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/fpu.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/heapvec.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/lemire.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/libm.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/mask.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/num.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/number.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/parse.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/rounding.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/slow.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/stackvec.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_bellerophon.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_lemire.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_small.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/bellerophon.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/bigint.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/extended_float.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/fpu.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/heapvec.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/lemire.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/libm.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/mask.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/num.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/number.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/parse.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/rounding.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/slow.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/stackvec.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_bellerophon.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_lemire.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_small.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/minimal_lexical-69d29d1e7f21ab28.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/bellerophon.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/bigint.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/extended_float.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/fpu.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/heapvec.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/lemire.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/libm.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/mask.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/num.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/number.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/parse.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/rounding.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/slow.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/stackvec.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_bellerophon.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_lemire.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_small.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/minimal_lexical-69d29d1e7f21ab28.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/bellerophon.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/bigint.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/extended_float.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/fpu.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/heapvec.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/lemire.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/libm.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/mask.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/num.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/number.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/parse.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/rounding.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/slow.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/stackvec.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_bellerophon.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_lemire.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_small.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/bellerophon.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/bigint.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/extended_float.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/fpu.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/heapvec.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/lemire.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/libm.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/mask.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/num.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/number.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/parse.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/rounding.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/slow.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/stackvec.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_bellerophon.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_lemire.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/minimal-lexical-0.2.1/src/table_small.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/nom-2511ea9097602b48.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/error.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/branch/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/combinator/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/internal.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/multi/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/sequence/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/traits.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/str.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/streaming.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libnom-2511ea9097602b48.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/error.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/branch/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/combinator/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/internal.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/multi/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/sequence/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/traits.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/str.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/streaming.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/nom-2511ea9097602b48.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/error.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/branch/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/combinator/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/internal.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/multi/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/sequence/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/traits.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/str.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/streaming.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/macros.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/error.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/branch/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/combinator/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/internal.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/multi/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/sequence/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/traits.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/complete.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/streaming.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/complete.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/streaming.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/complete.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/streaming.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/str.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/complete.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/streaming.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/nom-2e36d95dbcef1226.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/error.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/branch/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/combinator/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/internal.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/multi/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/sequence/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/traits.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/str.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/streaming.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/nom-2e36d95dbcef1226.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/error.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/branch/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/combinator/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/internal.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/multi/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/sequence/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/traits.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/streaming.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/str.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/complete.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/streaming.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/macros.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/error.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/branch/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/combinator/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/internal.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/multi/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/sequence/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/traits.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/complete.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bits/streaming.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/complete.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/bytes/streaming.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/complete.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/character/streaming.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/str.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/complete.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nom-7.1.3/src/number/streaming.rs:
--- /dev/null
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+[[package]]
+name = "bstr"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c"
+dependencies = [
+ "memchr",
+ "regex-automata",
+ "serde",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "ch1"
+version = "0.1.0"
+dependencies = [
+ "printpdf",
+ "rsexp",
+]
+
+[[package]]
+name = "crc32fast"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3"
+dependencies = [
+ "powerfmt",
+]
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "flate2"
+version = "1.0.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+
+[[package]]
+name = "js-sys"
+version = "0.3.65"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "linked-hash-map"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
+
+[[package]]
+name = "log"
+version = "0.4.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+
+[[package]]
+name = "lopdf"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07c8e1b6184b1b32ea5f72f572ebdc40e5da1d2921fa469947ff7c480ad1f85a"
+dependencies = [
+ "encoding_rs",
+ "flate2",
+ "itoa",
+ "linked-hash-map",
+ "log",
+ "md5",
+ "pom",
+ "time",
+ "weezl",
+]
+
+[[package]]
+name = "md5"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771"
+
+[[package]]
+name = "memchr"
+version = "2.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+
+[[package]]
+name = "owned_ttf_parser"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60ac8dda2e5cc09bf6480e3b3feff9783db251710c922ae9369a429c51efdeb0"
+dependencies = [
+ "ttf-parser",
+]
+
+[[package]]
+name = "pom"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c2d73a5fe10d458e77534589512104e5aa8ac480aa9ac30b74563274235cce4"
+dependencies = [
+ "bstr",
+]
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "printpdf"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f626e180738289baa7ea2d70e603698520735060a664141203cc17bd8e4379c0"
+dependencies = [
+ "js-sys",
+ "lopdf",
+ "owned_ttf_parser",
+ "time",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.70"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+
+[[package]]
+name = "rsexp"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3df9a9b6491d42c0fc527e92a87525c17e45c6b9c22345702a6dc0400320bf1"
+
+[[package]]
+name = "serde"
+version = "1.0.193"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.193"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "time"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5"
+dependencies = [
+ "deranged",
+ "itoa",
+ "powerfmt",
+ "serde",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
+
+[[package]]
+name = "time-macros"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20"
+dependencies = [
+ "time-core",
+]
+
+[[package]]
+name = "ttf-parser"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ae2f58a822f08abdaf668897e96a5656fe72f5a9ce66422423e8849384872e6"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.88"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.88"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.88"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.88"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.88"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b"
+
+[[package]]
+name = "weezl"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb"
--- /dev/null
+[package]
+name = "ch1"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+printpdf = "0.6.0"
+rsexp = "0.2.3"
--- /dev/null
+use rsexp;
+use crate::rsexp::Error;
+use rsexp::Sexp;
+use printpdf::*;
+use std::fs::File;
+use std::io::BufWriter;
+
+// storing measuring unit.
+enum Measure{
+ Pt(f64),
+ Px(f64)
+}
+
+enum Expr{
+ Mea(Measure), // wrapper for measure
+ Str(String),
+ Style{font_path : Measure, size : Measure},
+ Func(String, Vec<Expr>),
+ Void // return nothing
+}
+
+const PDF_title :&str = "test title";
+const defaultLayer : &str = "Default Layer"; // Layer name for PDF
+
+fn interp(exp : Expr)->Expr{
+ let (mut pdf_doc, mut page_index, mut layer_index) = PdfDocument::new(PDF_title,
+ Mm(210.0), Mm(297.0), defaultLayer);
+ return match exp {
+ // convert pt to px
+ Expr::Mea(Measure::Pt(x)) => interp(Expr::Mea(Measure::Px(x * 4.0/3.0))), // convert pt to px. 1pt = 4/3px
+ Expr::Mea(Measure::Px(x)) => exp, // return it's original value
+
+ // Functions
+ // (createPDF '())
+ Expr::Func(x, y) => match x.as_str()
+ // PdfDocument::new(document title, x, y, layerName)
+ {"createPDF" => {(pdf_doc, page_index, layer_index) = PdfDocument::new(PDF_title,
+ Mm(247.0), Mm(210.0), defaultLayer);
+ return Expr::Void;},
+ // writePDF => write to a file
+ "writePDF" => match &y[..] {
+ [Expr::Str(x)] => {
+ pdf_doc.save(&mut BufWriter::new(File::create(x.as_str()).unwrap())).unwrap();
+ return Expr::Void;},
+ _ => {panic!("argument not well-formed"); Expr::Void}
+ }
+ // "addPage" =>
+ _ => Expr::Void, }
+
+ _ => {panic!("function not found"); Expr::Void},
+ };
+}
+
+fn main() {
+ interp(Expr::Mea(Measure::Pt(2.2)));
+}
--- /dev/null
+{"rustc_fingerprint":863783435189865176,"outputs":{"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.71.1 (eb26296b5 2023-08-03)\nbinary: rustc\ncommit-hash: eb26296b556cef10fb713a38f3d16b9886080f26\ncommit-date: 2023-08-03\nhost: x86_64-unknown-linux-gnu\nrelease: 1.71.1\nLLVM version: 16.0.5\n","stderr":""},"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/yoxem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}}
\ No newline at end of file
--- /dev/null
+Signature: 8a477f597d28d172789f06886806bc55
+# This file is a cache directory tag created by cargo.
+# For information about cache directory tags see https://bford.info/cachedir/
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+af3ddf44300d84c8
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":4568273168033506088,"profile":7767436220172716501,"path":9539015345839909540,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/adler-0182d5eec4e8c584/dep-lib-adler"}}],"rustflags":[],"metadata":10673633425720882208,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+010815a113b81cae
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"alloc\", \"default\", \"std\", \"unicode\"]","target":8095004581654011273,"profile":7767436220172716501,"path":10647072569481720596,"deps":[[889836035008422344,"memchr",false,10237015279206335708],[17457940967778283033,"regex_automata",false,17875186331106210410]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bstr-6f965d594e17b95c/dep-lib-bstr"}}],"rustflags":[],"metadata":10235196287122036967,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+8c4da0728d52c207
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":10623512480563079566,"profile":7767436220172716501,"path":9290774430866845018,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cfg-if-eeaea7e5ccc9d40b/dep-lib-cfg-if"}}],"rustflags":[],"metadata":8462187951337715540,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+9eadcad80b54c263
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":8738920895606195810,"profile":12909064940101087186,"path":1684066648322511884,"deps":[[10566100722837969602,"rsexp",false,7264153004422410716],[17486941196540678155,"printpdf",false,4505530325690076389]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ch1-571608d5caa3a7e9/dep-bin-ch1"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+{"message":"unused import: `crate::rsexp::Error`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":15,"byte_end":34,"line_start":2,"line_end":2,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"use crate::rsexp::Error;","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":11,"byte_end":35,"line_start":2,"line_end":2,"column_start":1,"column_end":25,"is_primary":true,"text":[{"text":"use crate::rsexp::Error;","highlight_start":1,"highlight_end":25}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `crate::rsexp::Error`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:2:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m2\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse crate::rsexp::Error;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_imports)]` on by default\u001b[0m\n\n"}
+{"message":"unused import: `rsexp::Sexp`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":40,"byte_end":51,"line_start":3,"line_end":3,"column_start":5,"column_end":16,"is_primary":true,"text":[{"text":"use rsexp::Sexp;","highlight_start":5,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":36,"byte_end":52,"line_start":3,"line_end":3,"column_start":1,"column_end":17,"is_primary":true,"text":[{"text":"use rsexp::Sexp;","highlight_start":1,"highlight_end":17}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `rsexp::Sexp`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:3:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m3\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse rsexp::Sexp;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\n"}
+{"message":"unreachable expression","code":{"code":"unreachable_code","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":1753,"byte_end":1763,"line_start":45,"line_end":45,"column_start":79,"column_end":89,"is_primary":true,"text":[{"text":" _ => {panic!(\"argument not well-formed\"); Expr::Void}","highlight_start":79,"highlight_end":89}],"label":"unreachable expression","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/home/yoxem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic.rs","byte_start":2196,"byte_end":2260,"line_start":61,"line_end":61,"column_start":9,"column_end":73,"is_primary":false,"text":[{"text":" $crate::panicking::panic_fmt($crate::const_format_args!($($t)+));","highlight_start":9,"highlight_end":73}],"label":"any code following this expression is unreachable","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/main.rs","byte_start":1717,"byte_end":1751,"line_start":45,"line_end":45,"column_start":43,"column_end":77,"is_primary":false,"text":[{"text":" _ => {panic!(\"argument not well-formed\"); Expr::Void}","highlight_start":43,"highlight_end":77}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/main.rs","byte_start":1717,"byte_end":1751,"line_start":45,"line_end":45,"column_start":43,"column_end":77,"is_primary":false,"text":[{"text":" _ => {panic!(\"argument not well-formed\"); Expr::Void}","highlight_start":43,"highlight_end":77}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"panic!","def_site_span":{"file_name":"/home/yoxem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/macros.rs","byte_start":482,"byte_end":500,"line_start":14,"line_end":14,"column_start":1,"column_end":19,"is_primary":false,"text":[{"text":"macro_rules! panic {","highlight_start":1,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::panic::panic_2021!","def_site_span":{"file_name":"/home/yoxem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic.rs","byte_start":1765,"byte_end":1785,"line_start":50,"line_end":50,"column_start":1,"column_end":21,"is_primary":false,"text":[{"text":"pub macro panic_2021 {","highlight_start":1,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[{"message":"`#[warn(unreachable_code)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unreachable expression\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:45:79\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m45\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\u001b[0m _ => {panic!(\"argument not well-formed\"); Expr::Void}\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----------------------------------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33munreachable expression\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12many code following this expression is unreachable\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unreachable_code)]` on by default\u001b[0m\n\n"}
+{"message":"unreachable expression","code":{"code":"unreachable_code","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":1945,"byte_end":1955,"line_start":50,"line_end":50,"column_start":46,"column_end":56,"is_primary":true,"text":[{"text":" _ => {panic!(\"function not found\"); Expr::Void},","highlight_start":46,"highlight_end":56}],"label":"unreachable expression","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/home/yoxem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic.rs","byte_start":2196,"byte_end":2260,"line_start":61,"line_end":61,"column_start":9,"column_end":73,"is_primary":false,"text":[{"text":" $crate::panicking::panic_fmt($crate::const_format_args!($($t)+));","highlight_start":9,"highlight_end":73}],"label":"any code following this expression is unreachable","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/main.rs","byte_start":1914,"byte_end":1942,"line_start":50,"line_end":50,"column_start":15,"column_end":43,"is_primary":false,"text":[{"text":" _ => {panic!(\"function not found\"); Expr::Void},","highlight_start":15,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/main.rs","byte_start":1914,"byte_end":1942,"line_start":50,"line_end":50,"column_start":15,"column_end":43,"is_primary":false,"text":[{"text":" _ => {panic!(\"function not found\"); Expr::Void},","highlight_start":15,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"panic!","def_site_span":{"file_name":"/home/yoxem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/macros.rs","byte_start":482,"byte_end":500,"line_start":14,"line_end":14,"column_start":1,"column_end":19,"is_primary":false,"text":[{"text":"macro_rules! panic {","highlight_start":1,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::panic::panic_2021!","def_site_span":{"file_name":"/home/yoxem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic.rs","byte_start":1765,"byte_end":1785,"line_start":50,"line_end":50,"column_start":1,"column_end":21,"is_primary":false,"text":[{"text":"pub macro panic_2021 {","highlight_start":1,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unreachable expression\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:50:46\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m50\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m _ => {panic!(\"function not found\"); Expr::Void},\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----------------------------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33munreachable expression\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12many code following this expression is unreachable\u001b[0m\n\n"}
+{"message":"variable `page_index` is assigned to, but never used","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":520,"byte_end":530,"line_start":26,"line_end":26,"column_start":27,"column_end":37,"is_primary":true,"text":[{"text":" let (mut pdf_doc, mut page_index, mut layer_index) = PdfDocument::new(PDF_title,","highlight_start":27,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider using `_page_index` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"`#[warn(unused_variables)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable `page_index` is assigned to, but never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:26:27\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m26\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m let (mut pdf_doc, mut page_index, mut layer_index) = PdfDocument::new(PDF_title,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: consider using `_page_index` instead\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_variables)]` on by default\u001b[0m\n\n"}
+{"message":"variable `layer_index` is assigned to, but never used","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":536,"byte_end":547,"line_start":26,"line_end":26,"column_start":43,"column_end":54,"is_primary":true,"text":[{"text":" let (mut pdf_doc, mut page_index, mut layer_index) = PdfDocument::new(PDF_title,","highlight_start":43,"highlight_end":54}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider using `_layer_index` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable `layer_index` is assigned to, but never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:26:43\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m26\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m let (mut pdf_doc, mut page_index, mut layer_index) = PdfDocument::new(PDF_title,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: consider using `_layer_index` instead\u001b[0m\n\n"}
+{"message":"unused variable: `x`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":821,"byte_end":822,"line_start":31,"line_end":31,"column_start":31,"column_end":32,"is_primary":true,"text":[{"text":" Expr::Mea(Measure::Px(x)) => exp, // return it's original value","highlight_start":31,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":821,"byte_end":822,"line_start":31,"line_end":31,"column_start":31,"column_end":32,"is_primary":true,"text":[{"text":" Expr::Mea(Measure::Px(x)) => exp, // return it's original value","highlight_start":31,"highlight_end":32}],"label":null,"suggested_replacement":"_x","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `x`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:31:31\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m31\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Expr::Mea(Measure::Px(x)) => exp, // return it's original value\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_x`\u001b[0m\n\n"}
+{"message":"value assigned to `pdf_doc` is never read","code":{"code":"unused_assignments","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":1097,"byte_end":1104,"line_start":37,"line_end":37,"column_start":51,"column_end":58,"is_primary":true,"text":[{"text":" {\"createPDF\" => {(pdf_doc, page_index, layer_index) = PdfDocument::new(PDF_title,","highlight_start":51,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"maybe it is overwritten before being read?","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`#[warn(unused_assignments)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: value assigned to `pdf_doc` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:37:51\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m37\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\u001b[0m {\"createPDF\" => {(pdf_doc, page_index, layer_index) = PdfDocument::new(PDF_title,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mhelp\u001b[0m\u001b[0m: maybe it is overwritten before being read?\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_assignments)]` on by default\u001b[0m\n\n"}
+{"message":"value assigned to `page_index` is never read","code":{"code":"unused_assignments","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":1106,"byte_end":1116,"line_start":37,"line_end":37,"column_start":60,"column_end":70,"is_primary":true,"text":[{"text":" {\"createPDF\" => {(pdf_doc, page_index, layer_index) = PdfDocument::new(PDF_title,","highlight_start":60,"highlight_end":70}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"maybe it is overwritten before being read?","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: value assigned to `page_index` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:37:60\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m37\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\u001b[0m {\"createPDF\" => {(pdf_doc, page_index, layer_index) = PdfDocument::new(PDF_title,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mhelp\u001b[0m\u001b[0m: maybe it is overwritten before being read?\u001b[0m\n\n"}
+{"message":"value assigned to `layer_index` is never read","code":{"code":"unused_assignments","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":1118,"byte_end":1129,"line_start":37,"line_end":37,"column_start":72,"column_end":83,"is_primary":true,"text":[{"text":" {\"createPDF\" => {(pdf_doc, page_index, layer_index) = PdfDocument::new(PDF_title,","highlight_start":72,"highlight_end":83}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"maybe it is overwritten before being read?","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: value assigned to `layer_index` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:37:72\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m37\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\u001b[0m {\"createPDF\" => {(pdf_doc, page_index, layer_index) = PdfDocument::new(PDF_title,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mhelp\u001b[0m\u001b[0m: maybe it is overwritten before being read?\u001b[0m\n\n"}
+{"message":"variants `Str`, `Style`, and `Func` are never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":188,"byte_end":192,"line_start":14,"line_end":14,"column_start":6,"column_end":10,"is_primary":false,"text":[{"text":"enum Expr{","highlight_start":6,"highlight_end":10}],"label":"variants in this enum","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":239,"byte_end":242,"line_start":16,"line_end":16,"column_start":5,"column_end":8,"is_primary":true,"text":[{"text":" Str(String),","highlight_start":5,"highlight_end":8}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":256,"byte_end":261,"line_start":17,"line_end":17,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":" Style{font_path : Measure, size : Measure},","highlight_start":5,"highlight_end":10}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":304,"byte_end":308,"line_start":18,"line_end":18,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":" Func(String, Vec<Expr>),","highlight_start":5,"highlight_end":9}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(dead_code)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variants `Str`, `Style`, and `Func` are never constructed\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:16:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m14\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0menum Expr{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mvariants in this enum\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m15\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Mea(Measure), // wrapper for measure\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m16\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Str(String),\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m17\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Style{font_path : Measure, size : Measure},\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m18\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Func(String, Vec<Expr>),\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(dead_code)]` on by default\u001b[0m\n\n"}
+{"message":"constant `PDF_title` should have an upper case name","code":{"code":"non_upper_case_globals","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":365,"byte_end":374,"line_start":22,"line_end":22,"column_start":7,"column_end":16,"is_primary":true,"text":[{"text":"const PDF_title :&str = \"test title\";","highlight_start":7,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(non_upper_case_globals)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"convert the identifier to upper case","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":365,"byte_end":374,"line_start":22,"line_end":22,"column_start":7,"column_end":16,"is_primary":true,"text":[{"text":"const PDF_title :&str = \"test title\";","highlight_start":7,"highlight_end":16}],"label":null,"suggested_replacement":"PDF_TITLE","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: constant `PDF_title` should have an upper case name\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:22:7\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m22\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mconst PDF_title :&str = \"test title\";\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: convert the identifier to upper case: `PDF_TITLE`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(non_upper_case_globals)]` on by default\u001b[0m\n\n"}
+{"message":"constant `defaultLayer` should have an upper case name","code":{"code":"non_upper_case_globals","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":403,"byte_end":415,"line_start":23,"line_end":23,"column_start":7,"column_end":19,"is_primary":true,"text":[{"text":"const defaultLayer : &str = \"Default Layer\"; // Layer name for PDF","highlight_start":7,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"convert the identifier to upper case","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":403,"byte_end":415,"line_start":23,"line_end":23,"column_start":7,"column_end":19,"is_primary":true,"text":[{"text":"const defaultLayer : &str = \"Default Layer\"; // Layer name for PDF","highlight_start":7,"highlight_end":19}],"label":null,"suggested_replacement":"DEFAULT_LAYER","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: constant `defaultLayer` should have an upper case name\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:23:7\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m23\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mconst defaultLayer : &str = \"Default Layer\"; // Layer name for PDF\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: convert the identifier to upper case: `DEFAULT_LAYER`\u001b[0m\n\n"}
+{"message":"13 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 13 warnings emitted\u001b[0m\n\n"}
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+{"message":"unused import: `crate::rsexp::Error`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":15,"byte_end":34,"line_start":2,"line_end":2,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"use crate::rsexp::Error;","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":11,"byte_end":35,"line_start":2,"line_end":2,"column_start":1,"column_end":25,"is_primary":true,"text":[{"text":"use crate::rsexp::Error;","highlight_start":1,"highlight_end":25}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `crate::rsexp::Error`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:2:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m2\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse crate::rsexp::Error;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_imports)]` on by default\u001b[0m\n\n"}
+{"message":"unused import: `rsexp::Sexp`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":40,"byte_end":51,"line_start":3,"line_end":3,"column_start":5,"column_end":16,"is_primary":true,"text":[{"text":"use rsexp::Sexp;","highlight_start":5,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":36,"byte_end":52,"line_start":3,"line_end":3,"column_start":1,"column_end":17,"is_primary":true,"text":[{"text":"use rsexp::Sexp;","highlight_start":1,"highlight_end":17}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `rsexp::Sexp`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:3:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m3\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse rsexp::Sexp;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\n"}
+{"message":"unreachable expression","code":{"code":"unreachable_code","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":1753,"byte_end":1763,"line_start":45,"line_end":45,"column_start":79,"column_end":89,"is_primary":true,"text":[{"text":" _ => {panic!(\"argument not well-formed\"); Expr::Void}","highlight_start":79,"highlight_end":89}],"label":"unreachable expression","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/home/yoxem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic.rs","byte_start":2196,"byte_end":2260,"line_start":61,"line_end":61,"column_start":9,"column_end":73,"is_primary":false,"text":[{"text":" $crate::panicking::panic_fmt($crate::const_format_args!($($t)+));","highlight_start":9,"highlight_end":73}],"label":"any code following this expression is unreachable","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/main.rs","byte_start":1717,"byte_end":1751,"line_start":45,"line_end":45,"column_start":43,"column_end":77,"is_primary":false,"text":[{"text":" _ => {panic!(\"argument not well-formed\"); Expr::Void}","highlight_start":43,"highlight_end":77}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/main.rs","byte_start":1717,"byte_end":1751,"line_start":45,"line_end":45,"column_start":43,"column_end":77,"is_primary":false,"text":[{"text":" _ => {panic!(\"argument not well-formed\"); Expr::Void}","highlight_start":43,"highlight_end":77}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"panic!","def_site_span":{"file_name":"/home/yoxem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/macros.rs","byte_start":482,"byte_end":500,"line_start":14,"line_end":14,"column_start":1,"column_end":19,"is_primary":false,"text":[{"text":"macro_rules! panic {","highlight_start":1,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::panic::panic_2021!","def_site_span":{"file_name":"/home/yoxem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic.rs","byte_start":1765,"byte_end":1785,"line_start":50,"line_end":50,"column_start":1,"column_end":21,"is_primary":false,"text":[{"text":"pub macro panic_2021 {","highlight_start":1,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[{"message":"`#[warn(unreachable_code)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unreachable expression\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:45:79\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m45\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\u001b[0m _ => {panic!(\"argument not well-formed\"); Expr::Void}\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----------------------------------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33munreachable expression\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12many code following this expression is unreachable\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unreachable_code)]` on by default\u001b[0m\n\n"}
+{"message":"unreachable expression","code":{"code":"unreachable_code","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":1945,"byte_end":1955,"line_start":50,"line_end":50,"column_start":46,"column_end":56,"is_primary":true,"text":[{"text":" _ => {panic!(\"function not found\"); Expr::Void},","highlight_start":46,"highlight_end":56}],"label":"unreachable expression","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/home/yoxem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic.rs","byte_start":2196,"byte_end":2260,"line_start":61,"line_end":61,"column_start":9,"column_end":73,"is_primary":false,"text":[{"text":" $crate::panicking::panic_fmt($crate::const_format_args!($($t)+));","highlight_start":9,"highlight_end":73}],"label":"any code following this expression is unreachable","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/main.rs","byte_start":1914,"byte_end":1942,"line_start":50,"line_end":50,"column_start":15,"column_end":43,"is_primary":false,"text":[{"text":" _ => {panic!(\"function not found\"); Expr::Void},","highlight_start":15,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/main.rs","byte_start":1914,"byte_end":1942,"line_start":50,"line_end":50,"column_start":15,"column_end":43,"is_primary":false,"text":[{"text":" _ => {panic!(\"function not found\"); Expr::Void},","highlight_start":15,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"panic!","def_site_span":{"file_name":"/home/yoxem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/macros.rs","byte_start":482,"byte_end":500,"line_start":14,"line_end":14,"column_start":1,"column_end":19,"is_primary":false,"text":[{"text":"macro_rules! panic {","highlight_start":1,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::panic::panic_2021!","def_site_span":{"file_name":"/home/yoxem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic.rs","byte_start":1765,"byte_end":1785,"line_start":50,"line_end":50,"column_start":1,"column_end":21,"is_primary":false,"text":[{"text":"pub macro panic_2021 {","highlight_start":1,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unreachable expression\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:50:46\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m50\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m _ => {panic!(\"function not found\"); Expr::Void},\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----------------------------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33munreachable expression\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12many code following this expression is unreachable\u001b[0m\n\n"}
+{"message":"variable `page_index` is assigned to, but never used","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":520,"byte_end":530,"line_start":26,"line_end":26,"column_start":27,"column_end":37,"is_primary":true,"text":[{"text":" let (mut pdf_doc, mut page_index, mut layer_index) = PdfDocument::new(PDF_title,","highlight_start":27,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider using `_page_index` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"`#[warn(unused_variables)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable `page_index` is assigned to, but never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:26:27\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m26\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m let (mut pdf_doc, mut page_index, mut layer_index) = PdfDocument::new(PDF_title,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: consider using `_page_index` instead\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_variables)]` on by default\u001b[0m\n\n"}
+{"message":"variable `layer_index` is assigned to, but never used","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":536,"byte_end":547,"line_start":26,"line_end":26,"column_start":43,"column_end":54,"is_primary":true,"text":[{"text":" let (mut pdf_doc, mut page_index, mut layer_index) = PdfDocument::new(PDF_title,","highlight_start":43,"highlight_end":54}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider using `_layer_index` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable `layer_index` is assigned to, but never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:26:43\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m26\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m let (mut pdf_doc, mut page_index, mut layer_index) = PdfDocument::new(PDF_title,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: consider using `_layer_index` instead\u001b[0m\n\n"}
+{"message":"unused variable: `x`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":821,"byte_end":822,"line_start":31,"line_end":31,"column_start":31,"column_end":32,"is_primary":true,"text":[{"text":" Expr::Mea(Measure::Px(x)) => exp, // return it's original value","highlight_start":31,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":821,"byte_end":822,"line_start":31,"line_end":31,"column_start":31,"column_end":32,"is_primary":true,"text":[{"text":" Expr::Mea(Measure::Px(x)) => exp, // return it's original value","highlight_start":31,"highlight_end":32}],"label":null,"suggested_replacement":"_x","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `x`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:31:31\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m31\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Expr::Mea(Measure::Px(x)) => exp, // return it's original value\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_x`\u001b[0m\n\n"}
+{"message":"value assigned to `pdf_doc` is never read","code":{"code":"unused_assignments","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":1097,"byte_end":1104,"line_start":37,"line_end":37,"column_start":51,"column_end":58,"is_primary":true,"text":[{"text":" {\"createPDF\" => {(pdf_doc, page_index, layer_index) = PdfDocument::new(PDF_title,","highlight_start":51,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"maybe it is overwritten before being read?","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`#[warn(unused_assignments)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: value assigned to `pdf_doc` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:37:51\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m37\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\u001b[0m {\"createPDF\" => {(pdf_doc, page_index, layer_index) = PdfDocument::new(PDF_title,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mhelp\u001b[0m\u001b[0m: maybe it is overwritten before being read?\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_assignments)]` on by default\u001b[0m\n\n"}
+{"message":"value assigned to `page_index` is never read","code":{"code":"unused_assignments","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":1106,"byte_end":1116,"line_start":37,"line_end":37,"column_start":60,"column_end":70,"is_primary":true,"text":[{"text":" {\"createPDF\" => {(pdf_doc, page_index, layer_index) = PdfDocument::new(PDF_title,","highlight_start":60,"highlight_end":70}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"maybe it is overwritten before being read?","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: value assigned to `page_index` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:37:60\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m37\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\u001b[0m {\"createPDF\" => {(pdf_doc, page_index, layer_index) = PdfDocument::new(PDF_title,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mhelp\u001b[0m\u001b[0m: maybe it is overwritten before being read?\u001b[0m\n\n"}
+{"message":"value assigned to `layer_index` is never read","code":{"code":"unused_assignments","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":1118,"byte_end":1129,"line_start":37,"line_end":37,"column_start":72,"column_end":83,"is_primary":true,"text":[{"text":" {\"createPDF\" => {(pdf_doc, page_index, layer_index) = PdfDocument::new(PDF_title,","highlight_start":72,"highlight_end":83}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"maybe it is overwritten before being read?","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: value assigned to `layer_index` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:37:72\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m37\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\u001b[0m {\"createPDF\" => {(pdf_doc, page_index, layer_index) = PdfDocument::new(PDF_title,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mhelp\u001b[0m\u001b[0m: maybe it is overwritten before being read?\u001b[0m\n\n"}
+{"message":"variants `Str`, `Style`, and `Func` are never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":188,"byte_end":192,"line_start":14,"line_end":14,"column_start":6,"column_end":10,"is_primary":false,"text":[{"text":"enum Expr{","highlight_start":6,"highlight_end":10}],"label":"variants in this enum","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":239,"byte_end":242,"line_start":16,"line_end":16,"column_start":5,"column_end":8,"is_primary":true,"text":[{"text":" Str(String),","highlight_start":5,"highlight_end":8}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":256,"byte_end":261,"line_start":17,"line_end":17,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":" Style{font_path : Measure, size : Measure},","highlight_start":5,"highlight_end":10}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":304,"byte_end":308,"line_start":18,"line_end":18,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":" Func(String, Vec<Expr>),","highlight_start":5,"highlight_end":9}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(dead_code)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variants `Str`, `Style`, and `Func` are never constructed\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:16:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m14\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0menum Expr{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mvariants in this enum\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m15\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Mea(Measure), // wrapper for measure\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m16\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Str(String),\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m17\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Style{font_path : Measure, size : Measure},\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m18\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Func(String, Vec<Expr>),\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(dead_code)]` on by default\u001b[0m\n\n"}
+{"message":"constant `PDF_title` should have an upper case name","code":{"code":"non_upper_case_globals","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":365,"byte_end":374,"line_start":22,"line_end":22,"column_start":7,"column_end":16,"is_primary":true,"text":[{"text":"const PDF_title :&str = \"test title\";","highlight_start":7,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(non_upper_case_globals)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"convert the identifier to upper case","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":365,"byte_end":374,"line_start":22,"line_end":22,"column_start":7,"column_end":16,"is_primary":true,"text":[{"text":"const PDF_title :&str = \"test title\";","highlight_start":7,"highlight_end":16}],"label":null,"suggested_replacement":"PDF_TITLE","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: constant `PDF_title` should have an upper case name\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:22:7\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m22\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mconst PDF_title :&str = \"test title\";\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: convert the identifier to upper case: `PDF_TITLE`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(non_upper_case_globals)]` on by default\u001b[0m\n\n"}
+{"message":"constant `defaultLayer` should have an upper case name","code":{"code":"non_upper_case_globals","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":403,"byte_end":415,"line_start":23,"line_end":23,"column_start":7,"column_end":19,"is_primary":true,"text":[{"text":"const defaultLayer : &str = \"Default Layer\"; // Layer name for PDF","highlight_start":7,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"convert the identifier to upper case","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":403,"byte_end":415,"line_start":23,"line_end":23,"column_start":7,"column_end":19,"is_primary":true,"text":[{"text":"const defaultLayer : &str = \"Default Layer\"; // Layer name for PDF","highlight_start":7,"highlight_end":19}],"label":null,"suggested_replacement":"DEFAULT_LAYER","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: constant `defaultLayer` should have an upper case name\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:23:7\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m23\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mconst defaultLayer : &str = \"Default Layer\"; // Layer name for PDF\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: convert the identifier to upper case: `DEFAULT_LAYER`\u001b[0m\n\n"}
+{"message":"13 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 13 warnings emitted\u001b[0m\n\n"}
--- /dev/null
+a47f73ea5f78515b
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":8738920895606195810,"profile":7880216272462909439,"path":1684066648322511884,"deps":[[10566100722837969602,"rsexp",false,7264153004422410716],[17486941196540678155,"printpdf",false,4505530325690076389]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ch1-64fd7589b03ecc71/dep-test-bin-ch1"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+cf8d88941671140f
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"","target":0,"profile":0,"path":0,"deps":[[16212523666406317869,"build_script_build",false,16135473441573647099]],"local":[{"RerunIfChanged":{"output":"debug/build/crc32fast-3026d4a1fa68aa18/output","paths":["build.rs"]}}],"rustflags":[],"metadata":0,"config":0,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+c286d2cf267b6904
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"default\", \"std\"]","target":17983891813589168065,"profile":7767436220172716501,"path":2467952419324739469,"deps":[[2452538001284770427,"cfg_if",false,559100071214337420],[16212523666406317869,"build_script_build",false,1086617751898328527]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/crc32fast-4c6a17386c04a5f4/dep-lib-crc32fast"}}],"rustflags":[],"metadata":1784606463606881981,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+fb32bf0f9bb7ecdf
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"default\", \"std\"]","target":8188216131759486267,"profile":9347176690363218083,"path":2684736417658341838,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/crc32fast-e04af526ae6ce3b7/dep-build-script-build-script-build"}}],"rustflags":[],"metadata":1784606463606881981,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+958e770bf5fcc6ff
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"alloc\", \"powerfmt\", \"std\"]","target":3569456305522905405,"profile":7767436220172716501,"path":1461770480790742406,"deps":[[14356560995250965263,"powerfmt",false,9803280928146253755]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/deranged-3dfbe937fbc1f956/dep-lib-deranged"}}],"rustflags":[],"metadata":11856866762576635609,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+86b7f2c1925f7c2a
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"alloc\", \"default\"]","target":3132548559358952381,"profile":7767436220172716501,"path":11915647000462411643,"deps":[[2452538001284770427,"cfg_if",false,559100071214337420]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/encoding_rs-cc76ca0a9677f04b/dep-lib-encoding_rs"}}],"rustflags":[],"metadata":10075669053249481654,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+44a6686b90522186
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"any_impl\", \"default\", \"miniz_oxide\", \"rust_backend\"]","target":6218787473906987401,"profile":7767436220172716501,"path":11124330093487031928,"deps":[[12343331430278242480,"miniz_oxide",false,5293995324296924949],[16212523666406317869,"crc32fast",false,317920655331985090]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/flate2-99a05eca864c841b/dep-lib-flate2"}}],"rustflags":[],"metadata":1284714256429684901,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+11f61bade71f50f7
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":17114873591667335244,"profile":7767436220172716501,"path":1442681691613888987,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/itoa-51337cb1070310ee/dep-lib-itoa"}}],"rustflags":[],"metadata":851671291587502216,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+d39bec2b6a4091e2
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":4125097649134820610,"profile":7767436220172716501,"path":10077038422424015154,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/linked-hash-map-274411b391965ec3/dep-lib-linked-hash-map"}}],"rustflags":[],"metadata":11673622644101893762,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+8253dfb258de7f31
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":4487324886529943577,"profile":7767436220172716501,"path":12969198458982845952,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/log-ff52d271b435a12b/dep-lib-log"}}],"rustflags":[],"metadata":179143468214550567,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+cf6ba46a89970a17
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"pom\", \"pom_parser\"]","target":9098642521019646955,"profile":7767436220172716501,"path":6099019250418658188,"deps":[[2686471584615676929,"md5",false,6222179347381499279],[3982932547530265283,"linked_hash_map",false,16325900948942396371],[5069971313344549180,"weezl",false,3894594776688946733],[7416334744765216273,"log",false,3566813902440190850],[10680519162924001902,"itoa",false,17820778805407249937],[12935855096716563853,"flate2",false,9665097055544583748],[14529834352012557620,"pom",false,6697673766050005659],[14889706857035916163,"encoding_rs",false,3061426930628867974],[15560842726312599941,"time",false,9175595210590400676]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/lopdf-98f406925f71e5b3/dep-lib-lopdf"}}],"rustflags":[],"metadata":9576296077523805577,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+8f357261269f5956
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"default\", \"std\"]","target":17730193854900897856,"profile":7767436220172716501,"path":9377615160872335328,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/md5-e0523b00465f30df/dep-lib-md5"}}],"rustflags":[],"metadata":10443698767864065115,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+dc04578d282f118e
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"alloc\", \"std\"]","target":13876443730220172507,"profile":7767436220172716501,"path":2387599723792994816,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/memchr-01dbc4587e7dba77/dep-lib-memchr"}}],"rustflags":[],"metadata":7513296495906230968,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+150f4cdbb20c7849
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"with-alloc\"]","target":4899821511404974979,"profile":7767436220172716501,"path":12688073683090600148,"deps":[[18214773122388295386,"adler",false,14448688005476466095]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/miniz_oxide-2a7f98f5c03174c8/dep-lib-miniz_oxide"}}],"rustflags":[],"metadata":16625842183394340697,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+b0dcf4655aca6952
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":14371609210999131948,"profile":7767436220172716501,"path":16892426534935306948,"deps":[[1957885600054402732,"ttf_parser",false,5937609161798325531]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/owned_ttf_parser-fed9c257719ebb29/dep-lib-owned_ttf_parser"}}],"rustflags":[],"metadata":16107028734103037865,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+9b02ddeecdeaf25c
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"default\", \"utf8\"]","target":1782438345855529323,"profile":7767436220172716501,"path":1337148854261000027,"deps":[[6109282088773666911,"bstr",false,12546105056393758721]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/pom-718a563f4cdb73c4/dep-lib-pom"}}],"rustflags":[],"metadata":6137106501923138057,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+bbe7846b10400c88
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":15571885736188465969,"profile":7767436220172716501,"path":8056685791906767035,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/powerfmt-ab696735fe83b8ed/dep-lib-powerfmt"}}],"rustflags":[],"metadata":385302600784911618,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+e5cc81bbf5db863e
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"default\"]","target":4357858406496330305,"profile":7767436220172716501,"path":12143743562007231601,"deps":[[4132791888029508697,"lopdf",false,1660306029094923215],[7620831723421376493,"owned_ttf_parser",false,5938500073271123120],[15560842726312599941,"time",false,9175595210590400676]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/printpdf-421dea06b0235bd6/dep-lib-printpdf"}}],"rustflags":[],"metadata":15460416350699744421,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+6af280e7426b11f8
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"dfa-search\"]","target":5453405124896219811,"profile":7767436220172716501,"path":9797092695649409784,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/regex-automata-dce5127eb50ed405/dep-lib-regex-automata"}}],"rustflags":[],"metadata":8878122455581797878,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+dc31af9eab74cf64
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":10892958572815147961,"profile":7767436220172716501,"path":8816423446168869137,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/rsexp-7aaeb6d898ed4c03/dep-lib-rsexp"}}],"rustflags":[],"metadata":10182278502535177632,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+a43004ca3a43567f
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"alloc\", \"default\", \"formatting\", \"parsing\", \"std\"]","target":17909626435614249209,"profile":7767436220172716501,"path":4863359098412120422,"deps":[[10067829124648983663,"time_core",false,675864115325051216],[10680519162924001902,"itoa",false,17820778805407249937],[12153920555490394483,"deranged",false,18430696654449905301],[14356560995250965263,"powerfmt",false,9803280928146253755]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/time-8cb4adb7a60fc61d/dep-lib-time"}}],"rustflags":[],"metadata":3679670478084437657,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+502162fed4266109
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":354202632452590315,"profile":7767436220172716501,"path":4411450652134836853,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/time-core-013b1ba9325b4c3e/dep-lib-time-core"}}],"rustflags":[],"metadata":13731695858706362519,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+1b1518e812a06652
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[]","target":14327986716731876783,"profile":7767436220172716501,"path":17298578881326498300,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ttf-parser-2459d90345b8e48d/dep-lib-ttf-parser"}}],"rustflags":[],"metadata":17047479514116110477,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+2deea2a050610c36
\ No newline at end of file
--- /dev/null
+{"rustc":13782479574610989673,"features":"[\"alloc\", \"default\", \"std\"]","target":16979822234402568690,"profile":7767436220172716501,"path":11909520596311471193,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/weezl-0a29435706140fd1/dep-lib-weezl"}}],"rustflags":[],"metadata":5154753838649565246,"config":2202906307356721367,"compile_kind":0}
\ No newline at end of file
--- /dev/null
+This file has an mtime of when this was started.
\ No newline at end of file
--- /dev/null
+cargo:rerun-if-changed=build.rs
+cargo:rustc-cfg=crc32fast_stdarchx86
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/build/crc32fast-3026d4a1fa68aa18/out
\ No newline at end of file
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/build/crc32fast-e04af526ae6ce3b7/build_script_build-e04af526ae6ce3b7: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/build.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/build/crc32fast-e04af526ae6ce3b7/build_script_build-e04af526ae6ce3b7.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/build.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/build.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch2/target/debug/ch1: /home/yoxem/桌面/TMP/anotherTypesetter/src/ch2/src/main.rs
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/adler-0182d5eec4e8c584.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/adler-1.0.2/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/adler-1.0.2/src/algo.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libadler-0182d5eec4e8c584.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/adler-1.0.2/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/adler-1.0.2/src/algo.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/adler-0182d5eec4e8c584.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/adler-1.0.2/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/adler-1.0.2/src/algo.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/adler-1.0.2/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/adler-1.0.2/src/algo.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/bstr-6f965d594e17b95c.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/ascii.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/bstr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/bstring.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/byteset/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/byteset/scalar.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/escape_bytes.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/ext_slice.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/ext_vec.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/impls.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/io.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_rev.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/regional_indicator_rev.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/sentence_break_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/simple_word_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_rev.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/word_break_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/grapheme.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/sentence.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/whitespace.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/word.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/utf8.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_fwd.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_rev.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/regional_indicator_rev.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/sentence_break_fwd.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/simple_word_fwd.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_fwd.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_rev.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/word_break_fwd.littleendian.dfa
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libbstr-6f965d594e17b95c.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/ascii.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/bstr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/bstring.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/byteset/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/byteset/scalar.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/escape_bytes.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/ext_slice.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/ext_vec.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/impls.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/io.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_rev.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/regional_indicator_rev.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/sentence_break_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/simple_word_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_rev.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/word_break_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/grapheme.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/sentence.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/whitespace.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/word.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/utf8.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_fwd.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_rev.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/regional_indicator_rev.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/sentence_break_fwd.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/simple_word_fwd.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_fwd.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_rev.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/word_break_fwd.littleendian.dfa
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/bstr-6f965d594e17b95c.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/ascii.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/bstr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/bstring.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/byteset/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/byteset/scalar.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/escape_bytes.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/ext_slice.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/ext_vec.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/impls.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/io.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_rev.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/regional_indicator_rev.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/sentence_break_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/simple_word_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_rev.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/word_break_fwd.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/grapheme.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/sentence.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/whitespace.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/word.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/utf8.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_fwd.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_rev.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/regional_indicator_rev.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/sentence_break_fwd.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/simple_word_fwd.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_fwd.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_rev.littleendian.dfa /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/word_break_fwd.littleendian.dfa
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/ascii.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/bstr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/bstring.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/byteset/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/byteset/scalar.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/escape_bytes.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/ext_slice.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/ext_vec.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/impls.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/io.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_fwd.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_rev.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/regional_indicator_rev.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/sentence_break_fwd.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/simple_word_fwd.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_fwd.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_rev.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/word_break_fwd.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/grapheme.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/sentence.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/whitespace.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/word.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/utf8.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_fwd.littleendian.dfa:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/grapheme_break_rev.littleendian.dfa:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/regional_indicator_rev.littleendian.dfa:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/sentence_break_fwd.littleendian.dfa:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/simple_word_fwd.littleendian.dfa:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_fwd.littleendian.dfa:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/whitespace_anchored_rev.littleendian.dfa:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bstr-1.8.0/src/unicode/fsm/word_break_fwd.littleendian.dfa:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/cfg_if-eeaea7e5ccc9d40b.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/cfg-if-1.0.0/src/lib.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libcfg_if-eeaea7e5ccc9d40b.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/cfg-if-1.0.0/src/lib.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/cfg_if-eeaea7e5ccc9d40b.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/cfg-if-1.0.0/src/lib.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/cfg-if-1.0.0/src/lib.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch2/target/debug/deps/ch1-571608d5caa3a7e9: src/main.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch2/target/debug/deps/ch1-571608d5caa3a7e9.d: src/main.rs
+
+src/main.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch2/target/debug/deps/ch1-64fd7589b03ecc71: src/main.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch2/target/debug/deps/ch1-64fd7589b03ecc71.d: src/main.rs
+
+src/main.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/crc32fast-4c6a17386c04a5f4.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/baseline.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/combine.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/specialized/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/table.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/specialized/pclmulqdq.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libcrc32fast-4c6a17386c04a5f4.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/baseline.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/combine.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/specialized/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/table.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/specialized/pclmulqdq.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/crc32fast-4c6a17386c04a5f4.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/baseline.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/combine.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/specialized/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/table.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/specialized/pclmulqdq.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/baseline.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/combine.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/specialized/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/table.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/src/specialized/pclmulqdq.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/deranged-3dfbe937fbc1f956.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/deranged-0.3.9/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/deranged-0.3.9/src/traits.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libderanged-3dfbe937fbc1f956.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/deranged-0.3.9/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/deranged-0.3.9/src/traits.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/deranged-3dfbe937fbc1f956.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/deranged-0.3.9/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/deranged-0.3.9/src/traits.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/deranged-0.3.9/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/deranged-0.3.9/src/traits.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/encoding_rs-cc76ca0a9677f04b.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/big5.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/euc_jp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/euc_kr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/gb18030.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/iso_2022_jp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/replacement.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/shift_jis.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/single_byte.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/utf_16.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/utf_8.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/x_user_defined.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/ascii.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/data.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/handles.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/variant.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/mem.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libencoding_rs-cc76ca0a9677f04b.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/big5.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/euc_jp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/euc_kr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/gb18030.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/iso_2022_jp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/replacement.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/shift_jis.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/single_byte.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/utf_16.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/utf_8.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/x_user_defined.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/ascii.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/data.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/handles.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/variant.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/mem.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/encoding_rs-cc76ca0a9677f04b.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/big5.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/euc_jp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/euc_kr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/gb18030.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/iso_2022_jp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/replacement.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/shift_jis.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/single_byte.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/utf_16.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/utf_8.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/x_user_defined.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/ascii.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/data.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/handles.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/variant.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/mem.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/macros.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/big5.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/euc_jp.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/euc_kr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/gb18030.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/iso_2022_jp.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/replacement.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/shift_jis.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/single_byte.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/utf_16.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/utf_8.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/x_user_defined.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/ascii.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/data.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/handles.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/variant.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.33/src/mem.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/flate2-99a05eca864c841b.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/bufreader.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/crc.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/bufread.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/read.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/write.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/ffi/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/ffi/rust.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/bufread.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/read.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/write.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/mem.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zio.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/bufread.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/read.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/write.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libflate2-99a05eca864c841b.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/bufreader.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/crc.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/bufread.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/read.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/write.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/ffi/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/ffi/rust.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/bufread.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/read.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/write.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/mem.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zio.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/bufread.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/read.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/write.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/flate2-99a05eca864c841b.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/bufreader.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/crc.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/bufread.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/read.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/write.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/ffi/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/ffi/rust.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/bufread.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/read.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/write.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/mem.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zio.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/bufread.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/read.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/write.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/bufreader.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/crc.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/bufread.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/read.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/deflate/write.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/ffi/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/ffi/rust.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/bufread.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/read.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/gz/write.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/mem.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zio.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/bufread.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/read.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/zlib/write.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/itoa-51337cb1070310ee.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/udiv128.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libitoa-51337cb1070310ee.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/udiv128.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/itoa-51337cb1070310ee.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/udiv128.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/udiv128.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/linked_hash_map-274411b391965ec3.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/linked-hash-map-0.5.6/src/lib.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/liblinked_hash_map-274411b391965ec3.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/linked-hash-map-0.5.6/src/lib.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/linked_hash_map-274411b391965ec3.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/linked-hash-map-0.5.6/src/lib.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/linked-hash-map-0.5.6/src/lib.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/log-ff52d271b435a12b.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/serde.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/__private_api.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/liblog-ff52d271b435a12b.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/serde.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/__private_api.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/log-ff52d271b435a12b.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/serde.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/__private_api.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/macros.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/serde.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/__private_api.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/lopdf-98f406925f71e5b3.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/object.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/datetime.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/document.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/incremental_document.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/object_stream.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/xref.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/bookmarks.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/outlines.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/destinations.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/toc.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/content.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/creator.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encodings/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encodings/glyphnames.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encodings/mappings.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encryption.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/error.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/filters/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/filters/png.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/parser.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/parser_aux.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/processor.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/reader.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/rc4.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/writer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/xobject.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/../README.md
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/liblopdf-98f406925f71e5b3.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/object.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/datetime.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/document.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/incremental_document.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/object_stream.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/xref.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/bookmarks.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/outlines.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/destinations.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/toc.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/content.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/creator.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encodings/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encodings/glyphnames.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encodings/mappings.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encryption.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/error.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/filters/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/filters/png.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/parser.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/parser_aux.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/processor.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/reader.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/rc4.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/writer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/xobject.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/../README.md
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/lopdf-98f406925f71e5b3.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/object.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/datetime.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/document.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/incremental_document.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/object_stream.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/xref.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/bookmarks.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/outlines.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/destinations.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/toc.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/content.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/creator.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encodings/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encodings/glyphnames.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encodings/mappings.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encryption.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/error.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/filters/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/filters/png.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/parser.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/parser_aux.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/processor.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/reader.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/rc4.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/writer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/xobject.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/../README.md
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/object.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/datetime.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/document.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/incremental_document.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/object_stream.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/xref.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/bookmarks.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/outlines.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/destinations.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/toc.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/content.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/creator.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encodings/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encodings/glyphnames.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encodings/mappings.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/encryption.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/error.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/filters/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/filters/png.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/parser.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/parser_aux.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/processor.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/reader.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/rc4.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/writer.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/xobject.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lopdf-0.31.0/src/../README.md:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/md5-e0523b00465f30df.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/md5-0.7.0/src/lib.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libmd5-e0523b00465f30df.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/md5-0.7.0/src/lib.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/md5-e0523b00465f30df.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/md5-0.7.0/src/lib.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/md5-0.7.0/src/lib.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/memchr-01dbc4587e7dba77.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/default_rank.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/rabinkarp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/shiftor.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/twoway.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/cow.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/ext.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/searcher.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/vector.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libmemchr-01dbc4587e7dba77.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/default_rank.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/rabinkarp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/shiftor.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/twoway.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/cow.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/ext.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/searcher.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/vector.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/memchr-01dbc4587e7dba77.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/default_rank.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/rabinkarp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/shiftor.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/twoway.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/packedpair.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/cow.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/ext.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/searcher.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/vector.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/macros.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/packedpair/default_rank.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/rabinkarp.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/shiftor.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/all/twoway.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/generic/packedpair.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/avx2/packedpair.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/sse2/packedpair.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/arch/x86_64/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/cow.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/ext.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/memmem/searcher.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.6.4/src/vector.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/miniz_oxide-2a7f98f5c03174c8.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/buffer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/core.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/stream.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/core.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/output_buffer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/stream.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/shared.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libminiz_oxide-2a7f98f5c03174c8.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/buffer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/core.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/stream.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/core.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/output_buffer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/stream.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/shared.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/miniz_oxide-2a7f98f5c03174c8.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/buffer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/core.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/stream.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/core.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/output_buffer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/stream.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/shared.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/buffer.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/core.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/deflate/stream.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/core.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/output_buffer.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/inflate/stream.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/miniz_oxide-0.7.1/src/shared.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/owned_ttf_parser-fed9c257719ebb29.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/owned_ttf_parser-0.12.1/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/owned_ttf_parser-0.12.1/src/convert.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/owned_ttf_parser-0.12.1/src/owned.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libowned_ttf_parser-fed9c257719ebb29.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/owned_ttf_parser-0.12.1/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/owned_ttf_parser-0.12.1/src/convert.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/owned_ttf_parser-0.12.1/src/owned.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/owned_ttf_parser-fed9c257719ebb29.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/owned_ttf_parser-0.12.1/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/owned_ttf_parser-0.12.1/src/convert.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/owned_ttf_parser-0.12.1/src/owned.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/owned_ttf_parser-0.12.1/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/owned_ttf_parser-0.12.1/src/convert.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/owned_ttf_parser-0.12.1/src/owned.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/pom-718a563f4cdb73c4.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/range.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/result.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/set.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/parser.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/char_class.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/utf8.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libpom-718a563f4cdb73c4.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/range.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/result.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/set.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/parser.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/char_class.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/utf8.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/pom-718a563f4cdb73c4.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/range.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/result.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/set.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/parser.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/char_class.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/utf8.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/range.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/result.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/set.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/parser.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/char_class.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pom-3.3.0/src/utf8.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/powerfmt-ab696735fe83b8ed.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/buf.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/ext.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/smart_display.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/smart_display_impls.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libpowerfmt-ab696735fe83b8ed.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/buf.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/ext.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/smart_display.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/smart_display_impls.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/powerfmt-ab696735fe83b8ed.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/buf.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/ext.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/smart_display.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/smart_display_impls.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/buf.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/ext.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/smart_display.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/powerfmt-0.2.0/src/smart_display_impls.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/printpdf-421dea06b0235bd6.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/color.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/ctm.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/date.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/document_info.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/errors.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/extgstate.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/font.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/icc_profile.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/image.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/indices.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/line.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/link_annotation.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/ocg.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pattern.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_conformance.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_document.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_layer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_metadata.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_page.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_resources.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/point.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/rectangle.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/scale.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/utils.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/xmp_metadata.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/xobject.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/gid_to_unicode_beg.txt /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/gid_to_unicode_end.txt /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/catalog_xmp_metadata.txt /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/CoatedFOGRA39.icc
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libprintpdf-421dea06b0235bd6.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/color.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/ctm.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/date.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/document_info.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/errors.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/extgstate.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/font.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/icc_profile.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/image.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/indices.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/line.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/link_annotation.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/ocg.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pattern.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_conformance.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_document.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_layer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_metadata.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_page.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_resources.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/point.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/rectangle.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/scale.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/utils.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/xmp_metadata.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/xobject.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/gid_to_unicode_beg.txt /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/gid_to_unicode_end.txt /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/catalog_xmp_metadata.txt /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/CoatedFOGRA39.icc
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/printpdf-421dea06b0235bd6.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/color.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/ctm.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/date.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/document_info.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/errors.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/extgstate.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/font.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/icc_profile.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/image.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/indices.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/line.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/link_annotation.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/ocg.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pattern.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_conformance.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_document.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_layer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_metadata.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_page.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_resources.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/point.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/rectangle.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/scale.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/utils.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/xmp_metadata.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/xobject.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/gid_to_unicode_beg.txt /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/gid_to_unicode_end.txt /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/catalog_xmp_metadata.txt /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/CoatedFOGRA39.icc
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/color.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/ctm.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/date.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/document_info.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/errors.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/extgstate.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/font.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/icc_profile.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/image.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/indices.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/line.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/link_annotation.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/ocg.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pattern.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_conformance.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_document.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_layer.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_metadata.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_page.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/pdf_resources.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/point.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/rectangle.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/scale.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/utils.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/xmp_metadata.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/xobject.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/gid_to_unicode_beg.txt:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/gid_to_unicode_end.txt:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/catalog_xmp_metadata.txt:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/printpdf-0.6.0/src/../assets/CoatedFOGRA39.icc:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/regex_automata-dce5127eb50ed405.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/dense.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/regex.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/sparse.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/accel.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/automaton.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/search.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/special.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/start.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/alphabet.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/escape.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/iter.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/lazy.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/look.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/aho_corasick.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/byteset.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/memmem.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/teddy.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/primitives.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/start.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/wire.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/empty.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/int.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/search.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/unicode_data/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/utf8.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libregex_automata-dce5127eb50ed405.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/dense.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/regex.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/sparse.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/accel.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/automaton.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/search.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/special.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/start.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/alphabet.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/escape.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/iter.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/lazy.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/look.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/aho_corasick.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/byteset.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/memmem.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/teddy.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/primitives.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/start.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/wire.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/empty.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/int.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/search.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/unicode_data/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/utf8.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/regex_automata-dce5127eb50ed405.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/dense.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/regex.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/sparse.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/accel.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/automaton.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/search.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/special.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/start.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/alphabet.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/escape.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/iter.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/lazy.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/look.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/aho_corasick.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/byteset.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/memmem.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/teddy.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/primitives.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/start.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/wire.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/empty.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/int.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/memchr.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/search.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/unicode_data/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/utf8.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/macros.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/dense.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/regex.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/sparse.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/accel.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/automaton.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/search.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/special.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/dfa/start.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/alphabet.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/escape.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/iter.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/lazy.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/look.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/aho_corasick.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/byteset.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/memmem.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/teddy.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/primitives.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/start.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/wire.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/empty.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/int.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/memchr.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/search.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/unicode_data/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/utf8.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/rsexp-7aaeb6d898ed4c03.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/of_sexp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/parse.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/sexp_of.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/librsexp-7aaeb6d898ed4c03.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/of_sexp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/parse.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/sexp_of.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/rsexp-7aaeb6d898ed4c03.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/of_sexp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/parse.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/sexp_of.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/of_sexp.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/parse.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rsexp-0.2.3/src/sexp_of.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/time-8cb4adb7a60fc61d.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/date.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/date_time.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/duration.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/component_range.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/conversion_range.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/different_variant.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/format.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/invalid_format_description.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/invalid_variant.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/parse.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/parse_from_description.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/try_from_parsed.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/ext.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/borrowed_format_item.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/component.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/modifier.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/owned_format_item.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/ast.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/format_item.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/lexer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/iso8601.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/iso8601/adt_hack.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/rfc2822.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/rfc3339.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/formatting/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/formatting/formattable.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/formatting/iso8601.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/instant.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/internal_macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/month.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/offset_date_time.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/iso8601.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/rfc2234.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/rfc2822.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/component.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/iso8601.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/parsable.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/parsed.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/shim.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/primitive_date_time.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/sys/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/time.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/utc_offset.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/util.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/weekday.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libtime-8cb4adb7a60fc61d.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/date.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/date_time.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/duration.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/component_range.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/conversion_range.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/different_variant.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/format.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/invalid_format_description.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/invalid_variant.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/parse.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/parse_from_description.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/try_from_parsed.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/ext.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/borrowed_format_item.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/component.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/modifier.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/owned_format_item.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/ast.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/format_item.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/lexer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/iso8601.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/iso8601/adt_hack.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/rfc2822.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/rfc3339.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/formatting/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/formatting/formattable.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/formatting/iso8601.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/instant.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/internal_macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/month.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/offset_date_time.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/iso8601.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/rfc2234.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/rfc2822.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/component.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/iso8601.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/parsable.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/parsed.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/shim.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/primitive_date_time.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/sys/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/time.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/utc_offset.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/util.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/weekday.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/time-8cb4adb7a60fc61d.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/date.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/date_time.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/duration.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/component_range.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/conversion_range.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/different_variant.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/format.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/invalid_format_description.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/invalid_variant.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/parse.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/parse_from_description.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/try_from_parsed.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/ext.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/borrowed_format_item.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/component.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/modifier.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/owned_format_item.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/ast.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/format_item.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/lexer.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/iso8601.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/iso8601/adt_hack.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/rfc2822.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/rfc3339.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/formatting/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/formatting/formattable.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/formatting/iso8601.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/instant.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/internal_macros.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/month.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/offset_date_time.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/iso8601.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/rfc2234.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/rfc2822.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/component.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/iso8601.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/parsable.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/parsed.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/shim.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/primitive_date_time.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/sys/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/time.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/utc_offset.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/util.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/weekday.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/date.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/date_time.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/duration.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/component_range.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/conversion_range.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/different_variant.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/format.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/invalid_format_description.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/invalid_variant.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/parse.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/parse_from_description.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/error/try_from_parsed.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/ext.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/borrowed_format_item.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/component.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/modifier.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/owned_format_item.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/ast.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/format_item.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/parse/lexer.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/iso8601.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/iso8601/adt_hack.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/rfc2822.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/format_description/well_known/rfc3339.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/formatting/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/formatting/formattable.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/formatting/iso8601.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/instant.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/internal_macros.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/month.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/offset_date_time.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/iso8601.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/rfc2234.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/combinator/rfc/rfc2822.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/component.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/iso8601.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/parsable.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/parsed.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/parsing/shim.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/primitive_date_time.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/sys/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/time.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/utc_offset.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/util.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.30/src/weekday.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/time_core-013b1ba9325b4c3e.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-core-0.1.2/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-core-0.1.2/src/convert.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-core-0.1.2/src/util.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libtime_core-013b1ba9325b4c3e.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-core-0.1.2/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-core-0.1.2/src/convert.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-core-0.1.2/src/util.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/time_core-013b1ba9325b4c3e.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-core-0.1.2/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-core-0.1.2/src/convert.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-core-0.1.2/src/util.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-core-0.1.2/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-core-0.1.2/src/convert.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/time-core-0.1.2/src/util.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/ttf_parser-2459d90345b8e48d.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/parser.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/ggg.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cbdt.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cblc.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/cff1.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/argstack.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/charset.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/charstring.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/dict.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/index.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/std_names.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format0.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format2.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format4.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format6.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format10.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format12.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format13.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format14.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/gdef.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/glyf.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/head.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/hhea.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/hmtx.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/kern.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/loca.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/maxp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/name.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/os2.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/post.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/sbix.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/svg.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/vhea.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/vorg.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libttf_parser-2459d90345b8e48d.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/parser.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/ggg.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cbdt.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cblc.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/cff1.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/argstack.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/charset.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/charstring.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/dict.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/index.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/std_names.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format0.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format2.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format4.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format6.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format10.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format12.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format13.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format14.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/gdef.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/glyf.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/head.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/hhea.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/hmtx.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/kern.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/loca.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/maxp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/name.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/os2.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/post.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/sbix.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/svg.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/vhea.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/vorg.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/ttf_parser-2459d90345b8e48d.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/parser.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/ggg.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cbdt.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cblc.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/cff1.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/argstack.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/charset.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/charstring.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/dict.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/index.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/std_names.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/mod.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format0.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format2.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format4.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format6.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format10.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format12.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format13.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format14.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/gdef.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/glyf.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/head.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/hhea.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/hmtx.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/kern.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/loca.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/maxp.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/name.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/os2.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/post.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/sbix.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/svg.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/vhea.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/vorg.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/parser.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/ggg.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cbdt.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cblc.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/cff1.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/argstack.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/charset.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/charstring.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/dict.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/index.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cff/std_names.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/mod.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format0.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format2.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format4.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format6.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format10.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format12.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format13.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/cmap/format14.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/gdef.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/glyf.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/head.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/hhea.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/hmtx.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/kern.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/loca.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/maxp.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/name.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/os2.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/post.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/sbix.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/svg.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/vhea.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ttf-parser-0.12.3/src/tables/vorg.rs:
--- /dev/null
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/weezl-0a29435706140fd1.rmeta: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/decode.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/encode.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/error.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/libweezl-0a29435706140fd1.rlib: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/decode.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/encode.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/error.rs
+
+/home/yoxem/桌面/TMP/anotherTypesetter/src/ch1/target/debug/deps/weezl-0a29435706140fd1.d: /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/lib.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/decode.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/encode.rs /home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/error.rs
+
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/lib.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/decode.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/encode.rs:
+/home/yoxem/.cargo/registry/src/index.crates.io-6f17d22bba15001f/weezl-0.1.7/src/error.rs: