2011-05-19 15 views
3

我使用fslex並在我需要尋找下一個字符我的分詞規則之一,所以我可以決定是否繼續消費令牌或停止,放鬆並讓先前的規則消耗它。是否有進行前瞻與fslex方式/ Lexing.LexBuffer

我花了一些檢查它的源代碼,看起來像唯一的方法是編譯一個公開內部方法的版本。也許這裏有人有更好的解決方案?

+2

不知道你已經去遠更改的工具,但你有沒有想過使用FsParsec呢?我對fslex和fsparsec的經驗都是有限的,但是從我看到的fsparsec要好得多。不知道如果fsparsec支持你想要什麼,但它說,它支持先行grammas,所以我覺得那裏有一個很好的機會。 – Robert 2011-05-19 12:49:16

+0

如果你真的想用FsLex/FsYacc(這是相當舒適),「欺騙」了一下似乎是一個很好的解決方案。但是你應該首先考慮使用FsParsec(這是專門爲此設計的,但它不是那麼容易使用)。 – 2011-05-19 13:54:55

+0

一個我已經處理,在與其他詞法分析器和解析器沒有先行過去的方式是實現支持自定義枚舉包裝「擺回。」獨佔邊界項目然後可以被放回並重新解析。 – TechNeilogy 2011-05-19 14:22:59

回答

1

也許看着LexBuffer的source code可以提供幫助。雖然有屬性(BufferScanStartBufferScanLength)設置詞法分析器在輸入流中的位置,但它們是內部的。我不確定需要以安全的方式公開這些內容。

還有一個關於HubFS的問題,它涉及退後。結論似乎是一樣的:fslex目前不支持它。