Skip to content

Lookahead matcher with TREAT incremental match caching for Eclipse-IncQuery project of BUTE university

License

Notifications You must be signed in to change notification settings

Rudolfking/TreatLookaheadMatcher

Repository files navigation

TreatLookaheadMatcher

TREAT regisztráció és használat:

TreatRegistrarImpl.LookaheadToEngineConnector.Connect(engine, new LookaheadMatcherTreat(engine)); LookaheadMatcherTreat lmt = TreatRegistrarImpl.LookaheadToEngineConnector.GetLookaheadMatcherTreat(engine); lmt.PowerTreatUp(RouteSensorQuerySpecification.instance()); Multiset result = lmt.matchThePattern(RouteSensorQuerySpecification.instance());

i. elem kivétele egy eredményből (csak index alapján támogatott az elem kivétele): LookaheadMatching oneItem = result.iterator().next(); oneItem.get(i);

TREAT engine törlés (csak egyet):

by LookaheadMatcherTreat: TreatRegistrarImpl.LookaheadToEngineConnector.RemoveLookaheadMatcherTreat(LookaheadMatcherTreat lmt);

by IncQueryEngine: TreatRegistrarImpl.LookaheadToEngineConnector.RemoveLookaheadMatcherTreat(IncQueryEngine engine);

TREAT engine törlés (minden engine-re minden LookaheadMatcherTreat-ot):

TreatRegistrarImpl.LookaheadToEngineConnector.Clean();

LookaheadMatcher

LookaheadMatcher útmutató: LookaheadMatcherInterface való mindenre.

Inicializálás (NavigationHelper):

ctor: LookaheadMatcherInterface(NavigationHelper navHelper) InitializeAll(PQuery query, IncQueryEngine engine): inicializál az adott queryre mindent a NavigationHelper-be, végigmegy a minthaívási fán is (find/nac) initialize(PQuery query): egy patternre inicializál. Ha nincs inicializálva, akkor is detektálja és megteszi illesztés előtt a LookaheadMatcher.

Belső struktúra: AheadStructure (keresett, megtalált kényszerek, illeszkedések stb.) Lekérése: PatternOnlyProcess(..)

Minta illesztése:

Létezik-e? tryMatch(..) Összes: matchAll(..) Kiindulás rész-illeszkedésből (ahol már kényszerek is kielégítettek): searchChangesAll(..)

Ha néhány változó ismert, elég a matchAll(..)-t, vagy a tryMatch(..)-ot hívni, átadva az ismert értékeket. pl.: pattern Lista(A,B,C,D,E,F) = {..}; A kereső hívásakor a knownValues pedig pl.: new ArrayList(ismert, null, null, ismert2, ismert3, ismert4); Lényeg, hogy 'null' legyen ott, ahol nem ismerünk valamit.

Két interfész létezik, amit lehet implementálni, de létezik belső (vagy buta) megoldás: IPartialPatternCacher: a hívott find/negfind mintákat lehet ebben cache-elni, így gyorsítva az illesztést. Buta implementációja: költségre végtelent becsül, felsorolás esetén mintailleszt nulláról IConstraintEnumerator: a kényszereken iterálhatunk végig kedvünkre, a költségbecslésbe is belenyúlhatunk. A belső implementáció (ha null-t adnánk meg e helyére) eléggé jól működik.

Példa hívás:

lookahead = new LookaheadMatcherInterface(engine.getBaseIndex()); lookahead.InitializeAll(RouteSensorQuerySpecification.instance(), engine); Multiset result = lookahead.matchAll(engine, null, RouteSensorQuerySpecification.instance(), null, null);

A visszatérési érték itt is Multiset. Így: i. elem kivétele egy eredményből (csak query paraméter index alapján támogatott az elem kivétele): LookaheadMatching oneItem = result.iterator().next(); oneItem.get(i);

About

Lookahead matcher with TREAT incremental match caching for Eclipse-IncQuery project of BUTE university

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages