ANTLR3 grammatikasini muntazam ifodaga aylantirish mumkinmi?

Menda ANTLR3 oddiy grammatika tahlilchisi bor, u matnning qisqa satrlarini oladi va ularni Java obyektlariga aylantiradi. Keyinchalik, menda matn satrlarining katta ro'yxati bor. Ulardan ba'zilari (1% dan kam) grammatikaga mos kelishi sababli aylantirilishi mumkin.

Qaysi biri konvertatsiya qilinishini tushunish va Java ob'ektlari to'plamini yaratish uchun men ularning barchasini tahlilchi orqali o'tkazishim kerak. Juda ko'p vaqt talab qiladigan operatsiya. ANTLR3 ga yuborishdan oldin ularni muntazam ifoda orqali o'tkazish ancha samaraliroq bo'lar edi.

Men bunday regexni o'zim yarata olaman, lekin uni ANTLR3 tahlilchisidan dinamik ravishda olish ancha yaxshi bo'lardi. Qilish mumkinmi?


person yegor256    schedule 15.03.2011    source manba
comment
Bir oz bog'liq emas, lekin qat'iy bir qator-bir ob'ekt munosabati mavjud bo'lsa, ishlov berishni osongina parallellashtirishingiz mumkin.   -  person biziclop    schedule 16.03.2011


Javoblar (2)


Umuman olganda, faqat oddiy tillarda ularni tavsiflovchi muntazam ibora bo'lishi mumkin. (Ko'pchilik RE-motorlari ba'zi bir noodatiy tillarga (masalan, orqaga havolalar orqali) mos keladigan xususiyatlarni qo'llab-quvvatlaydi, lekin baribir hamma kontekstsiz yoki hatto umumiy rasmiy tillarga emas.)

Men antlr-mutaxassis emasman, lekin uning grammatikalari qayta mos kelmaydigan tillarga mos kelishi mumkin deb o'ylayman.

Shunday qilib, sizning muammoingizning nazariy echilishi haqiqatan ham berilmagan, bu grammatikaga bog'liq.

Bu shunday bo'lishi mumkin

  • Sizning grammatikangiz aslida oddiy grammatika yoki
  • Sizning grammatika tilingizning biroz yuqori to'plami bo'lgan oddiy til mavjudligi - shuning uchun RE mos kelmaydigan qatorlarni filtrlashi mumkin, ba'zilari esa faqat grammatika/parser tomonidan filtrlanadi.

Grammatikangizni ko'rmasdan ishonch hosil qilishning aniq usuli yo'q.

Bundan tashqari, muntazam ifoda sizning parseringizdan tezroq bo'lishi shart emas.

person Paŭlo Ebermann    schedule 15.03.2011
comment
Til nazariyasi uchun +1 va ma'lum bir noodatiy tilning biroz ustunligi bo'lgan muntazam til mavjudligini kuzatish uchun - men buni ilgari o'ylamaganman. - person Aasmund Eldhuset; 16.03.2011

ANTLRga xos bo'lish uchun LL(*) quyi sinfini kontekstdan bepul grammatikalar.

Tilingiz Oddiy ekanligini aniqlash uchun oddiy tillar uchun nasos lemmasi ni qo‘llay olasizmi yoki yo‘qligini tekshiring.

person Matthew Sowders    schedule 15.03.2011