parser-combinator
Version:
Parser combinators
43 lines (31 loc) • 1.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _index = require('../../parsec/index');
var _index2 = require('../../stream/index');
var _index3 = _interopRequireDefault(_index2);
var _token = require('./token');
var _token2 = _interopRequireDefault(_token);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* TODO mix spaces & tab bug " \t " will not be accepted
known issue: non-breakable spaces are not recognised
*/
function codeLine() {
return _index.C.char('\n').optrep().thenRight(_token2.default.fourSpacesBlock()).thenRight(_token2.default.fourSpacesBlock()).thenRight(_token2.default.rawTextUntilChar('\n', true)).map(function (text) {
return { code: text };
});
} /**
* Created by Simon on 03/01/2017.
*/
function parseCodeLine(line) {
var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
return codeLine().parse(_index3.default.ofString(line), offset);
}
exports.default = {
codeLine: codeLine,
parse: function parse(line) {
return parseCodeLine(line, 0);
}
};
//# sourceMappingURL=code-line-parser.js.map