UNPKG

@mistlog/typetype

Version:

A programming language designed for typescript type generation

95 lines (94 loc) 3.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SimpleEscapeSequence = exports.EscapeSequence = exports.SChar = exports.SCharSequence = exports.String = exports.Source = exports.SourceCharacter = void 0; const react_peg_1 = require("react-peg"); const common_1 = require("../common"); function SourceCharacter() { return (react_peg_1.ReactPeg.createChunk("any", null)); } exports.SourceCharacter = SourceCharacter; function Source() { const action = ({ chars }) => { return chars.map((each) => each[1]).join(""); }; return (react_peg_1.ReactPeg.createChunk("pattern", { action: action }, react_peg_1.ReactPeg.createChunk("repeat", { type: "*", label: "chars" }, react_peg_1.ReactPeg.createChunk("assert", { type: "without" }, react_peg_1.ReactPeg.createChunk("text", null, "```")), react_peg_1.ReactPeg.createChunk(SourceCharacter, null)))); } exports.Source = Source; /** * string-literal: encoding-prefixopt" s-char-sequenceopt" encoding-prefixoptR raw-string */ function String() { const action = ({ chars }) => { return chars.join(""); }; return (react_peg_1.ReactPeg.createChunk("pattern", { action: action }, react_peg_1.ReactPeg.createChunk(common_1._, null), react_peg_1.ReactPeg.createChunk("text", null, "\""), react_peg_1.ReactPeg.createChunk(SCharSequence, { label: "chars" }), react_peg_1.ReactPeg.createChunk("text", null, "\""), react_peg_1.ReactPeg.createChunk(common_1._, null))); } exports.String = String; /** * s-char-sequence: s-char s-char-sequence s-char */ function SCharSequence() { return (react_peg_1.ReactPeg.createChunk("repeat", { type: "*" }, react_peg_1.ReactPeg.createChunk(SChar, null))); } exports.SCharSequence = SCharSequence; /** * s-char: any member of the source character set except the double-quote ", backslash \, or new-line character escape-sequence universal-character-name */ function SChar() { return (react_peg_1.ReactPeg.createChunk("or", null, react_peg_1.ReactPeg.createChunk("pattern", { action: ({ char }) => char }, react_peg_1.ReactPeg.createChunk("assert", { type: "without" }, react_peg_1.ReactPeg.createChunk("set", null, "\"\\\\\\n")), react_peg_1.ReactPeg.createChunk(SourceCharacter, { label: "char" })), react_peg_1.ReactPeg.createChunk(EscapeSequence, null))); } exports.SChar = SChar; /** * escape-sequence: simple-escape-sequence octal-escape-sequence hexadecimal-escape-sequence */ function EscapeSequence() { return (react_peg_1.ReactPeg.createChunk(SimpleEscapeSequence, null)); } exports.EscapeSequence = EscapeSequence; /** * simple-escape-sequence: one of \’ \" \? \\ \a \b \f \n \r \t \v */ function SimpleEscapeSequence() { const escape = [ `\\\\\\\'`, `\\\\"`, `\\?`, `\\\\\\\\`, `\\\\a`, `\\\\b`, `\\\\f`, `\\\\n`, `\\\\r`, `\\\\t`, `\\\\v`, ].map(each => (react_peg_1.ReactPeg.createChunk("text", { label: "char" }, each))); return (react_peg_1.ReactPeg.createChunk("or", null, escape)); } exports.SimpleEscapeSequence = SimpleEscapeSequence;