lex

Shift Reduce Conflict for arithmetic expressions in yacc

别来无恙 提交于 2021-02-08 08:30:40
问题 This grammar has given me conflict despite specifying precedence of operators. Even in the Dragon book it's been resolved in such a way(the way implemented as first 7 lines below) but it still gets conflict! Below is the code implemented in yacc %right THEN_KW %right ELSE_KW %left XOR_KW OR_KW %right '=' %left AND_KW ALSO_KW %left EQ_KW LT_KW GT_KW LE_KW GE_KW %left PLUS_KW MINUS_KW %left MULT_KW DIV_KW MOD_KW %right NOT_KW arthlogicexpr -> operand | arthlogicexpr arthop arthlogicexpr arthop

探索语言交互技术在政务数字化的应用

孤人 提交于 2021-02-04 16:14:34
摘要: 在智慧城市的建设中,政府也希望能够使用新技术来提供更好的服务。 最近去公积金中心办理逐月还贷的业务,由于害怕排队时间较长,还没到上班时间就早早排队去了。正当我等待得百无聊赖之时,坐旁边的一位小兄弟对着手机说:转1000块钱给我妈。我看他用手机人脸识别了一把,看样子是转账成功了,开心地继续刷手机。作为一名业内人士,对这位孝顺的小兄弟,我心生感(kui)慨(jiu)之余,立马想到,如果我能对着手机说:帮我办下公积金还贷业务,然后能很快办完,我就可以不用在这等而是去加班奋斗了。很可惜,我的愿望暂时不能实现。 好的消息是,随着目前智慧城市建设的推进,政府也希望能够借助数字化手段,提高政府治理能力,方便市民办理各项业务。这其中,采用语音作为交互方式的新兴应用也逐步出现。事实上,在一些发达国家,也能看到这类应用。比如在推行数字政府的新加坡,可以通过像LifeSG[[1]]这类应用用语音来获取政务服务。在2019年4月份,英国数字政府部门上线语音查询政府公开信息的服务,用户在家可以通过Google Home或者Amazon Alexa智能音箱直接查询 http:// GOV.UK 网站上超过12,000项政府信息,市民可通过语音完成的任务范围逐渐扩大,从“国家最低工资标准”到“我如何申请一个新的护照”等等,并且陆续上线更多的查询服务,比如办理结婚手续的详细过程等[[2]]。

yyllocp->first_line returns uninitialized value in second iteration of a reEntrant Bison parser

痴心易碎 提交于 2021-01-29 14:02:23
问题 I have a reEntrant parser which takes input from a string and has a structure to maintain context. A function is called with different input strings to be parsed. Relevant code of that function is: void parseMyString(inputToBeParsed) { //LEXICAL COMPONENT - INITIATE LEX PROCESSING yyscan_t scanner; YY_BUFFER_STATE buffer; yylex_init_extra(&parseSupportStruct, &scanner ); //yylex_init(&scanner); buffer = yy_scan_buffer(inputToBeParsed, i+2, scanner); if (buffer == NULL) { strcpy(errorStrings,

Automake flex output naming

家住魔仙堡 提交于 2021-01-28 20:08:37
问题 If if use, for example foo_SOURCES = bar.l then, automake generates via flex file bar.c . But, if I provide prefix AM_LFLAGS=-Psome_prefix , it generates lex.some_prefix.c , which is not known by other compilation rules, so it fails with bar.c: No such file or directory . Where is my mistake and how can I work around it? I really need prefix. 回答1: I think the only way around this is to write your own rule for the .l->.c translation. Something like: x_SOURCES = lex.some_prefix.c lex.some

How to read multiple lines of input in lex and yacc?

落爺英雄遲暮 提交于 2021-01-28 02:10:20
问题 I want the output as: a=3 mov a,3 a=fs mov b,fs b=32 mov b,32 Program for 3 address intermediate code generation - the lex file written for lexical analysis reads the input from command line and passes tokens: %{ #include "y.tab.h" #include "string.h" #include <math.h> %} %% [a-zA-Z]+ { yylval.var=(char *)malloc(sizeof(char *)); strcpy(yylval.var,yytext); return ID;} "=" return EQUALS; [0-9]+ {yylval.num=atoi(yytext);return DIGIT;} %% The corresponding yacc file: %{ #include "stdio.h"

How can flex return multiple terminals at one time

故事扮演 提交于 2021-01-27 18:51:22
问题 In order to make my question easy to understand I want to use the following example: The following code is called nonblock do-loop in fortran language DO 20 I=1, N ! line 1 DO 20 J=1, N ! line 2 ! more codes 20 CONTINUE ! line 4 Pay attention that the label 20 at line 4 means the end of both the inner do-loop and the outer do-loop. I want my flex program to parse the feature correctly: when flex reads the label 20 , it will return ENDDO terminal twice. Firstly, because I also use bison, so

Syntax error using empty production rule in python PLY(lex/yacc)

萝らか妹 提交于 2021-01-02 03:47:34
问题 The full example is given here: import ply.lex as lex import Property # List of token names. This is always required tokens = [ 'CheckupInformation', 'Introduction', 'Information', 'perfect', 'sick', 'LPAREN', 'RPAREN', 'CHAR', 'NUMBER' ] def t_CheckupInformation(t) : 'CheckupInformation' ; return t def t_Introduction(t) : 'Introduction' ; return t def t_Information(t) : 'Information' ; return t def t_perfect(t): 'perfect'; return t def t_sick(t) : 'sick'; return t t_LPAREN = r'\(' t_RPAREN =

Ubuntu安装flex和bison

不羁的心 提交于 2020-11-26 18:49:51
在学习虎书,第二章练习要用lex和yacc,然而作者提供的 网址 上放的是flex和bison,当然这样更好啦(flex和bison完全兼容lex和yacc)。考虑到在windows下用这两个玩意还要安装masm,所以最后决定上虚拟机(之前操作系统课就装过了,幸亏没卸载哈哈哈)。 Ubuntu下使用 sudo apt-get install flex bison 命令,不一会就装好了,如图: 然后写了一个测试程序,就用Ubuntu自带的gedit写, 保存为.l文件 : %% [\t] + is | am | are | was | were { printf ( "%s: is a verb\n" ,yytext);} [a-zA-Z] + { printf ( "%s: is not a verb" ,yytext);} .|\ n %% int main (){ yylex (); } 使用命令 lex verb.l 再使用命令 gcc lex.yy.l -lfl 最后运行 ./a.out 这个程序会判断输入的单词是不是动词: 程序成功运行也说明我们安装配置成功了。 来源: oschina 链接: https://my.oschina.net/u/4518215/blog/4751194

Go实现自定义语言的基础

我是研究僧i 提交于 2020-11-06 10:35:03
0x01 自言自语 一直就对解析文档,比较感兴趣,一直没深入研究,只停留在仅知道 Lex & yacc 和 antlr 的名词阶段,最近看了go-zero的api解析器,觉得甚好,是时候花时间学习一下了。 简单看了go-zero发现是自己实现了词法分析、语法解析,这不符合我的一贯偷懒作风,所以并未其源码开始学习。既然用golang那么他自带的goyacc就是我学习的不二之选。当然你可能会听说Lex&yacc 已经很古老了,antlr更先进一点。但是既然goyacc能成为golang官方工具,那么肯定还是值得你学习的。 goyacc的文档非常的少,少到什么程度?少到你未来一定能搜到这篇。甚至连github上的使用例子也不多,大致就分两类:计算器、sql解析器,其中计算器目测是国外某大学的课程。 所以研究goyacc我花了好几个通宵、掉了少许头发。不经让这篇文章有了一个营销文案:花了一夜时间,搞懂了外国的一堂编译原理课。 个人对技术文章的理解是,文章可以有自己的观点、啰嗦、甚至幽默,但尽量不要放在学术部分,毕竟技术是严禁的。所以下面描述,我可尽能做一个无情的打字机,尽可能的按照文档风描述。 0x02 goyacc简易入门 安装 goyacc golang 1.8 版本之前 yacc 直接再带与go tool 无需自行安装。 鉴于使用的频率太少,遂在 golang 1.8 版本后

052_Lightning

假装没事ソ 提交于 2020-10-31 06:34:58
不支持内容: JavaScript buttons, customizable forecasting, and customizable tabs. 设置部分User选择使用Lightning: 单独设置Profile或Permission Set为某些User。 闪电体验的推荐功能 如果您尚未开始,请在开启Lightning Experience之前考虑启用并设置多个支持功能。 这些功能确保新的用户界面经过优化,可帮助您的销售代表更快地销售,并帮助您的服务代表更快地为客户提供支持。 相关文件: 利用标准Salesforce对象和自定义对象的Salesforce文件的丰富功能和灵活性。将新的“文件”相关列表添加到页面布局,以便用户可以将文件上载到记录,查看与记录关联的文件,然后快速浏览现代,丰富的预览播放​​器中的文件。 笔记: 使用我们增强的笔记工具帮助您的用户保持组织。创建富文本笔记并快速将其与特定记录相关联是一件轻而易举的事情。当您打开Notes时,请记得将新的Notes相关列表添加到页面布局,以便用户可以直接从其记录中创建和读取笔记。 路径: 帮助您的用户采用您公司的流程,更高效地工作或完成更多交易。根据对象的状态或阶段设置一个进程。在此过程中的每一步添加成功的指导。 重复管理: 创建重复规则来提醒用户是否要创建重复记录