如何使用PEG.js的示例

时间:2015-10-29 14:44:25

标签: javascript peg pegjs

我正在玩PEG.js

我创建了一些简单的代码,接受[LettersNumbers]形式的输入:

  • ABC123
  • hello98765

这是代码:

start = expression 

expression = text + number

text = 
a: [a-z]+
{return a.join("");}

number = 
b:[0-9]+
{return b.join("");}

此处:Online version可以测试代码并下载解析器,另外我自己下载了peg.js

不幸的是,documentation非常稀少。我试过了:

<script src="peg-0.9.0.min.js"></script>
<script src="parser.js"></script>
<script>
var parser = new PEG;
parser.parse("test123");
</script>

但是得到了这些错误:

  

未捕获的ReferenceError:模块未定义
  未捕获的TypeError:PEG不是函数

有人可以给我一个工作实例吗?我只需要将生成的js文件集成到一个网站中。

2 个答案:

答案 0 :(得分:4)

此答案假设您希望继续使用PEG.js在线版本来构建解析器。

如果您在网页中生成解析器,则只需peg-0.9.0.min.js。由于您使用PEG.js在线版本来生成解析器,因此您无需这样做。

您确实需要包含已下载的parser.js。您需要在PEG.js Web版本中指定一个浏览器友好的全局变量并重新下载。

此示例使用PARSER

enter image description here

然后你可以使用:

<script src="parser.js"></script>
<script>
PARSER.parse("test123");
</script>

Plunker example

答案 1 :(得分:2)

如果您想在网络上使用它,则需要下载browser version,或从CDN引用它。

此外,您需要使用其javascriptAPI来创建解析器。

&#13;
&#13;
// One line version of your grammer.
var parser = PEG.buildParser('start = expression;expression = text + number;text = a: [a-z]+{return a.join("");};number = b:[0-9]+{return b.join("");}');

console.log(parser.parse("test123"));
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/pegjs/0.7.0/peg.min.js"></script>
&#13;
&#13;
&#13;