!include #1004681 // Concepts sclass SSnippet extends Concept { S snippetID; S text; long grabbedWhen; } sclass JavaTok extends Concept { new Ref onSnippet; S text; L tok; } sclass Substring extends Concept { new Ref from; int startIndex, endIndex; // text of the substring S text() { ret substring(fullText(), startIndex, endIndex); } // text this was taken from S fullText() { ret from.get().text; } } sclass JavaToken extends Substring { new Ref javaTok; int index; int charIndex; *() {} *(JavaTok javaTok, int *index, int *charIndex) { this.javaTok.set(javaTok); from.set(javaTok.onSnippet); startIndex = charIndex; endIndex = startIndex+l(javaTok.tok.get(index)); } S token() { ret text(); } }