{
  "name": "unicode_classes",

  "extras": [
    {"type": "PATTERN", "value": "\\s"}
  ],

  "rules": {
    "program":  {
      "type": "REPEAT",
      "content": {
        "type": "CHOICE",
        "members": [
          {"type": "SYMBOL", "name": "lower"},
          {"type": "SYMBOL", "name": "upper"},
          {"type": "SYMBOL", "name": "math_sym"},
          {"type": "SYMBOL", "name": "letter_number"}
        ]
      }
    },

    "lower": {
      "type": "PATTERN",
      "value": "\\p{Ll}\\p{L}*"
    },

    "upper": {
      "type": "PATTERN",
      "value": "\\p{Lu}\\p{L}*"
    },

    "math_sym": {
      "type": "PATTERN",
      "value": "\\p{Sm}+"
    },

    "letter_number": {
      "type": "PATTERN",
      "value": "\\p{Letter_Number}"
    }
  }
}
