[英]Patter for byte when I got pattern for numbers in lexer
我在詞法分析器中有數字模式
$digit=0-9
$digit+ { \s -> TNum (readRational s) }
我想為字節添加另一種模式。 字節包含從 diaposon 0 - f 的 2 個符號。 我應該為字節寫哪種模式? 它會正確區分 11:: byte 和 11:: num 嗎?
如果您在詞法分析器中添加兩個重疊模式,那么它將失敗或只是 select 其中之一(我不知道 alex 的確切行為),所以這可能不是您想要的。
如果我理解正確,這里實際上有兩個問題:
解決問題 1 的常用方法是為十六進制數字添加前綴。 C 為此使用前綴0x
。 那么 17 將被寫成十六進制的0x11
。
我認為您不應該嘗試在詞法分析器中解決問題 2,只需將數字保留為通用數字類型即可。 稍后在類型檢查期間,您可以確定上下文所需的確切類型,如果沒有其他約束,則默認為一個類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.