当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript Streams.ofString方法代码示例

本文整理汇总了TypeScript中@masala/parser.Streams.ofString方法的典型用法代码示例。如果您正苦于以下问题:TypeScript Streams.ofString方法的具体用法?TypeScript Streams.ofString怎么用?TypeScript Streams.ofString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在@masala/parser.Streams的用法示例。


在下文中一共展示了Streams.ofString方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: assertEquals

import {Streams, F, C, N} from '@masala/parser'
import {assertEquals, assertFalse, assertTrue} from '../../assert';


let response = C.char('a').rep().parse(Streams.ofString('aaaa'));
assertEquals(response.value.join(''), 'aaaa' );
assertEquals(response.offset, 4 )
assertTrue(response.isAccepted());
assertTrue(response.isConsumed());

// Partially accepted
response = C.char('a').rep().parse(Streams.ofString('aabb'));
assertEquals(response.value.join(''), 'aa' );
assertEquals(response.offset, 2 )
assertTrue(response.isAccepted());
assertFalse(response.isConsumed());
开发者ID:d-plaindoux,项目名称:parsec,代码行数:16,代码来源:response.ts

示例2:

import {Streams, F, C, N} from '@masala/parser'
import {assertEquals, assertArrayEquals, assertTrue} from '../../assert';

// Parsec needs a stream of characters
const document = '12';
const s = Streams.ofString(document);

// numberLitteral defines any int or float number
// We expect a number, then eos: End Of Stream
// We use drop() because we don't need the value of F.eos, we only want 12
const numberParser = N.numberLiteral().then(F.eos().drop());
const parsing = numberParser.parse(s);

// If the parser reached the end of stream (F.eos) without rejection, parsing is accepted
assertTrue(parsing.isAccepted());
// The parser has a 12 value inside the monoid
assertEquals (12, parsing.value);

开发者ID:d-plaindoux,项目名称:parsec,代码行数:17,代码来源:number.ts

示例3: assertArrayEquals

import {C, F, Streams} from '@masala/parser'


import{assertArrayEquals, assertEquals, assertTrue} from './assert';

let stream = Streams.ofString('ab');
let parser = C.char('a');
let arrayParser = parser.then(C.char('b'));
let parsing = arrayParser.parse(stream);

assertArrayEquals(['a', 'b'], parsing.value) ; //compiling, types are almost OK


parser = C.char('a');

let charParsing = parser.parse(Streams.ofString('a'));
let charParsingValue = charParsing.value;
assertTrue(charParsingValue === 'a');


let singleParsing = parser.parse(stream);
assertTrue( 'a' === singleParsing.value); //compiling, types are almost OK


parser = C.char('a');
singleParsing = parser.parse(stream);
assertEquals( 'a' , singleParsing.value); //compiling, types are almost OK
开发者ID:d-plaindoux,项目名称:parsec,代码行数:27,代码来源:test.ts

示例4:

import {Streams, F, C, N} from '@masala/parser'
import {assertEquals} from '../../assert';


/**
 * Created by Nicolas Zozol on 05/11/2017.
 */
const stream = Streams.ofString('abc');
const charsParser = C.char('a')
    .then(C.char('b'))
    .then(C.char('c'))
    .then(F.eos().drop()); // End Of Stream ; droping its value, just checking it's here
let charsParsing = charsParser.parse(stream);
assertEquals('abc', charsParsing.value.join(''), 'Chars parsing');

开发者ID:d-plaindoux,项目名称:parsec,代码行数:14,代码来源:chars.ts

示例5:

import {assertEquals, assertTrue} from '../../assert';
import {Streams, F, C, N} from '@masala/parser'





let stream= Streams.ofString('|4.6|');
const floorCombinator = C.char('|').drop()
    .then(N.numberLiteral())    // we have ['|',4.6], we keep 4.6
    .then(C.char('|').drop())   // we have [4.6, '|'], we keep 4.6
    .map(x =>Math.floor(x));

// Parsec needs a stream of characters
let parsing = floorCombinator.parse(stream);
assertEquals( 4, parsing.value, 'Floor parsing');

开发者ID:d-plaindoux,项目名称:parsec,代码行数:16,代码来源:floor.ts

示例6: combinator

import {Streams, F, C, Option, N, SingleParser} from '@masala/parser'
import {assertFalse, assertTrue} from '../../assert';


const string = 'The quick brown fox jumps over the lazy dog';


function combinator() {
    return C.letters()
        .then(C.char(' '))
        .then(C.lowerCase().rep())
        .then(C.char(' '))
        .then(C.notString('romane').rep())
        .then(F.eos());
}

let stream = Streams.ofString(string);
let parsing = combinator().parse(stream);

assertTrue(parsing.isAccepted());

开发者ID:d-plaindoux,项目名称:parsec,代码行数:20,代码来源:letter-letterAs.ts

示例7: A

import {Streams, F, C, Option, N, SingleParser, parserBuilder, ListParser} from '@masala/parser'
import {assertTrue} from '../../assert';


/**
 * A gives its VALUE to B using flatMap
 */
function A(char){
    return C.char(char.toUpperCase()).rep().flatMap(B);
}


/**
 * There is recursion, and we call A with lazy. We send PARAMETERS to A
 * within an array
 */
function B(aVal) {
    return C.char('B').map(bVal=> aVal.join('')+'-'+bVal).or(F.lazy(A, ['a']));
}



const parser = A('a');

const str = 'AAAB';
const stream = Streams.ofString(str);
const parsing = parser.parse(stream);

assertTrue(parsing.offset === str.length);
开发者ID:d-plaindoux,项目名称:parsec,代码行数:29,代码来源:transmission.ts


注:本文中的@masala/parser.Streams.ofString方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。