How to use the parsimmon.string function in parsimmon

To help you get started, we’ve selected a few parsimmon examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github osnr / livegb / lib / assembler / macro.ts View on Github external
seq(string(';'), takeWhile(c => c !== '\n'), string('\n')),
    string('\n')
  )
);

type Macro = { kind: 'macro', name: string; body: string; };

const equ: Parser = seqMap(
  optLineSpace.then(token).skip(lineSpace), string('EQU').skip(lineSpace),
  takeWhile(c => c !== ';' && c !== '\n'), eol,
  (name, _, body, _2) => ({ kind: 'macro', name, body } as Macro)
);

const equs: Parser = seqMap(
  optLineSpace.then(token).skip(lineSpace), string('EQUS').skip(lineSpace),
  string('"').then(takeWhile(c => c !== '"')).skip(string('"')), eol,
  (name, _, body, _2) => ({ kind: 'macro', name, body } as Macro)
);

// This parser needs to be information-preserving.
type Statement = { kind: 'statement', tokens: string[] };

const statement: Parser =
  optLineSpace.then(
    alt(token, lineSpace)
      .many()
      .map((tokens) => ({ kind: 'statement', tokens } as Statement))
  ).skip(eol);

const file: Parser<(Macro|Statement)[]> = alt(
  equs,
  equ,
github mysql / mysql-connector-nodejs / lib / ExprParser / lib / grammar / booleanExpressions / castOp.js View on Github external
const parser = options => r => Pa
    .seq(
        r.CAST,
        Pa.string('('),
        Pa.optWhitespace,
        r.expr.map(data => data.output),
        Pa.whitespace,
        r.AS,
        Pa.whitespace,
        r.castType,
        Pa.optWhitespace,
        Pa.string(')')
    )
    .map(data => {
        const operator = new Operator();
        operator.setName(data[0]);
        operator.addParam(data[3]);
        operator.addParam(data[7]);

        const expr = new Expr();
github mysql / mysql-connector-nodejs / lib / ExprParser / lib / index.js View on Github external
Pa.string('MINUTE_MICROSECOND'),
                Pa.string('MINUTE_SECOND'),
                Pa.string('MINUTE'),
                Pa.string('HOUR_MICROSECOND'),
                Pa.string('HOUR_SECOND'),
                Pa.string('HOUR_MINUTE'),
                Pa.string('HOUR'),
                Pa.string('DAY_MICROSECOND'),
                Pa.string('DAY_SECOND'),
                Pa.string('DAY_MINUTE'),
                Pa.string('DAY_HOUR'),
                Pa.string('DAY'),
                Pa.string('WEEK'),
                Pa.string('MONTH'),
                Pa.string('QUARTER'),
                Pa.string('YEAR_MONTH'),
                Pa.string('YEAR')
            );
        },
github mysql / mysql-connector-nodejs / lib / ExprParser / lib / index.js View on Github external
INTERVAL_UNIT () {
            return Pa.alt(
                Pa.string('MICROSECOND'),
                Pa.string('SECOND_MICROSECOND'),
                Pa.string('SECOND'),
                Pa.string('MINUTE_MICROSECOND'),
                Pa.string('MINUTE_SECOND'),
                Pa.string('MINUTE'),
                Pa.string('HOUR_MICROSECOND'),
                Pa.string('HOUR_SECOND'),
                Pa.string('HOUR_MINUTE'),
                Pa.string('HOUR'),
                Pa.string('DAY_MICROSECOND'),
                Pa.string('DAY_SECOND'),
                Pa.string('DAY_MINUTE'),
                Pa.string('DAY_HOUR'),
                Pa.string('DAY'),
                Pa.string('WEEK'),
                Pa.string('MONTH'),
                Pa.string('QUARTER'),
                Pa.string('YEAR_MONTH'),
                Pa.string('YEAR')
            );
        },
github sider / TyScan / src / typePattern / parser.ts View on Github external
  LBRACK: _ => P.string('[').trim(P.optWhitespace),
github sider / TyScan / dist / pattern / type / parser.js View on Github external
    GT: _ => P.string('>').trim(P.optWhitespace),
    COLON: _ => P.string(':').trim(P.optWhitespace),
github kantord / emuto / src / parsers / projection.js View on Github external
(
      segments: [
        SimpleObjectProjectionItemType,
        [WrappedObjectProjectionNodeType]
      ]
    ): ObjectProjectionItemType =>
      segments[1].length === 0
        ? segments[0]
        : {
          type: 'RecursiveItem',
          name: segments[0].value,
          value: segments[1][0]
        }
  )

  const AliasParser = P.seq(SimpleItemParser, P.string(':').trim(crap))

  const AliasableItemParser = P.seq(
    AliasParser.atMost(1),
    RecursiveItemParser
  ).map(
    ([alias, item]: [
      [ObjectProjectionNodeType, string],
      ObjectProjectionNodeType
    ]): ObjectProjectionNodeType =>
      alias.length === 1 ? { ...item, alias: alias[0][0].value } : item
  )

  const FragmentParser = P.string('...')
    .then(crap)
    .then(IdentifierParser)
    .map((value: {value: string}): FragmentObjectProjectionItemType => ({
github sider / TyScan / dist / pattern / parser.js View on Github external
    DOT: _ => P.string('.').trim(P.optWhitespace),
    USCORE: _ => P.string('_').trim(P.optWhitespace),
github ant-move / Antmove / packages / @antmove / wx-alipay-plugin / parse / parseWxml.js View on Github external
Attribute: function () {
        return P.seqMap(
            Wxml.Attr,
            P.optWhitespace,
            P.string('='),
            P.optWhitespace,
            Wxml.singleQuoteString
            .or(Wxml.doubleQuoteString),
            whitespaces,
            function (...r) {
                return [r[0], r[4]];
            }
        )
        .or(P.seqMap(
            Wxml.Attr,
            whitespaces,
            function (r1, r2) {
                return [r1, null]
            }
        ));
    },
github mysql / mysql-connector-nodejs / lib / ExprParser / lib / index.js View on Github external
STRING_SQ (r) {
            return Pa
                .seq(
                    Pa.string("'"),
                    Pa.alt(r.SCHAR, Pa.string('"'), r.ESCAPED_SQ, r.ESCAPED_ESCAPE_CHAR).many().tie(),
                    Pa.string("'")
                )
                .tie();
        },