转换供浏览器使用的flex / bison解析器

问题描述 投票:0回答:1

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

我已经看过像Jison这样的项目,但是我认为这对我不起作用,因为那时我必须维护两个不同的代码库。

环顾四周,我很确定将编译器编译为WebAssembly并在浏览器中运行将是解决方案。唯一的问题是我不确定该怎么做。将词法分析器和解析器链接在一起时传递的Flex库(-lfl)是否也可以与我的编译器一起进行编译?

我真的没有WASM的经验,我对Flex / Yacc也很陌生,因此可能有一些非常明显的解决方案,但我似乎什么也没找到。

如果您想看一下我的代码:https://github.com/inobulles/aqua-compiler/tree/master/langs/amber

非常感谢您的时间!

javascript c flex-lexer yacc
1个回答
0
投票

-lfl中没有太多用处;您不应该在任何实际应用中使用它。

如果未在弹性文件中定义yywrap(),则添加

%option noyywrap

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

我不知道WASM如何处理stdio.h函数;据推测,您的意图是使用其他机制将文本输入到词法分析器中,但是生成的代码仍将包含对标准库I / O函数的引用(Bison生成的代码也是如此)。

© www.soinside.com 2019 - 2024. All rights reserved.