在antlr4中操纵词法规则的文本

时间:2017-09-04 09:23:47

标签: lexer

所以我对字符串有这个词法规则:

  

STRINGLIT:'"' ((' \' [\" bftrn])|〜[\ n \"])*'"' ;

例如,使用输入"abc",我希望abc,<EOF>放弃"

我在这里阅读http://www.antlr2.org/doc/lexer.html您可以使用! operator。然后我会:

  

STRINGLIT:&#39;&#34;&#39;! ((&#39; \&#39; [\&#34; bftrn])|〜[\ n \&#34;])*&#39;&#34;&#39;! ;

但是我无法使其适用于代码。

1 个答案:

答案 0 :(得分:1)

自v3(您使用的是v4)后,不再支持Server Site Platform Size(GB) Growth(GB) a Primary Windows 150 50 b Secondary Unix 100 -100 c Primary Oracle 500 0 运算符的v2功能。

v3或v4中没有等效运算符。剥离引号的唯一方法是在解析后在侦听器或访问者中执行此操作,或者在您的词法分析器中嵌入目标特定代码:

import csv 
t1 = open('/day1.csv', 'r') 
t2 = open('/day2.csv', 'r') 
outputt=open("/growth.csv","w") 
fileone = t1.readlines() 
filetwo = t2.readlines() 

for line in filetwo: 
    row = row.split(',') 
    a = str(row[0]) 
    b = str(row[1]) 
    c = str(row[2]) 
    d = float(row[3]) 
    f = float(filetwo.row[3] - fileone.row[3])
    outputt.writerow([a,b,c,d,e,f]) 
    outputt.write(line.replace("\n","") + ";6column\n") outputt.close() 
    fileone.close()