示例#1
0
        protected void ContractTo(BnfiTermConversion target)
        {
            if (!this.IsContractible)
            {
                GrammarHelper.ThrowGrammarErrorException(GrammarErrorLevel.Error, "This value should not be a right-value: {0}", this.Name);
            }

            target.RuleRaw = this.RuleRaw;
            target.SetState(this);

            this.RuleRaw = null;
            this.ClearState();
            this.hasBeenContracted = true;
        }
示例#2
0
        protected void SetState(BnfiTermConversion source)
        {
            this.bnfTerm         = source.bnfTerm;
            this.value           = source.value;
            this.defaultValue    = source.defaultValue;
            this.isOptionalValue = source.isOptionalValue;
            this.Flags           = source.Flags;
            this.AstConfig       = source.AstConfig;

            this.inverseValueConverterForUnparse = source.inverseValueConverterForUnparse;

            if (this.UtokenizerForUnparse != null)
            {
                this.UtokenizerForUnparse = source.UtokenizerForUnparse;
            }
        }
示例#3
0
 public static BnfiTermConversion <TDOut> Cast <TDOut>(this Terminal terminal)
 {
     return(BnfiTermConversion.Cast <TDOut>(terminal));
 }
示例#4
0
 public static BnfiTermConversionTL ConvertValue(this IBnfiTermTL bnfiTerm, ValueConverter <object, object> valueConverter, ValueConverter <object, object> inverseValueConverterForUnparse)
 {
     return(BnfiTermConversion.Convert(bnfiTerm, valueConverter, inverseValueConverterForUnparse));
 }
示例#5
0
 public static BnfiTermNoAst For <T>(IBnfiTerm <T> bnfTerm)
 {
     return(new BnfiTermNoAst(bnfTerm.AsBnfTerm(), BnfiTermConversion.NoUnparseByInverseCreatorFromNoAst <object>()));
 }
示例#6
0
 public static ValueConverter <TDIn, TDOut> NoUnparseByInverse <TDIn, TDOut>()
 {
     return(BnfiTermConversion.NoUnparseByInverse <TDIn, TDOut>());
 }
示例#7
0
 public static BnfiTermConversion <T> QRef <T>(this IBnfiTerm <T> bnfTerm, T defaultValue)
     where T : class
 {
     return(BnfiTermConversion.ConvertOptRef(bnfTerm, defaultValue));
 }
示例#8
0
 public static BnfiTermConversion <T> QRef <T>(this IBnfiTerm <T> bnfTerm)
     where T : class
 {
     return(BnfiTermConversion.ConvertOptRef(bnfTerm));
 }
示例#9
0
 public static BnfiTermConversion <TDOut> IntroConstantTerminal <TDOut>(this BnfiTermConstant <TDOut> bnfiTermConstant)
 {
     return(BnfiTermConversion.IntroConstantTerminal <TDOut>(bnfiTermConstant));
 }
示例#10
0
 public static BnfiTermConversion <TDOut> IntroConstantTerminal <TDOut>(this ConstantTerminal constantTerminal)
 {
     return(BnfiTermConversion.IntroConstantTerminal <TDOut>(constantTerminal));
 }
示例#11
0
 public static BnfiTermConversion <string> IntroStringLiteral(this StringLiteral stringLiteral)
 {
     return(BnfiTermConversion.IntroStringLiteral(stringLiteral));
 }
示例#12
0
 public static BnfiTermConversion <string> IntroIdentifier(this IdentifierTerminal identifierTerminal)
 {
     return(BnfiTermConversion.IntroIdentifier(identifierTerminal));
 }
示例#13
0
 public static BnfiTermConversion <TNumberLiteral> IntroNumberLiteral <TNumberLiteral>(this NumberLiteral numberLiteral, NumberLiteralInfo numberLiteralInfo)
     where TNumberLiteral : INumberLiteral, new()
 {
     return(BnfiTermConversion.IntroNumberLiteral <TNumberLiteral>(numberLiteral, numberLiteralInfo));
 }
示例#14
0
 public static BnfiTermConversionTL IntroValue(this Terminal terminal, object value, bool astForChild = true)
 {
     return(BnfiTermConversion.Intro(terminal, value, astForChild));
 }
示例#15
0
 public static BnfiTermConversion <TDOut> Cast <TDIn, TDOut>(this IBnfiTerm <TDIn> bnfTerm, IBnfiTerm <TDOut> dummyBnfTerm)
 {
     return(BnfiTermConversion.Cast <TDIn, TDOut>(bnfTerm));
 }
示例#16
0
 public static BnfiTermConversion <T?> QVal <T>(this IBnfiTerm <T> bnfTerm)
     where T : struct
 {
     return(BnfiTermConversion.ConvertOptVal(bnfTerm));
 }
示例#17
0
 public static BnfiTermConversion <TDOut> IntroValue <TDOut>(this Terminal terminal, ValueIntroducer <TDOut> valueIntroducer, bool astForChild = true)
 {
     return(BnfiTermConversion.Intro(terminal, valueIntroducer, astForChild));
 }
示例#18
0
 public static BnfiTermConversion <T> QVal <T>(this IBnfiTerm <T> bnfTerm, T defaultValue)
     where T : struct
 {
     return(BnfiTermConversion.ConvertOptVal(bnfTerm, defaultValue));
 }
示例#19
0
 public static BnfiTermConversion <TDOut> IntroValue <TDOut>(this Terminal terminal, ValueIntroducer <TDOut> valueIntroducer,
                                                             ValueConverter <TDOut, object> inverseValueConverterForUnparse, bool astForChild = true)
 {
     return(BnfiTermConversion.Intro(terminal, valueIntroducer, inverseValueConverterForUnparse, astForChild));
 }
示例#20
0
 public static BnfiTermConversion <TDOut> ConvertValue <TDIn, TDOut>(this IBnfiTerm <TDIn> bnfiTerm, ValueConverter <TDIn, TDOut> valueConverter,
                                                                     ValueConverter <TDOut, TDIn> inverseValueConverterForUnparse)
 {
     return(BnfiTermConversion.Convert(bnfiTerm, valueConverter, inverseValueConverterForUnparse));
 }
示例#21
0
 public static BnfiTermConversion <TDOut> ConvertValue <TDOut>(this IBnfiTermTL bnfiTerm, ValueConverter <object, TDOut> valueConverter)
 {
     return(BnfiTermConversion.Convert(bnfiTerm, valueConverter));
 }
示例#22
0
 public static ValueConverter <T, object> NoUnparseByInverse <T>()
 {
     return(BnfiTermConversion.NoUnparseByInverse <T>());
 }
示例#23
0
 public static BnfiTermConversionTL ConvertValue(this IBnfiTermTL bnfiTerm, ValueConverter <object, object> valueConverter)
 {
     return(BnfiTermConversion.Convert(bnfiTerm, valueConverter));
 }
示例#24
0
 public static ValueCreatorFromNoAst <object> NoUnparseByInverseCreatorFromNoAst()
 {
     return(BnfiTermConversion.NoUnparseByInverseCreatorFromNoAst());
 }
示例#25
0
 public static BnfiTermNoAst For_(BnfTerm bnfTerm)
 {
     return(new BnfiTermNoAst(bnfTerm, BnfiTermConversion.NoUnparseByInverseCreatorFromNoAst <object>()));
 }