2016-03-23 14 views
3

Antlr'de, 18 bitlik bir gösterimde 32 bit tanıyan bir salt sözcük grameri tanımlamaya çalışıyorum. ŞimdilikBir düzenin bir kuralının nasıl tanımlanacağı, belirli bir sayı ile antlr saf lexer dilbilgisi kullanılarak tekrarlanır

Ben:

lexer grammar Grammar; 

WS : [ \r\t\n]+ -> skip; 

fragment HexDigit : ([0-9]|[A-f]|[a-f]); 
fragment HexDigitNoZero : ([1-9]|[A-f]|[a-f]); 
fragment HexNumber : (HexDigitNoZero)(HexDigit)*; 
fragment Eight : HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit; 

Hex :'0x'Eight; 

Ben saf lexer dilbilgisi bir dizi 8 tanımlamak için gidecekseniz eğer herhangi bir şekilde öğrenmek istiyorum. Flex, 'a' {8} ile çalışır.

cevap

1

Bu saf lexer fakat

(HexDigitNoZero)(HexDigit)* {getText().lenght!= 8}? {do_something;}; 

Tecnhically bir yüklemi (eylem olarak aynı ama sonunda ? vardır) olabilir tavsiye için GRAMAR eylemleri

+0

Thx kullanır: Ben Hex kullandı: {gettext() .length() == 8}? '0x' (HexDigitNoZero) (HexDigit) *; ve mükemmel çalıştı. –

+0

Rica ederim. Cevabı kabul ederseniz, bu iyi olurdu. :) – cantSleepNow

İlgili konular