加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Parser Generator:如何一起使用GPLEX和GPPG?

发布时间:2020-12-15 07:45:47 所属栏目:百科 来源:网络整理
导读:在查看好的C#解析器生成器的帖子之后,我偶然发现了GPLEX和GPPG.我想使用GPLEX为GPPG生成令牌来解析和创建树(类似于lex / yacc关系).但是,我似乎无法找到这两者如何相互作用的例子.对于lex / yacc,lex返回由yacc定义的标记,并且可以在yylval中存储值.如何在GP
在查看好的C#解析器生成器的帖子之后,我偶然发现了GPLEX和GPPG.我想使用GPLEX为GPPG生成令牌来解析和创建树(类似于lex / yacc关系).但是,我似乎无法找到这两者如何相互作用的例子.对于lex / yacc,lex返回由yacc定义的标记,并且可以在yylval中存储值.如何在GPLEX / GPPG中完成此操作(文档中缺少这些内容)?

附件是我想要转换为GPLEX的lex代码:

%{
 #include <stdio.h>
 #include "y.tab.h"
%}
%%
[Oo][Rr]                return OR;
[Aa][Nn][Dd]            return AND;
[Nn][Oo][Tt]            return NOT;
[A-Za-z][A-Za-z0-9_]*   yylval=yytext; return ID;
%%

谢谢!
安德鲁

解决方法

我有一个类似的问题 – 由于明显缺乏文档而不知道如何使用GPLEX与GPPG的输出.我认为问题源于GPLEX发行版包含gppg.exe和gplex.exe,但仅包含GPLEX文档.

如果你去GPPG主页并下载该发行版,你将获得GPPG的文档,它描述了输入文件的要求,如何构建你的语法等等.哦,你也将再次获得两个二进制文件 – gppg .exe和gplex.exe.

几乎可以将所有内容都包含在一个包中.它肯定可以消除一些混淆,特别是那些可能不熟悉词法分析(标记化)和解析的人(并且可能不是100%熟悉两者之间的差异).

所以无论如何,对于那些可能第一次这样做的人:

GPLEX http://gplex.codeplex.com – 用于标记化/扫描/词法分析(同样的事情)

GPPG http://gppg.codeplex.com/ – 将标记化器的输出作为输入解析.例如,解析器使用语法并且可以执行简单的标记器无法完成的操作,例如检测括号组是否匹配.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读