Skip to content

Commit

Permalink
updated _parse_rx() tests, among others
Browse files Browse the repository at this point in the history
  • Loading branch information
Carl Davidson committed Jan 6, 2016
1 parent 6bbb7c1 commit 4dbdf83
Show file tree
Hide file tree
Showing 3 changed files with 161 additions and 206 deletions.
175 changes: 1 addition & 174 deletions peg.test.regex.scad
Original file line number Diff line number Diff line change
@@ -1,178 +1,5 @@
include <peg.scad>
include <strings.scad>

_rx_peg =
_index_peg_refs
(
["grammar",
["private_rule", "operation",
["sequence",
["choice",
["ref", "choice"],
["ref", "sequence"],
["ref", "postfix"],
],
// ["negative_lookahead", ["wildcard"]],
]
],
["private_rule", "postfix",
["choice",
["ref", "many_to_many"],
["ref", "one_to_many"],
["ref", "zero_to_many"],
["ref", "zero_to_one"],
["ref", "primitive"]
],
],

//BINARY OPERATIONS
["rule", "choice",
["sequence",
["choice",
["ref", "sequence"],
["ref", "postfix"]
],
["one_to_many",
["sequence",
["private", ["literal", "|"]],
["choice",
["ref", "sequence"],
["ref", "postfix"]
],
]
]
]
],
["rule", "sequence",
["sequence",
["ref", "postfix"],
["one_to_many",
["ref", "postfix"],
]
]
],

["rule", "positive_lookahead",
["sequence",
["private", ["literal", "(?="]],
["ref", "operation"],
["private", ["literal", ")"]],
]
],
["rule", "negative_lookahead",
["sequence",
["private", ["literal", "(?!"]],
["ref", "operation"],
["private", ["literal", ")"]],
]
],

//UNARY POSTFIX OPERATIONS
["rule", "one_to_many",
["sequence",
["ref", "primitive"],
["private", ["literal", "+"]]
]
],
["rule", "zero_to_many",
["sequence",
["ref", "primitive"],
["private", ["literal", "*"]]
]
],
["rule", "zero_to_one",
["sequence",
["ref", "primitive"],
["private", ["literal", "?"]]
]
],
["rule", "many_to_many",
["sequence",
["ref", "primitive"],
["private", ["literal", "{"]],
["character_set_shorthand", "d"],
["zero_to_one",
["sequence",
["private", ["literal", ","]],
["character_set_shorthand", "d"],
],
],
["private", ["literal", "}"]],
]
],

//PRIMITIVES
["private_rule", "primitive",
["choice",
["ref", "wildcard"],
["ref", "character_set_shorthand"],
["ref", "negative_character_set"],
["ref", "positive_character_set"],
["ref", "negative_lookahead"],
["ref", "positive_lookahead"],
["sequence",
["private", ["literal", "("]],
["ref", "operation"],
["private", ["literal", ")"]],
],
["ref", "literal"],
],
],

["rule", "wildcard",
["private", ["literal", "."]],
],
["rule", "literal",
["negative_character_set",
"{","}","[","]","(",")",
"|","*","+","?",".","\\","."
],
],
["rule", "positive_character_set",
["sequence",
["private", ["literal", "["]],
["one_to_many",
["choice",
["ref", "character_range"],
["ref", "character_set_shorthand"],
["ref", "character_literal"]
]
],
["private", ["literal", "]"]],
]
],
["rule", "negative_character_set",
["sequence",
["private", ["literal", "[^"]],
["one_to_many",
["choice",
["ref", "character_range"],
["ref", "character_set_shorthand"],
["ref", "character_literal"]
]
],
["private", ["literal", "]"]],
]
],
["rule", "character_literal",
["negative_character_set", "]"]
],
["rule", "character_range",
["sequence",
["character_set_shorthand", "w"],
["private", ["literal", "-"]],
["character_set_shorthand", "w"],
],
],
["rule", "character_set_shorthand",
["sequence",
["private", ["literal", "\\"]],
["positive_character_set",
"s","S","d","D","w","W", "\\", "]", "(", ")"
]
]
],
]
);
echo(_unit_test("regex primitives",
[
_match_parsed_peg( "", _rx_peg, peg_op=_get_rule(_rx_peg, "wildcard") )[_PARSED], undef,
Expand Down
12 changes: 10 additions & 2 deletions strings.scad
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,8 @@ _index_peg_refs
//PRIMITIVES
["private_rule", "primitive",
["choice",
["ref", "start"],
["ref", "end"],
["ref", "wildcard"],
["ref", "character_set_shorthand"],
["ref", "negative_character_set"],
Expand All @@ -410,13 +412,20 @@ _index_peg_refs
],
],

["rule", "start",
["private", ["literal", "^"]],
],
["rule", "end",
["private", ["literal", "$"]],
],
["rule", "wildcard",
["private", ["literal", "."]],
],
["rule", "literal",
["negative_character_set",
"{","}","[","]","(",")",
"|","*","+","?",".","\\","."
"|","*","+","?",".","\\",".",
"^","$",
],
],
["rule", "positive_character_set",
Expand Down Expand Up @@ -895,4 +904,3 @@ function _unit_test(name, tests) =
:
str(name, ":\tpassed")
;

Loading

0 comments on commit 4dbdf83

Please sign in to comment.