random-text
v1.0.0
Published
Generate random text using a given context-free grammar
Downloads
1
Readme
Random-text
使用给定的上下文无关文法生成随机文本。
用法
基本用法
var rand = randtxt.loader().load({
'start': '<sentence>。',
'sentence': '<subject>在<place><verb>',
'subject': [
'张三',
'李四',
'@3 王五'
],
'place': [
'学校',
'图书馆',
'火车站'
],
'verb': [
'看书',
'喝水',
'做作业'
]
}).done();
console.log(rand());
randtxt.loader()
用于创建一个加载器对象。load()
方法用于加载文法对象,可分成多个对象分开加载。done()
方法完成加载过程,并返回一个函数,调用该函数即返回随机生成的文本。loader()
函数包含一个类型为js对象可选的参数,用于传递选项的值。该选项对象包含的字段有:
|字段名|作用|默认值|
|:-----|:---|:-----|
|escapeChar|指定文法规则中的转义字符|"%"
|
|random|随机函数,生成一个0到指定范围内的随机数|range => Math.random() * range
|
|startKey|起始的非终结符|"start"
|
文法对象
文法对象是一个以非终结符为键的js对象,值则是该非终结符能推导出的规则,一个规则用一个字符串表示,多个规则时用数组。文法必须包含一个起始的非终结符,默认是start
。在每条规则中,尖括号<>
括起来的表示非终结符,其余则是终结符。转义字符默认是%
,即%<
、%>
、%%
、%@
分别表示字符<
、>
、%
、%
。
每条规则的权重可以在规则的开头用@
加数字的方式指定,默认值是1。如果只写了@
而不加数字那么该规则的权重就是它包含的各个非终结符对应的规则的权重之和的积。
许可
MIT.