是否可以将从文本文件检索到的终端追加到Rascal中的词典中?这会在运行时发生,我看不出有什么明显的方式来实现这一点。我宁愿将数据与Rascal项目分开。例如,如果我从文本文件中读取了国家/地区列表,我如何将它们添加到词典(使用关键字lexical
)?将文本文件附加到Rascal中的词典
0
A
回答
1
在数据相关版本的Rascal解析器中,这更容易和更快,但我们还没有发布。现在我会写一个通用的规则与解析后的过滤器,像这样:
rascal>set[str] lexicon = {"aap", "noot", "mies"};
set[str]: {"noot","mies","aap"}
rascal>lexical Word = [a-z]+;
ok
rascal>syntax LexiconWord = word: Word w;
ok
rascal>LexiconWord word(Word w) { // called when the LexiconWord.word rule is use to build a tree
>>>>>>> if ("<w>" notin lexicon)
>>>>>>> filter; // remove this parse tree
>>>>>>> else fail; // just build the tree
>>>>>>>}
rascal>[Sentence] "hello"
|prompt:///|(0,18,<1,0>,<1,18>): ParseError(|prompt:///|(0,18,<1,0>,<1,18>))
at $root$(|prompt:///|(0,64,<1,0>,<1,64>))
rascal>[Sentence] "aap"
Sentence: (Sentence) `aap`
rascal>
因为filter
功能去掉了所有可能的派生为hello
,解析器最终返回上hello
解析错误。它不适用于词库中的aap
,因此欢呼。当然,你可以用这种过滤方式做出有趣复杂的派生。人们有时会写出含糊不清的语法,并使用像这样的过滤器来使其明确无误。
如果滤波函数处于摊销常量时间,则以这种方式进行解析和过滤,就输入长度而言,以立方最坏情况时间为单位。如果语法是线性的,那么整个过程当然也是线性的。
0
完全不同的答案是动态更新语法并从中生成解析器。这涉及到对流氓的内部语法表示像这样工作:
set[str] lexicon = {"aap", "noot", "mies"};
syntax Word = ; // empty definition
typ = #Word;
grammar = typ.definitions;
grammar[sort("Word")] = { prod(sort("Word"), lit(x), {}) | x <- lexicon };
newTyp = type(sort("Word"), grammar);
这NEWTYPE是一个具体化的语法+型的词汇的定义,并且其现在可以使用像这样:
import ParseTree;
if (type[Word] staticGrammar := newType) {
parse(staticGrammar, "aap");
}
现在已经写人本,两件事情:
- 我想,这可能会引发未知的错误,因为我们没有测试动态分析器生成,
- 对于具有合理大小的词典,由于解析器针对编程语言中的关键字进行了优化,而不是大型词典,因此这将生成极慢的解析器。
相关问题
- 1. 将VBA词典写入文本文件
- 2. 将文本附加到文件。 %s f.name
- 3. 如何将文本附加到文件?
- 4. 文本文件词典Java
- 5. 附加到文本文件
- 6. powershell脚本将一个单词附加到文本文件的开头
- 7. Python - 将文本文件中的单词匹配到词典和操作值
- 8. 将文件附加到Lotus文档中的富文本项目
- 9. 将文本附加到文本框VB
- 10. 将文本附加到TextArea
- 11. 将文本附加到文本文件的问题?
- 12. 如何将字符附加到文件中的一行文本?
- 13. 将文件附加到PHPMailer
- 14. 将文件附加到PDF
- 15. 将单词文件中的文本复制到新单词中
- 16. 附加文件的文本
- 17. 使用经典ASP将文件附加到Access数据库中
- 18. 将json文件附加到文本文件
- 19. 如何在Python中将文本文件加载到字典中?
- 20. 读FASTQ文件到词典
- 21. 从.txt文件到词典
- 22. 将位附加到C中的文件
- 23. 将PDF文件附加到邮件中
- 24. 从文本文件创建词典
- 25. 将文件名添加到粘贴文本上方的shell脚本中的附加文本文件
- 26. 将新值附加到文本文件列表中
- 27. 将python对象(字典)附加到现有的pickle文件
- 28. 使用WriteAllLines附加到文本文件
- 29. 使用PrintStream附加到文本文件
- 30. 如何使用vim脚本将文本附加到文件?
何时可以访问数据相关版本? – rien333
不清楚的想法。这个流氓项目有大量积压,我们现在正在处理其他优先事项。 – jurgenv
虽然你可以尝试iguana或meerkat解析与数据依赖,请参阅github。 – jurgenv