Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用PEG.js的示例_Javascript_Peg_Pegjs - Fatal编程技术网

Javascript 如何使用PEG.js的示例

Javascript 如何使用PEG.js的示例,javascript,peg,pegjs,Javascript,Peg,Pegjs,我在和你玩 我创建了一些简单的代码,以[LettersNumbers]的形式接受输入: abc123 你好,98765 等等 代码如下: start = expression expression = text + number text = a: [a-z]+ {return a.join("");} number = b:[0-9]+ {return b.join("");} 这里:可以测试代码并下载解析器,另外我还下载了它本身 不幸的是,这个数字非常稀少。我试过: <

我在和你玩

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

  • abc123
  • 你好,98765
  • 等等
代码如下:

start = expression 

expression = text + number

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

number = 
b:[0-9]+
{return b.join("");}
这里:可以测试代码并下载解析器,另外我还下载了它本身

不幸的是,这个数字非常稀少。我试过:

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

var解析器=新的PEG;
parser.parse(“test123”);
但有以下错误:

未捕获引用错误:未定义模块
未捕获类型错误:PEG不是函数


有谁能给我举一个有效的例子吗?我只需要将生成的js文件集成到一个网站中。

这个答案假设您想继续使用PEG.js在线版本来构建解析器

如果要在网页中生成解析器,只需
peg-0.9.0.min.js
。因为您使用的是PEG.js在线版本来生成解析器,所以不需要这样做

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

此示例使用
解析器

以下是您可以使用的:

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

PARSER.parse(“test123”);

如果您想在web上使用它,您需要从CDN下载或引用

此外,还需要使用它来创建解析器

//语法的一行版本。
var parser=PEG.buildParser('start=expression;expression=text+number;text=a:[a-z]+{return a.join(“”;});number=b:[0-9]+{return b.join(“”;}');
log(parser.parse(“test123”)

您所说的“浏览器友好型全局变量”是什么意思?“module.exports”和“window.PARSER”的区别在哪里?@joews添加了一个。请允许我将其添加到您的答案中?@user1170330,生成的解析器代码将尝试将自己暴露给其他人可以看到的东西,在
node.js
中,我们使用
module.export=XXX
使其他lib能够获取
var XXX=require('./parser')
,但在浏览器中,没有这样的模块语法,因此,生成器只需使用
window.PARSER=XXX
就可以让其他脚本使用
var PARSER=PARSER
来获取它。@fuyushimoya:谢谢!那么,您和joews的例子之间有什么需要考虑的差异吗?例如,安全性等。在您的示例中,整个语法都是可见的,这可能是个问题吗?不,可以从devtool轻松查看parser.js。不同之处在于,joews'为您提供了一个已经可用的解析器,而我的解析器需要根据给定的语法进行构建,并让您能够构建不同的语法,如果您只有一个语法,joews'将更好地使用。