Phase: SCRules Input: Lookup Split Token NounChunk Options: control = appelt Macro: LIST ( ({NounChunk}{Token.string == ","})[0,10] {NounChunk} ({Token.string == ","})? {Token.category == CC} {NounChunk} ) // 5 Rule:SC4 // [A(n) | QUAN] example | examples | [CN] of NP be | include [(NP,)* and] NP // Some examples of peripherals are keyboards, mice, monitors, printers, scanners, disk and tape drives, microphones, speakers, joysticks, // plotters and cameras. // Types of criteria for assessing applications are: quality, safety and efficacy. ( ({Token.category == DT})? ({Lookup.majorType == CN})? ({Token.root == example})? ({Token.category == IN})? ({Lookup.majorType == CN})? ({NounChunk}):superclass ({Lookup.minorType == be}|{Lookup.majorType == include}) ({Token.kind == punctuation})? (LIST):subclass ) --> :superclass.Superclass = {rule="SC4"}, { // "subclass" matches LHS label List annList = new ArrayList((AnnotationSet)bindings.get("subclass")); //sort the list by offset Collections.sort(annList, new OffsetComparator()); //iterate through the matched annotations for(int i = 0; i < annList.size(); i++) { Annotation anAnn = (Annotation)annList.get(i); // check that the new annotation is a NounChunk if ((anAnn.getType().equals("NounChunk")) ) { FeatureMap features = Factory.newFeatureMap(); // change this for a different rule name" features.put("rule", "SC4"); // change "Subclass" for a different annotation name annotations.add(anAnn.getStartNode(), anAnn.getEndNode(), "Subclass", features); } } }