Изучение ресурсов на синтаксических анализаторах, интерпретаторах и [закрытых] компиляторах

Вы должны наследовать свое соглашение не от IUserTypeConvention, а от FluentNHibernate.Conventions.UserTypeConvention.

Например, это именно то соглашение, которое я использую, чтобы отобразить логические и обнуляемые логические значения в пользовательский тип с именем UserTrueFalseType :

    /// <summary>
/// Convention: Boolean fields map to CHAR(1) T/F/Null
/// </summary>
public class BooleanTrueFalseConvention : FluentNHibernate.Conventions.UserTypeConvention<UserTrueFalseType>
{
    /// <summary>
    /// Accept field type criteria
    /// </summary>
    /// <param name="criteria"></param>
    public override void Accept(FluentNHibernate.Conventions.AcceptanceCriteria.IAcceptanceCriteria<FluentNHibernate.Conventions.Inspections.IPropertyInspector> criteria)
    {
        criteria.Expect(instance =>
            instance.Property.PropertyType.Equals(typeof(System.Boolean))
            ||
            instance.Property.PropertyType.Equals(typeof(System.Nullable<System.Boolean>))
        );
    }
}

Это работает с NH 3.3 и последней версией Свободно.

29
задан Community 3 September 2008 в 16:13
поделиться

1 ответ

Лучшая статья о компиляторах, которую я когда-либо читал, датирована 1964 годом «META II - синтаксически ориентированный язык написания компиляторов» Вал Шорре. ( http://doi.acm.org/10.1145/800257.808896 )

На 10 страницах он показывает вам, как построить поразительно простой, но очень эффективный компилятор-компилятор, обеспечивает с грамматикой компилятор-компилятор и предоставляет вам достаточно подробности для вас, чтобы реализовать его днем ​​(с одним удивительным концептуальный момент, когда вы понимаете, как он рекурсивен), и просто для усмешки реализует АЛГОЛ-подобный язык. Бумага - это полный газ и действительно должна обязательна к прочтению для всех, кто работает с технологией компиляторов.

Вот ссылка, чтобы поиграть с отличным руководством по метакомпилированию, по материалам статьи. http://www.bayfronttechnologies.com/mc_tutorial.html

13
ответ дан 28 November 2019 в 01:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: