Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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 转换flex/bison解析器以在浏览器中使用_Javascript_C_Flex Lexer_Yacc - Fatal编程技术网

Javascript 转换flex/bison解析器以在浏览器中使用

Javascript 转换flex/bison解析器以在浏览器中使用,javascript,c,flex-lexer,yacc,Javascript,C,Flex Lexer,Yacc,我已经使用Flex和Yacc制作了一个简单的编程语言和编译器,我希望能够将代码转换为在浏览器中使用 我已经看过像Jison这样的项目,但我不认为这对我有用,因为我需要维护两个不同的代码库 再看一看,我确信将我的编译器编译成WebAssembly并在浏览器中运行将是解决方案。唯一的问题是我不知道该怎么做。在将lexer和解析器链接在一起时传递的Flex库(-lfl)也可以与编译器一起编译吗 我真的没有WASM的经验,而且我对Flex/Yacc也很陌生,所以可能有一些非常明显的解决方案,但我似乎找不

我已经使用Flex和Yacc制作了一个简单的编程语言和编译器,我希望能够将代码转换为在浏览器中使用

我已经看过像Jison这样的项目,但我不认为这对我有用,因为我需要维护两个不同的代码库

再看一看,我确信将我的编译器编译成WebAssembly并在浏览器中运行将是解决方案。唯一的问题是我不知道该怎么做。在将lexer和解析器链接在一起时传递的Flex库(-lfl)也可以与编译器一起编译吗

我真的没有WASM的经验,而且我对Flex/Yacc也很陌生,所以可能有一些非常明显的解决方案,但我似乎找不到任何东西

如果您想查看我的代码:


非常感谢您抽出时间

-lfl
中没有什么用处;在任何实际应用中都不需要它

如果没有在flex文件中定义
yywrap()
,则添加

%option noyywrap
到flex序言,这样flex就不会在生成的代码中引用
yywrap
。如果您确实定义了
yywrap
,那么您已经不需要
-lfl
,但是您仍然可以考虑
%选项noyywrap
,这样您就不需要该定义了


我不知道WASM如何处理
stdio.h
函数;您的意图可能是使用其他机制将文本输入lexer,但生成的代码仍将包含对标准库I/O函数的引用(正如Bison生成的代码一样)。

哦,好的,非常感谢。虽然我还没有太多地使用WASM,但我认为大多数标准函数都是受支持的。您可能会想使用Emscripten:Emscripten不是WASM的编译器吗?我以为您想将编译器移植到浏览器,是不是错了?一点也不,但我不确定我是否理解Emscripten是什么。它不是为wasm编译的编译器吗?Emscripten将C/C++代码编译成WebAssembly,您可以在浏览器中运行。