[英]Fixed number format in ANTLR
如何在反語法中指定固定數字?
我想解析包含固定字符數字段的行。 每個字段都是一個數字。
0034 | 9056 | 4567 | 0987 | -2340 | +345 | 1000
上一行是示例行。 | 指示字段邊界(不會出現在實際文件中。此處顯示的只是指示邊界)。
這些字段可以包含空白字符+/-
我將使詞法分析器語法盡可能簡單,並且在解析器語法中匹配零個或多個空格,后跟一個可選符號,后跟一個數字。 匹配之后,檢查(在解析器語法中)該字段的“寬度”是否正確。
語法示例:
line
: field ('|' field)*
;
field
: Spaces? ('+' | '-')? Number // validate if 'field' is correct in this rule
;
Number
: '0'..'9'+
;
Spaces
: ' '+
;
可能的驗證方案如下所示:
line
: field ('|' field)*
;
field
@init{int length = 0;}
: (Spaces {length += $Spaces.text.length();})?
('+' | '-')? Number {length += $Number.text.length(); if(length != 4) {/* do something */}}
;
Number
: '0'..'9'+
;
Spaces
: ' '+
;
關於以下內容:
INT : ('+'|'-')? ('0'..'9')+;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.