Я пытаюсь разобрать объявление переменной с помощью FParsec.Я прочитал часть урока, а также пример разбора C # Филиппа Трелфорда.Вот что можно отсканировать:
let [identifier] = [value];
let [identifier] [: type] = [value];
let [identifier] = [new [type(constructor)]];
Например:
let foo = 9;
let foo: Integer = 9;
let foo = new Integer(9);
Но foo
также может принимать аргументы, например:
let foo(a, b) = a + b;
let foo(a: Integer, b: Integer = 0) -> Integer = a + b;
В основном, инструкция let
идентична команде F #, за исключением того, что аргументы заключены в скобки, а блок отсутствует, есть только выражение.
В учебном пособии реализована переменная C #, такая как:
let pdefine = pipe2 (pidentifier .>> ws1) (pidentifier)
(fun ty name -> Define(ty,name))
let pdefinition = pdefine |>> fun d -> Definition(d)
Но я понятия не имею, как реализовать мою версию, которая кажется более сложной ... Если кто-то может дать мне руководство или ссылку, которая бы более четко объяснила, как это сделать, этоочень помог бы мне.