Ignore:
Timestamp:
Oct 3, 2015, 3:31:16 PM (4 years ago)
Author:
nmedfort
Message:

Added union/diff/intersection functionality to RE_Compiler. Removed toUTF8 pass in favour of using the UCD_Compiler.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/UCD/resolve_properties.cpp

    r4809 r4814  
    2828namespace UCD {
    2929
    30 RE * resolvePropertyDefinition(Name * const property) {
     30bool resolvePropertyDefinition(Name * const property) {
    3131    if (property->hasNamespace()) {
    3232        auto propit = alias_map.find(property->getNamespace());
     
    4141                    Name * binprop = makeName(property_enum_name[theprop], Name::Type::UnicodeProperty);
    4242                    property->setDefinition(makeDiff(makeAny(), binprop));
     43                    return true;
    4344                }
    4445            }
     
    4950        if (value == "any") {
    5051            property->setDefinition(makeAny());
    51         }
    52         else if (value == "ascii") {
     52            return true;
     53        } else if (value == "ascii") {
    5354            property->setDefinition(makeName("blk", "ascii", Name::Type::UnicodeProperty));
    54         }
    55         else if (value == "assigned") {
     55            return true;
     56        } else if (value == "assigned") {
    5657            Name * unassigned = makeName("cn", Name::Type::UnicodeProperty);
    5758            property->setDefinition(makeDiff(makeAny(), unassigned));
     59            return true;
    5860        }
    5961        // Now compatibility properties of UTR #18 Annex C
     
    6264            Name * hexdigit = makeName("hexdigit", Name::Type::UnicodeProperty);
    6365            property->setDefinition(makeAlt({digit, hexdigit}));
    64         }
    65         else if (value == "alnum") {
     66            return true;
     67        } else if (value == "alnum") {
    6668            Name * digit = makeName("nd", Name::Type::UnicodeProperty);
    6769            Name * alpha = makeName("alphabetic", Name::Type::UnicodeProperty);
    6870            property->setDefinition(makeAlt({digit, alpha}));
    69         }
    70         else if (value == "blank") {
     71            return true;
     72        } else if (value == "blank") {
    7173            Name * space_sep = makeName("space_separator", Name::Type::UnicodeProperty);
    7274            CC * tab = makeCC(0x09);
    7375            property->setDefinition(makeAlt({space_sep, tab}));
    74         }
    75         else if (value == "graph") {
     76            return true;
     77        } else if (value == "graph") {
    7678            Name * space = makeName("space", Name::Type::UnicodeProperty);
    7779            Name * ctrl = makeName("control", Name::Type::UnicodeProperty);
     
    7981            Name * unassigned = makeName("cn", Name::Type::UnicodeProperty);
    8082            property->setDefinition(makeDiff(makeAny(), makeAlt({space, ctrl, surr, unassigned})));
    81         }
    82         else if (value == "print") {
     83            return true;
     84        } else if (value == "print") {
    8385            Name * graph = makeName("graph", Name::Type::UnicodeProperty);
    8486            Name * space_sep = makeName("space_separator", Name::Type::UnicodeProperty);
    8587            property->setDefinition(makeAlt({graph, space_sep}));
    86         }
    87         else if (value == "word") {
     88            return true;
     89        } else if (value == "word") {
    8890            Name * alnum = makeName("alnum", Name::Type::UnicodeProperty);
    8991            Name * mark = makeName("mark", Name::Type::UnicodeProperty);
     
    9193            Name * join = makeName("joincontrol", Name::Type::UnicodeProperty);
    9294            property->setDefinition(makeAlt({alnum, mark, conn, join}));
     95            return true;
    9396        }
    9497    }
    95     return property->getDefinition();
     98    return false;
    9699}
    97100
Note: See TracChangeset for help on using the changeset viewer.