示例#1
0
 /// <summary>
 /// typedef-name
 ///     : identifier
 ///     ;
 ///
 /// Notice that we have to check the parser environment first.
 /// </summary>
 /// <returns></returns>
 public static Parserc.Parser <T, TypedefName> TypedefName()
 {
     return(Get <T_IDENTIFIER>()
            .Bind(id => Env.IsTypedefName(id.name) ?
                  Result <T, TypedefName>(new TypedefName(new Id(id))) :
                  Zero <T, TypedefName>()));
 }
示例#2
0
 /// <summary>
 /// identifier-not-typedef-name
 ///     : T_IDENTIFIER
 ///     ;
 ///
 /// Fail if the identifier is a typedef name.
 /// </summary>
 /// <returns></returns>
 public static Parserc.Parser <Token.Token, Id> IdentifierNotTypedefName()
 {
     return(Get <T_IDENTIFIER>()
            .Bind(id => Env.IsTypedefName(id.name) ?
                  Zero <Token.Token, Id>() : Result <Token.Token, Id>(new Id(id))));
 }