मिस्चैच टाइप करें। एक
LexBuffer<char>
लेकिन एकLexBuffer<byte>
प्रकार 'चार' प्रकार 'बाइट'लेक्सबफर <char> की अपेक्षा लेकिन लेक्सबफर <byte> दिया गया 'प्रकार' प्रकार 'बाइट' प्रकार से मेल नहीं खाता
यह मेल नहीं खाता दी उम्मीद है, जबकि fslex का उपयोग कर कि मैं त्रुटि संदेश आ रहा है। मैंने लेक्सबफ और उसके प्रकार की हर घटना को मैन्युअल रूप से जांचने का प्रयास किया है। यह हर जगह LexBuffer<char>
है। लेकिन अभी भी संकलक मुझे उपरोक्त त्रुटि दे रहा है। क्या आप कृपया मुझे बता सकते हैं कि यह त्रुटि क्यों होती है और इसे हल करने के बारे में कैसे जाना है।
{
open System
open Microsoft.FSharp.Text.Lexing
open Microsoft.FSharp.Text.Parsing
let lexeme (lexbuf : LexBuffer<char>) = new System.String(lexbuf.Lexeme)
let newline (lexbuf:LexBuffer<char>) = lexbuf.EndPos <- lexbuf.EndPos.NextLine
let unexpected_char (lexbuf:LexBuffer<char>) = failwith ("Unexpected character '"+(lexeme lexbuf)+"'")
}
let char = ['a'-'z' 'A'-'Z']
let digit = ['0'-'9']
let float = '-'?digit+ '.' digit+
let ident = char+ (char | digit)*
let whitespace = [' ' '\t']
let newline = ('\n' | '\r' '\n')
rule tokenize = parse
| "maximize" { MAXIMIZE }
| "minimize" { MINIMIZE }
| "where" { WHERE }
| '+' { PLUS }
| '-' { MINUS }
| '*' { MULTIPLY }
| '=' { EQUALS }
| '>' { STRICTGREATERTHAN }
| '<' { STRICTLESSTHAN }
| ">=" { GREATERTHANEQUALS }
| "<=" { LESSTHANEQUALS }
| '[' { LSQUARE }
| ']' { RSQUARE }
| whitespace { tokenize lexbuf }
| newline { newline lexbuf; tokenize lexbuf }
| ident { ID (lexeme lexbuf) }
| float { FLOAT (Double.Parse(lexeme lexbuf)) }
| ';' { SEMICOLON }
| eof { EOF }
| _ { unexpected_char lexbuf }
आपका स्वागत करने के लिए से संबंधित होना चाहिए है। ध्यान दें कि आपके प्रश्न पाठ में कोण ब्रैकेट को सही तरीके से प्रदर्शित करने के लिए बैकक्वॉट में भागने की आवश्यकता है - मैंने आपके लिए यह संपादन किया है। – AakashM
कोड डीबग नहीं कर सकता है जिसे हम नहीं देख सकते हैं। कृपया अपना कोड पोस्ट करें। – Juliet
यह लेक्सर परिभाषा है। संदर्भ एफ # का उपयोग कर एक रैखिक कार्यक्रम के लिए एक डीएसएल लिखना है। – csprabala