Что выбрать fsyacc / fslex или FParsec? - PullRequest
4 голосов
/ 21 июля 2011

Мне нужно проанализировать простой язык DSL, как показано ниже:

import "library.txt"

def <int, bool, byte> main(int param1, bool param2)
{
    var a = f4(param1); // or var d = f1(f2(f3(f4(param1))));
    var b = f3(a);
    var c = f2(b);
    var d = f1(c);

    return <d, param2, b0>;
}

Какой самый подходящий инструмент для разбора такого рода языка?

Ответы [ 3 ]

4 голосов
/ 21 июля 2011

Вы можете найти это сопоставление с пулевыми точками для FParsec с инструментами генератора синтаксических анализаторов (например, fslex & fsyacc) и "рукописными" анализаторами рекурсивного спуска, полезными для выбора между доступными альтернативами.

4 голосов
/ 21 июля 2011

Lex / Yacc обычно лучше для законченных языков со сложной грамматикой. С Parsec работать быстрее, если у вас есть короткие полупростые задачи. Я думаю, что для вашего случая Lex / Yacc был бы гораздо более подходящим.

1 голос
/ 05 октября 2013

Каков наиболее подходящий инструмент для разбора такого рода языков?

Я бы использовал активные шаблоны.

...