我面臨著一個長期展望的規則問題
以使用整數或分數的決議器為例,分數GAP在分子中也沒有s(但是它可能GAP在分子和 之間有s SLASH)
正則運算式[0-9_ ]*?([0-9] \/[0-9_ ] )|[0-9_ ] 描述了有效輸入,您可以在此處查看一些示例。
這是一種寫法
Value: Integer | Fraction;
Fraction: IntegerTokenStar DigitPlus GapStar SLASH IntegerToken
DigitPlus: DIGIT DigitPlus | DIGIT
GapStar: GAP GapStar | %empty
Integer: IntegerTokenPlus
IntegerToken: DIGIT | GAP
IntegerTokenStar: IntegerToken IntegerTokenStar | %empty
IntegerTokenPlus: IntegerToken IntegerTokenPlus | IntegerToken
但是它甚至無法決議像這樣的例子0 0/0,IntegerTokenStar 將盡可能多地消耗,然后嘗試決議沒有可用數字的分子,嘗試繼續使用整數是不可能的,因為它有一個“/”。
如何以概念上清晰的方式撰寫它,并且我們可以生成一個有效的決議器。
例子
一些字串和預期的 (i) 整數部分、(n) 分子、(d) 分母。
1_1_ 1___/1_1 -> fraction {i:"1_1_ ",n:"1___", d:"1_1"}
1_1_ 1___1_1 -> integer {i:"1_1_ 1___1_1",n:"", d:""}
1_1_1___/1_1 -> fraction {i:"",n:"1_1_1___",d:"1_1"}
壓裂
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/354813.html
上一篇:使用JacksonObjectMapper將JSON反序列化為JavaPOJO時如何將日期字串正確決議為java.util.Date
