parse.js 818 B

1234567891011121314151617181920212223242526272829303132
  1. // Parse patterns in string form into the form we use for interpreting
  2. // (and later, for compiling).
  3. 'use strict';
  4. var ast = require('./pattern');
  5. var parser = require('./parser');
  6. function parse_pattern(string) {
  7. var segments = parser.parse(string);
  8. for (var i=0, len = segments.length; i < len; i++) {
  9. var s = segments[i];
  10. if (s.string != undefined) {
  11. segments[i] = ast.string(s.string);
  12. }
  13. else if (s.value != undefined) {
  14. segments[i] = ast.value(s.value, s.size, s.specifiers);
  15. }
  16. else if (s.name != undefined) {
  17. segments[i] = ast.variable(s.name, s.size, s.specifiers);
  18. }
  19. else {
  20. throw "Unknown segment " + s;
  21. }
  22. }
  23. return segments;
  24. }
  25. module.exports.parse = function() {
  26. var str = [].join.call(arguments, ',');
  27. return parse_pattern(str);
  28. };