雖然寫在ML-法 我們需要寫來寫EOF函數 val eof = fn() => EOF;
代碼,這是一個必要組成部分來寫 另外,如果我想我的詞法停在檢測一個eof然後我應該添加到給定的函數。 謝謝。如何檢測EOF在ML-法
1
A
回答
2
Roger Price的User’s Guide to ML-Lex and ML-Yacc非常適合學習ml-lex和ml-yacc。
EOF函數是強制性的在lex定義的用戶聲明部分連同lexresult類型爲:
功能EOF由詞法分析器稱爲到達輸入 流的末尾時。
如果您的eof函數可以在您的應用程序或EOF標記適用時拋出異常。無論如何,它必須返回一些類型的lexresult。在用戶指南的第7.1.2章中有一個例子,如果EOF位於塊註釋的中間,它將打印一個字符串。
我用一個有些「簡單」 EOF功能
structure T = Tokens
structure C = SourceData.Comments
fun eof data =
if C.depth data = 0 then
T.EOF (~1, ~1)
else
fail (C.start data) "Unclosed comment"
所在的C結構是一個「特殊」的評論處理結構纔是最重要開閉評論的數量。如果當前深度爲0,則返回EOF標記,其中(〜1,〜1)用於指示左側和右側位置。由於我不使用EOF的位置信息,我只是將它設置爲(〜1,〜1)。
通常情況下,您會設置%eop(解析結束)在yacc文件中使用EOF標記,以指示使用的是哪個永遠啓動的符號,可能後跟EOF標記。還請記住將EOF添加到%noshift。 Se節9.4.5中的%eop和%noshift。
顯然你必須定義你的yacc文件aswel的%term聲明中的EOF。
希望這會有所幫助,否則請看看用ml-lex和ml-yacc編寫的MLB parser或SML parser。 MLB解析器是最簡單的,因此可能更易於理解。
相關問題
- 1. Logstash Filebeat - 如何檢測EOF
- 2. 在C中檢測EOF
- 3. Linux NASM檢測EOF
- 4. mplayer - 我如何檢測Python中的EOF
- 5. C沒有檢測到EOF
- 6. 連接關閉,EOF檢測
- 7. 檢測EOF使用方案
- 8. 針對DirectShow的eof檢測
- 9. 在C中檢測txt文件的EOF
- 10. Flex - 在EOF之前檢測單詞
- 11. 檢測excel文件的EOF在Python
- 12. 在與fgets檢測EOF While循環
- 13. 如何在vbscript中檢測文本文件(EOF)的結尾?
- 14. 如何在Perl中檢查eof?
- 15. java.security.spec.InvalidKeySpecException:java.security.InvalidKeyException:IOException異常:早產檢測EOF
- 16. pg.InternalError:SSL SYSCALL錯誤:檢測到EOF
- 17. 如何檢測Android藍牙文件傳輸的EOF?
- 18. 如何逐行讀取並檢測eof(文件結束)?
- 19. 如何星火預測值ML
- 20. 如何在C#中的控制檯上檢測EOF? Console.ReadLine()在EOF上返回什麼?
- 21. Azure ML未來預測算法
- 22. 如何檢查沒有readLine()的EOF?
- 23. 如何檢查Python中的EOF?
- 24. 在NamedPipeClientStream中檢查EOF
- 25. 如何在jpeg圖像的末尾提取附加數據(檢測jpeg EOF)。
- 26. 龜etc,檢查EOF
- 27. 使用getchar()在普通程序中未檢測到CTRL + D(EOF)?
- 28. 如何查找Logstash在EOF?
- 29. Azure銷售預測ML
- 30. 檢測搖法檢測xcode4