gpt4 book ai didi

csv - 查找单元格具有特殊含义的 csv 语法的问题

转载 作者:行者123 更新时间:2023-12-03 17:42:37 26 4
gpt4 key购买 nike

我正在尝试为以下示例 csv 找到语法:

a; test;test ;
;a; test;test ;
<ignore>; <ignore> ;test
a; <ignore> test;test
a; this is test ;test

分号用作分隔符。仅包含文本 <ignore> 的单元格有特殊的意义,在 EMF 模型中应该用它们自己的类型来表示。然而 <igonore> test不是这么特殊的值。必须忽略分号周围的空格。单元格可以包含除分号之外的任何字符。

到目前为止,我已经提出了这个语法:
grammar com.example.Csv

import "http://www.eclipse.org/emf/2002/Ecore" as ecore
generate impEx "http://www.example.com/Csv

Model:
valueLine=ValueLine

ValueLine:
';'? WHITE_SPACE values+=Value WHITE_SPACE (';' WHITE_SPACE values+=Value WHITE_SPACE)* ';'*;

Value:
( (=>'<ignore>') {IGNORE_VALUE} IGNORE_VALUE) | text=TEXT_VALUE;

terminal TEXT_VALUE:
(!';')*;

IGNORE_VALUE:
'<ignore>';

WHITE_SPACE:
(' '|'\t')*;

但是使用我的测试用例
@InjectWith(CsvInjectorProvider.class)
@RunWith(XtextRunner.class)
public class ParserTest {

@Inject
private ParseHelper<Model> parser;

@Test
public void parseDomainmodel() throws Exception {
Model parsed = parser.parse("abc; <ignore>; <ignore> \t; <ignore> a;def");
System.out.println(parsed.getValueLine().getValues());
}
}

我看到 IGNORE_VALUE规则不匹配 <ignore> .解析器似乎使用了 TEXT_VALUE起始空格的规则。

我需要做什么才能解析 <ignore>值正确吗?

最佳答案

我看到您正在处理语法文件中的正则表达式,请尝试以下操作:

IGNORE_VALUE:
'\<ignore\>';

如果您正在处理空间,它应该是这样的:
IGNORE_VALUE:
'\ *\<ignore\>';

希望这有帮助。

关于csv - 查找单元格具有特殊含义的 csv 语法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32475004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com