是否可以將從文本文件檢索到的終端追加到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