vba/vb6 için bir .g4 dilbilgisi sahibiyim, burada lexer satır devamı tokens'larını atlıyor - ayrıştırmak onları ayırmıyor ve bir seçenek değil. Bu neden oluyorBelirsiz kod dilbilgilerime aykırı
LINE_CONTINUATION : ' ' '_' '\r'? '\n' -> skip;
sorun, sürekli çizgi 1. sütun başlar ne zaman, ayrıştırıcı patlarsa olmasıdır: Burada söz konusu lexer kuralıdır
Sub Test() Debug.Print "Some text " & _ vbNewLine & "Some more text" End Sub
Ben Hey biliyorum" düşündüm! Alt çizgiden önce fazladan bir boşluk eklemek için ANTLR'yi beslediğim dizeyi önceden işleyeceğim ve kabul etmek için dilbilgisini değiştireceğim! "
Yani böyle kuralı değiştirdi:LINE_CONTINUATION : WS? WS '_' NEWLINE -> skip;
NEWLINE : WS? ('\r'? '\n') WS?;
WS : [ \t]+;
... ve test vba Yukarıdaki kod bana bu ayrıştırıcı hata verdi: şimdi benim tek çözüm söylemektir için
extraneous input 'vbNewLine' expecting WS
benim kullanıcılar kodlarını uygun şekilde girebilir. Bu dilbilgisi kuralını düzeltebileceğim bir yol var mı?
Neden WS'ye LINE_CONTINUATION eklemiyorsunuz? –
@IraBaxter 'WS' birçok yerde kullanılmaktadır. Ne demek istiyorsun? –
Temel olarak çizgi devamının beyaz boşluk gibi görünmesini istiyorsunuz. Tamam, daha sonra satır devam etmesinin sözdizimini WS belirtecine ekleyin. –