package org.fandev.lang.fan.parsing.statements.typeDefinitions; import com.intellij.lang.PsiBuilder; import com.intellij.psi.tree.IElementType; import static org.fandev.lang.fan.FanElementTypes.*; import static org.fandev.lang.fan.FanTokenTypes.COLON; import static org.fandev.lang.fan.FanTokenTypes.COMMA; import org.fandev.lang.fan.parsing.util.ParserUtils; /** * @author Dror Bereznitsky * @date Jan 6, 2009 4:59:02 PM */ public class InheritanceClause { public static IElementType parse(final PsiBuilder builder) { final PsiBuilder.Marker sccMarker = builder.mark(); if (!ParserUtils.getToken(builder, COLON)) { sccMarker.rollbackTo(); return NONE; } do { ParserUtils.removeNls(builder); if (!ReferenceElement.parseReferenceElement(builder)) { sccMarker.rollbackTo(); return WRONGWAY; } ParserUtils.removeNls(builder); } while (ParserUtils.getToken(builder, COMMA)); sccMarker.done(INHERITANCE_CLAUSE); return INHERITANCE_CLAUSE; } }