Example #1
0
import {chunk,any,rangeOf,anyOf,subRule,zeroOrMore,oneOrMore,optional,sequence,label, gather} from 'pegjs-builder/lib/peg/patterns'

export = {
    isToken: true,

    isIgnore: false,

    name: 'keyword',

    body: [
        sequence(
            oneOrMore(anyOf(
                rangeOf('a', 'z'),
                rangeOf('A', 'Z'),
                rangeOf('0', '9'),
                chunk('_')
            )),
            zeroOrMore(gather(sequence(
                chunk(' '),
                oneOrMore(anyOf(
                    rangeOf('a', 'z'),
                    rangeOf('A', 'Z'),
                    rangeOf('0', '9'),
                    chunk('_')
                )))
            ))
        )
    ]
}
Example #2
0
import {chunk,any,rangeOf,anyOf,subRule,zeroOrMore,oneOrMore,optional,sequence,label,gather} from 'pegjs-builder/lib/peg/patterns'

export = {
    isToken: false,

    name: 'testFile',

    body: [
        sequence(
            zeroOrMore(gather(sequence(
                subRule('whitespace'),
                subRule('testCase')
            ))),
            subRule('whitespace')
        )
    ]
}
let expandPatternForToken = function (pattern:Pattern) {
    return sequence(
        pattern,
        optional(subRule('whitespace'))
    )
}
import {chunk,any,rangeOf,anyOf,subRule,zeroOrMore,oneOrMore,optional,sequence,label} from 'pegjs-builder/lib/peg/patterns'

// ' ' ' ' [ \t]*
// '\t' [ \t]*

export = {
    isToken: true,

    isIgnore: false,

    name: 'seperator',

    body: [
        sequence(
            chunk(' '),
            chunk(' '),
            zeroOrMore(anyOf(
                chunk(' \t')
            ))
        ),
        sequence(
            chunk('\t'),
            zeroOrMore(anyOf(
                chunk(' \t')
            ))
        )
    ]
}
import {chunk,any,rangeOf,anyOf,subRule,zeroOrMore,oneOrMore,optional,sequence,label} from 'pegjs-builder/lib/peg/patterns'

// [a-zA-Z_][a-zA-Z0-9_ ]*

export = {
    isToken: true,

    isIgnore: false,

    name: 'testCaseName',

    body: [
        sequence(
            anyOf(
                rangeOf('a', 'z'),
                rangeOf('A', 'Z'),
                chunk('_')
            ),
            oneOrMore(anyOf(
                rangeOf('a', 'z'),
                rangeOf('A', 'Z'),
                rangeOf('0', '9'),
                chunk('_ ')
            ))
        )
    ]
}
Example #6
0
import {chunk,any,rangeOf,anyOf,subRule,zeroOrMore,oneOrMore,optional,sequence,label} from 'pegjs-builder/lib/peg/patterns'

// [a-zA-Z_][a-zA-Z0-9_ ]*

export = {
    isToken: true,

    isIgnore: false,

    name: 'argument',

    body: [
        sequence(
            anyOf(
                rangeOf('a', 'z'),
                rangeOf('A', 'Z'),
                chunk('_')
            ),
            oneOrMore(anyOf(
                rangeOf('a', 'z'),
                rangeOf('A', 'Z'),
                rangeOf('0', '9'),
                chunk('_') // todo, argument不能包含空格吗?
            ))
        )
    ]
}
Example #7
0
import {chunk,any,rangeOf,anyOf,subRule,zeroOrMore,oneOrMore,optional,sequence,label} from 'pegjs-builder/lib/peg/patterns'

// testCaseName endLine testCaseBody

export = {
    isToken: false,

    name: 'testCase',

    body: [
        sequence(
            subRule('testCaseName'),
            subRule('endLine'),
            subRule('testCaseBody')
        )
    ]
}
import {chunk,any,rangeOf,anyOf,subRule,zeroOrMore,oneOrMore,optional,sequence,label,gather} from 'pegjs-builder/lib/peg/patterns'

// testCaseCommand

export = {
    isToken: false,

    name: 'testCaseBody',

    body: [
        sequence(
            subRule('testCaseCommand'),
            zeroOrMore(gather(sequence(
                subRule('endLine'),
                subRule('testCaseCommand')
            ))),
            optional(
                subRule('endLine')
            )
        )
    ]
}
import {chunk,any,rangeOf,anyOf,subRule,zeroOrMore,oneOrMore,optional,sequence,label,gather} from 'pegjs-builder/lib/peg/patterns'

// seperator keyword (seperator argument)*

export = {
    isToken: false,

    name: 'testCaseCommand',

    body: [
        sequence(
            subRule('seperator'),
            subRule('keyword'),
            zeroOrMore(
                gather(sequence(
                    subRule('seperator'),
                    subRule('argument')
                ))
            )
        )
    ]
}