cost 92 ms
如何使用 FParsec 解析遞歸左語法規則?

[英]How to parse a recursive left syntax rule with FParsec?

我通常將 FParsec 用於 LL 語法,但有時會發生在整個語法中只有一個元素需要左遞歸解析(因此語法不再是 LL)。 目前我有這樣的情況,我有一個用 FParsec 實現的大型 LL 語法,但是一個小的語法元素困擾着我,因為它顯然無法正確解析。 有問題的語法元素是訪問數組索引à la F#,例 ...

使用 FParsec 是否可以在解析器失敗時處理錯誤 position?

[英]With FParsec is it possible to manipulate the error position when a parser fails?

作為示例,我將以 Phillip Trelford 的這個簡單的 C# 解析器為例。 為了解析一個標識符,他寫了這個(略有改動): pidentifier 的問題在於,當它失敗時,position 指標位於 stream 的末尾。我的一個例子: 顯然,不是 C# 片段,但為了示例的緣故,我使用了 ...

如何在 FParsec 中解析遞歸文法

[英]How to parse recusrive grammar in FParsec

我無法使用以前的問題來讓它工作 FParsec 中的遞歸文法似乎是在將createParserForwardedToRef添加到 FParsec 之前提出的一個老問題 AST 似乎不像我的那樣可怕的遞歸。 解析為遞歸數據結構語法依賴於特殊字符'['來指示另一個嵌套級別。 我沒有這種奢侈我想為我最近 ...

2022-03-02 20:40:27   1   110    f# / fparsec  
fparsec - 限制應用解析器的字符數

[英]fparsec - limit number of characters that a parser is applied to

我有一個問題,在解析 ZF7B44CFFAFD5C52223D5498196C8A2E7BZ 期間,我需要通過多次(按順序)應用特定解析器來解析下一個 N 個字符。 (拆掉的玩具)示例: 假設 17 表示接下來的 N=17 個字符組成標簽,所以我需要重復應用我的“tagParser”,但在 17 ...

2022-01-03 16:26:56   3   68    f# / fparsec  
如何使用 FParsec 解析固定字符串

[英]How to parse a fixed string with FParsec

我正在嘗試使用 FParsec 解析固定字符串。 例如從文檔中解析null : open FParsec type Json = JNull let jnull : Parser<_> = stringReturn "null" JNull 然后在"null"上運行jnull給出 ...

具有兩種模式之一的 FParsec 匹配字符串

[英]FParsec match string which have one of 2 patterns

我正在嘗試學習 FParsec 並嘗試匹配遵循兩種模式的字符串。 該字符串可以是像"string"這樣的普通字符串,也可以是帶有一個點的字符串,如"st.ring" 。 解析器應如下所示: Parser<(string Option * string),unit> 。 第一個字符串是可 ...

FParsec 在空格分隔列表的末尾失敗,期待列表的另一個元素

[英]FParsec failing at the end of a spaces separated list, expecting another element of the list

我正在嘗試使用 FParsec 來解析形式為[string]的零個或多個元素的列表,其中中間的字符串可以是任何內容(除了]以消除字符串末尾的歧義)。 這是我的代碼: 這里的輸出是: 就好像解析器期待另一組括號,而不是在sepBy 2 次時終止。 我通過將spaces更改為(skipChar ...

使用 FParsec 解析可能格式錯誤的輸入

[英]Using FParsec to parse possibly malformed input

我正在為特定文件格式編寫解析器,使用 FParsec 作為學習 fsharp 的第一步。 部分文件具有以下格式 其中括號中的數字是成對的值,並且可以有任意數量的空格來分隔它們。 因此,這些也是要解析的有效內容: 當然括號的內容可能是空的,即{} 此外,我希望解析器能夠處理內容格式有點錯誤的情況,例如 ...

創建一個對第一個解析器的縮進敏感的 sepBy 解析器組合器

[英]Create a sepBy parser combinator sensitive to the indentation of the first parser

通過 FParsec 並使用這個庫(其代碼很短,已復制到問題的末尾),我正在嘗試設計一個sepBy的解析器,它對傳入參數的第一個解析器的縮進很敏感. 通常,如果我給出這個: indentedSepBy (pstring "Example") (pchar '.') ,我希望這種類型的程序是可以接受的 ...

F# 如何定義“遞歸”變量

[英]F# how to define "recursive" variables

我正在使用 FParsec 庫為偽語言編寫一個解析器,我有一個語句解析器,它是在所有可能的語句之間選擇一個塊解析器,它解析一系列語句,直到一個“結束”關鍵字,現在我想編寫一個“循環”結構,問題是,循環本身是一個語句,並且包含一個塊,這導致了一個遞歸形式的定義,F# 不喜歡我剛才在 C# 中編寫了一個 ...

為什么這兩個 FParsec 片段不同?

[英]Why are these two FParsec snippets different?

我想解析給定的char兩次,但只返回一次該字符的string 。 例如: 我有一些有效的代碼,但也有一些無效的代碼,我不明白為什么。 為什么這些片段不同?// Works let parseEscapedQuote (c : char) = let q = string c pstrin ...

2021-02-16 18:20:13   1   37    f# / fparsec  
當 stream.UserState 更新時,FParsec 'many' 原語失敗

[英]FParsec ‘many’ primitive fails when stream.UserState updated

以下例程是官方文檔“Tracing a parser” “解析器跟蹤包裝器”的一個小而簡化的更改。 此包裝器允許在解析器執行時檢查reply並根據需要更新stream.UserState 。 注意:此代碼只是將stream.UserState復制到自身上,實際上什么都不做,因為這是以下錯誤的最小操作 ...

2021-02-10 19:32:43   1   56    f# / fparsec  
讓 FParsec 拒絕不匹配的開始結束標簽?

[英]Getting FParsec to reject unmatched start end tags?

編寫我自己的 XML 解析器來學習 FParsec 我需要測試 XML 開始和結束標記是否匹配或解析器失敗。 在下面的代碼片段中...... 解析器xStartTag和xKey返回我想要匹配的string s。 解析器xContent_UntilCloseTag只返回標簽之間的任何內容。 ws跳 ...

2021-01-14 22:39:51   1   56    f# / fparsec  
FParsec 無法識別類型的構造函數

[英]FParsec Not Recognizing a Type’s Constructor

以下頂級 XML 解析器定義返回錯誤The value or constructor 'TOP_LEVEL_RECORD' is not defined. … TOP_LEVEL_RECORD被定義為…… 解析器xDeclaration 、 xCommentor_Cdata和xElement都已 ...

2020-12-26 20:02:15   1   28    f# / fparsec  
匹配多個 ParserResult 並提取值

[英]Matching More than One ParserResult and Extracting Values

這是一個關於使用 FParsec 的 ParserResult 的問題。 是否有一個更簡潔的match_result實現來提取 ParserResult 中包含的XKEYVALUE或XATTRIBUTES ParserResult沒有兩個嵌套匹配? 以下代碼用作 F# 控制台應用程序... 但是ma ...

2020-12-15 15:36:45   2   90    f# / fparsec  
F# 可區分聯合子類型列表

[英]F# list of discriminated union sub-types

我想向用戶展示“FParsec 解析器”和“測試數據”列表,他們可以從中交互式地 select 並查看解析器在提供的文本上運行的結果。 具體來說,我試圖在這種類型的記錄列表中收集我的解析器測試: 上面的xKeyValue拋出錯誤... 我希望用戶查看並選擇label字符串並查看運行解析器的結果。 我 ...

解析項的 FParsec 和后綴修飾符

[英]FParsec and postfix modifiers to parsed items

作為我自己的練習,我正在使用 FParsec 編寫一個函數,該函數可以從(有限的)正則表達式形式的規范中生成隨機字符串。 例如 我有很多工作,但我在后綴術語的想法上遇到了麻煩(即解析器可能需要返回並修改輸出,而不僅僅是 Char 流中的位置)。 例如“a”與“a+” 這是我的域類型的簡化版本 ...

F# - 從不同項目訪問參考單元格

[英]F# - Accessing Reference Cells from Different Projects

我正在使用 FParsec 編寫遞歸解析器,因此我正在使用createParserForwardedToRef創建虛擬解析器和參考單元格,如下所示:let pstatement, pstatementref = createParserForwardedToRef<Statement, Uni ...

使用 FParsec 跳過空格和注釋

[英]Skip whitespace and comments with FParsec

我嘗試在解析編程語言時跳過任何空格或注釋。 我想跳過兩種類型的評論: 行注釋: ;; skip rest of line ;; skip rest of line 塊評論:( (; skip anything between;) 使用注釋和空格解析的示例代碼: 我嘗試了多種方法,但解析器總是在某處中 ...

2020-06-16 11:21:55   1   111    f# / fparsec  
FParsec - 如何轉義分隔符

[英]FParsec - how to escape a separator

我正在研究 EDI 文件解析器,並且在為“段終止符”實現轉義時遇到了相當大的困難。 對於任何有幸不使用 EDI 的人來說,段終止符(通常是撇號)是段之間的分隔符,就像單元格一樣。 所需的行為如下所示: 使用 FParsec,沒有 escaping 撇號(並且,為簡單起見,忽略參數化),解析器看起來像 ...

2020-06-08 07:55:43   1   38    f# / fparsec  

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM