Commit 26c3a0e2 by Aaron Leung

More tokenizing stuff.

parent d5abc011
int prefix_starts_with_identifier(char *src) {
int p = prefix_is_alphas(src) || prefix_is_exactly(src, "_");
if (!p++) return 0;
while (src[p]) {
int q = prefix_is_alnums(src);
q = q ? q : prefix_is_exactly(src, "_");
if (!q) return p;
p += q;
}
}
DEFINE_EXACT_MATCHER(star, "*");
DEFINE_EXACT_MATCHER(dot, ".");
DEFINE_EXACT_MATCHER(hash, "#");
DEFINE_EXACT_MATCHER(adjacent_to, "+");
DEFINE_EXACT_MATCHER(precedes, "~");
DEFINE_EXACT_MATCHER(parent_of, ">");
int (*prefix_starts_with_ancestor_of)(char *src) = prefix_starts_with_spaces;
DEFINE_EXACT_MATCHER(exclamation, "!");
DEFINE_EXACT_MATCHER(dollar, "$");
DEFINE_EXACT_MATCHER(percent, "%");
DEFINE_EXACT_MATCHER(ampersand, "&");
DEFINE_EXACT_MATCHER(times, "*");
DEFINE_EXACT_MATCHER(comma, ",");
DEFINE_EXACT_MATCHER(hyphen, "-");
DEFINE_EXACT_MATCHER(minus, "-");
DEFINE_EXACT_MATCHER(slash, "/");
DEFINE_EXACT_MATCHER(divide, "/");
DEFINE_EXACT_MATCHER(colon, ":");
DEFINE_EXACT_MATCHER(semicolon, ";");
DEFINE_EXACT_MATCHER(lt, "<");
DEFINE_EXACT_MATCHER(lte, "<=");
DEFINE_EXACT_MATCHER(gt, ">");
DEFINE_EXACT_MATCHER(parent_of, ">");
DEFINE_EXACT_MATCHER(gte, ">=");
enum sss_type {
enum prefix_pattern_type {
ATOM,
SEQUENCE,
CHOICE,
......@@ -13,12 +13,12 @@ enum sss_type {
typedef struct {
sss_type tag;
prefix_pattern_type tag;
int (*matcher)(char *);
} sss_component;
} prefix_pattern_component;
typedef struct {
int length;
sss_component *body;
} sss_pattern;
prefix_pattern_component *body;
} prefix_pattern;
......@@ -66,29 +66,3 @@ DEFINE_EXACT_MATCHER(lbrack, "[");
DEFINE_EXACT_MATCHER(rbrack, "]");
DEFINE_EXACT_MATCHER(lbrace, "{");
DEFINE_EXACT_MATCHER(rbrace, "}");
DEFINE_EXACT_MATCHER(asterisk, "*");
/* not sure I'm gonna' need these
DEFINE_EXACT_MATCHER(exclamation, "!");
DEFINE_EXACT_MATCHER(pound, "#");
DEFINE_EXACT_MATCHER(hash, "#");
DEFINE_EXACT_MATCHER(dollar, "$");
DEFINE_EXACT_MATCHER(percent, "%");
DEFINE_EXACT_MATCHER(ampersand, "&");
DEFINE_EXACT_MATCHER(lparen, "(");
DEFINE_EXACT_MATCHER(rparen, ")");
DEFINE_EXACT_MATCHER(times, "*");
DEFINE_EXACT_MATCHER(comma, ",");
DEFINE_EXACT_MATCHER(hyphen, "-");
DEFINE_EXACT_MATCHER(minus, "-");
DEFINE_EXACT_MATCHER(period, ".");
DEFINE_EXACT_MATCHER(dot, ".");
DEFINE_EXACT_MATCHER(slash, "/");
DEFINE_EXACT_MATCHER(divide, "/");
DEFINE_EXACT_MATCHER(colon, ":");
DEFINE_EXACT_MATCHER(semicolon, ";");
DEFINE_EXACT_MATCHER(lt, "<");
DEFINE_EXACT_MATCHER(lte, "<=");
DEFINE_EXACT_MATCHER(gt, ">");
DEFINE_EXACT_MATCHER(gte, ">=");
*/
\ No newline at end of file
......@@ -53,3 +53,9 @@ DECLARE_MATCHER(double_quoted_string);
DECLARE_MATCHER(single_quoted_string);
DECLARE_MATCHER(interpolant);
DECLARE_MATCHER(string);
DECLARE_MATCHER(lparen);
DECLARE_MATCHER(rparen);
DECLARE_MATCHER(lbrack);
DECLARE_MATCHER(rbrack);
DECLARE_MATCHER(lbrace);
DECLARE_MATCHER(rbrace);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment