Rust有什麼好用的parser generator

時間 2021-10-25 23:30:18

1樓:MashPlant

推薦我自己寫的

GitHub - MashPlant/lalr1: An LALR1(1)/LL(1) parser generator in Rust, for multiple languages.

同樣使用過程巨集,語法稍微繁瑣些,但能很好地配合IDE使用。支援優先順序和結合性,四則運算的例子如下:

struct

Parser

;#[parser_macros::lalr1(Expr)]#[lex = r##

"priority = [ # only useful in lalr1 mode,,

,,][lexical]

'\(' = 'LPar'

'\)' = 'RPar'

'\+' = 'Add'

'-' = 'Sub'

'\*' = 'Mul'

'/' = 'Div'

'%' = 'Mod'

'\d+' = 'IntLit'

'\s+' = '_Eps'

"##]

impl

Parser

#[rule =

"Expr -> Expr Sub Expr"]fnexpr_sub

(l: i32

,_op: Token

,r: i32

)-> i32

#[rule =

"Expr -> Expr Mul Expr"]fnexpr_mul

(l: i32

,_op: Token

,r: i32

)-> i32

#[rule =

"Expr -> Expr Div Expr"]fnexpr_div

(l: i32

,_op: Token

,r: i32

)-> i32

#[rule =

"Expr -> Expr Mod Expr"]fnexpr_mod

(l: i32

,_op: Token

,r: i32

)-> i32

#[rule =

"Expr -> Sub Expr"

]#[prec =

"UMinus"]fn

expr_neg

(_op: Token

,r: i32

)-> i32

#[rule =

"Expr -> LPar Expr RPar"]fnexpr_paren

(_l: Token

,i: i32

,_r: Token

)-> i32

#[rule =

"Expr -> IntLit"]fn

expr_int

(i: Token

)-> i32}fn

main()

有什麼好用的滑鼠?

國榮 工作滑鼠和遊戲滑鼠兩種吧,工作滑鼠的話不太瞭解,羅技那個mx好像不錯,遊戲滑鼠只瞭解fps類的滑鼠 大概分對稱,人體工程學兩種 對稱的話 endgame gear xm1 第二版很好用,塗層細膩,汗手一點也不怕,線材應該是我用過最輕的了 gpw 現在在用,沒有線材束縛真挺爽的,18cm手正正好...

有什麼好用的文具

山不過來 高二文科狗別的沒有就是文具多 筆類最常使用的就是三菱155和斑馬防暈染的,三菱um155非常順滑!寫作業必備!斑馬的也是筆記專用,上課記也不會字太亂 紅筆之前最常用的百樂p500,然後太長壽了用煩了就換了斑馬復古酒紅,都很順滑好用 但輕鬆熊那個不推薦,感覺顏色太輕浮了 熒光筆我就這些,都是...

有什麼好用的Android Studio的外掛值得推薦?

唔,看到了不少不錯了外掛。大多數推薦的外掛都是正能量的,有利於提高大家的開發效率。我來推薦一個負能量的外掛 SmartQQ,這是一個防Boss的外掛,可以在Intellij的IDE使用SmartQQ協議進行聊天。 MsCindy 發現了這個把答案放這兒留著以後用。 鄭海波 Android Codeg...

有什麼好用的眼罩推薦

Slim居家測評師 最痛苦的事情,就是睡不著!每個失眠的夜晚,只能在數羊咩咩和餃子,還有就是在床上翻來覆去中度過。第二天帶著厚厚的黑眼圈出門,實在是影響形象。今天給大家安利幾款睡眠眼罩,既能遮光助眠,顏值也夠高。Sleepsheep慢回彈眼罩是3D立體造型,依循人體臉部生理結構舒適的弧度來設計,戴上...

有什麼好用的護手霜嗎?

Angel 雖然說一到了秋冬,哪兒都乾燥!我們都知道到秋冬啊,我們需要給我們的臉做好補水 做好保溼,但是我們是不是忘掉了我們的手,其實比我們的臉更加容易乾燥缺水,真的是要每天洗十幾次手,還要消毒,然後手就變得特別的乾燥,而且還會長倒刺!護手霜的話有幾個點要好聞,好用,便宜,不油膩,清爽等等最後我選了...