簡體   English   中英

ANTLR中的固定數字格式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM