package org.fandev.lang.fan.parsing.statements.typeDefinitions.members; import com.intellij.lang.PsiBuilder; import static org.fandev.lang.fan.FanTokenTypes.*; import org.fandev.lang.fan.parsing.util.ParserUtils; import org.fandev.lang.fan.parsing.statements.expressions.arguments.Arguments; import org.fandev.lang.fan.FanElementTypes; import org.fandev.lang.fan.FanBundle; /** * Date: Mar 28, 2009 * Time: 4:02:44 PM * @author Dror Bereznitsky */ public class EnumValueDefinition { public static boolean parse(final PsiBuilder builder) { final PsiBuilder.Marker marker = builder.mark(); // Enum value if (!IDENTIFIER_TOKENS_SET.contains(builder.getTokenType())) { marker.drop(); return false; } final PsiBuilder.Marker idMark = builder.mark(); builder.advanceLexer(); idMark.done(FanElementTypes.NAME_ELEMENT); // possible constructor arguments if (LPAR.equals(builder.getTokenType())) { if (Arguments.parse(builder)) { marker.done(FanElementTypes.ENUM_VALUE); return true; } else { marker.error(FanBundle.message("argument.expected")); } } marker.done(FanElementTypes.ENUM_VALUE); return true; } }