當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript parsimmon.seqMap函數代碼示例

本文整理匯總了TypeScript中parsimmon.seqMap函數的典型用法代碼示例。如果您正苦於以下問題:TypeScript seqMap函數的具體用法?TypeScript seqMap怎麽用?TypeScript seqMap使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。


在下文中一共展示了seqMap函數的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1: function

 Comparison: function(r) {
   return parsimmon.alt(
     parsimmon.seqMap(r.ValueExpression, r.IsNullOperator, (p, o) => [o, p]),
     parsimmon.seqMap(
       r.ValueExpression,
       r.ComparisonOperator,
       r.ValueExpression,
       (p, o, v) => [o, p, v]
     ),
     parsimmon.seqMap(
       r.ValueExpression,
       r.LikeOperator,
       r.ValueExpression.skip(
         parsimmon
           .regexp(/escape/i)
           .result("ESCAPE")
           .skip(parsimmon.whitespace)
           .desc("ESCAPE")
       ),
       r.ValueExpression,
       (a, b, c, d) => [b, a, c, d]
     ),
     parsimmon.seqMap(
       r.ValueExpression,
       r.LikeOperator,
       r.ValueExpression,
       (a, b, c) => [b, a, c]
     )
   );
 },
開發者ID:zaidka,項目名稱:genieacs,代碼行數:30,代碼來源:expression-parser.ts

示例2:

 const newParser: P.Parser<string> = P.lazy(() =>
   P.alt(
     consumeEnd ? parser.result('') : P.lookahead(parser),
     P.seqMap(
       P.any,
       newParser,
       (s, next) => s + next))
開發者ID:timse,項目名稱:soyparser,代碼行數:7,代碼來源:parser.ts

示例3: binaryLeft

function binaryLeft(operatorsParser, nextParser): parsimmon.Parser<{}> {
  return parsimmon.seqMap(
    nextParser,
    parsimmon.seq(operatorsParser, nextParser).many(),
    (first, rest) =>
      rest.reduce((acc, ch) => {
        const [op, another] = ch;
        if (Array.isArray(acc) && op === acc[0]) return acc.concat([another]);
        if (Array.isArray(another) && op === another[0])
          return [op, acc].concat(another.slice(1));
        return [op, acc, another];
      }, first)
  );
}
開發者ID:zaidka,項目名稱:genieacs,代碼行數:14,代碼來源:expression-parser.ts

示例4: closeCmd

 const bodyParser: P.Parser<S.Body> = P.lazy(() =>
   html.then(P.alt(
     closeCmd(name).result([]),
     P.alt(...inter.map(openCmd))
       .result([])
       .then(bodyParser),
     P.seqMap(
       P.alt(
         literal,
         call,
         letStatement,
         otherCmd('if', 'elseif', 'else'),
         otherCmd('foreach', 'ifempty'),
         otherCmd('msg', 'fallbackmsg'),
         otherCmd('switch'),
         interpolation('{', '}')),
       bodyParser,
       reverseJoin)))
開發者ID:timse,項目名稱:soyparser,代碼行數:18,代碼來源:parser.ts

示例5: token

var stringLiteral =
  token(P.regexp(/"((?:\\.|.)*?)"/, 1))
    .desc('string');

const id = token(P.regexp(/[a-z][a-zA-Z0-9.]*/)).desc("id");
const ctor = token(P.regexp(/[A-Z][a-zA-Z0-9]*/)).desc("ctor").map((s) => new lang.Constant(s));

const exp: P.Parser<lang.Expression> = P.lazy(() =>
  whitespace.then(P.alt(
        id.map((s) => new lang.VariableDeref(s)), ctor
    )));

const comparisonOp =
    P.alt(isEq.result(lang.ComparisonOperator.EQ), notEq.result(lang.ComparisonOperator.NEQ));
const comparison = P.seqMap(exp, comparisonOp, exp, (e1, compOp, e2) => new lang.Condition(e1, compOp, e2))

export const comparisons = commaSep(comparison);

const update = P.seq(id.skip(setEq), ctor).map(([id, c]) => new lang.Update(id, c));

const action = P.seq(id.skip(lpar), commaSep(id).skip(rpar)).map(([id, names]) => new lang.Action(id, names));

const arule = P.seq(action.skip(then).skip(lbrace),
                    semiColonSep(update).skip(rbrace),
                    P.alt(ampersand.skip(lbrace).then(stringLiteral).skip(rbrace).map((s) => new lang.PrintSideEffect(s)), P.succeed(undefined))
                    ).map(([action, updates, sideEffect]) => new lang.ARule(action, updates, sideEffect));

const TabSize = 4;

const prule =
開發者ID:zoren,項目名稱:verified-monkey-island,代碼行數:30,代碼來源:parser.ts

示例6: regex

export interface Declarelation {
	label: string;
	text: string;
}

export interface Node extends Declarelation {
	start: Position;
	end: Position;
}

let lsec = regex(/.*\[/);
let rsec = regex(/\].*/);
let sectionText = regex(/[^#\]]+/).map(text => {return {label: 'section', text: text}; }).mark();
let rank = regex(/#*/);
let section = seqMap(lsec, sectionText, rsec, (...params) => params[1]);

let equal = regex(/=+/);
let lapi = string('{');
let rapi = string('}');
let api = regex(/[^}]+/).map(text => {return {label: 'api', text: text}; }).mark();
let directionText = regex(/.*/).map(text => {return {label: 'direction', text: text}; }).mark();
let lt = string('>').skip(optWhitespace);
let directionWithoutApi = seqMap(equal, lt, directionText, (...params) => params[2]);
let directionWithApi = seqMap(equal, lapi, api, rapi, equal, lt, directionText, (...params) => [params[2], params[6]]);
let direction = alt(directionWithoutApi, directionWithApi);

let text = regex(/.*/).mark().map(text => {
	return {label: 'text', text: text};
});
開發者ID:kexi,項目名稱:vscode-uiflow,代碼行數:29,代碼來源:parser.ts

示例7: expression

const functionArgs: P.Parser<Array<S.Expression>> = P.lazy(() => P.alt(
  rparen.result([]),
  expression(rparen).map(result => [result]),
  P.seqMap(expression(comma), functionArgs, reverseJoin),
));
開發者ID:timse,項目名稱:soyparser,代碼行數:5,代碼來源:parser.ts

示例8: joined

const lparen = P.string('(');
const newLine = P.string('\n');
const qmark = P.string('?');
const rbrace = P.string('}');
const rbracket = P.string(']');
const rparen = P.string(')');
const space = P.string(' ');
const squote = P.string('\'');
const underscore = P.string('_');

const attributeName = joined(P.letter, P.string('-'));
const html = P.noneOf('{}').many().desc("Html Char");

const identifierName = P.seqMap(
  P.alt(P.letter, underscore),
  P.alt(P.letter, underscore, P.digit).many(),
  (start, rest) => start + rest.join('')
);

const literal = nodeMap(
  S.Literal,
  openCmd('literal').then(withAny(closeCmd('literal')))
);

const namespace: P.Parser<Array<string>> = P.lazy(() => P.alt(
  P.seqMap(identifierName, dot.then(namespace), reverseJoin),
  identifierName.map(name => [name])
));

const templateName = optional(dot)
  .then(namespace)
開發者ID:timse,項目名稱:soyparser,代碼行數:31,代碼來源:parser.ts


注:本文中的parsimmon.seqMap函數示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。