package org.fandev.lang.fan.parsing.statements.typeDefinitions;
import com.intellij.lang.PsiBuilder;
import org.fandev.lang.fan.FanElementTypes;
import org.fandev.lang.fan.FanTokenTypes;
import static org.fandev.lang.fan.FanTokenTypes.IDENTIFIER_TOKENS_SET;
/**
* @author Dror Bereznitsky
* @date Jan 6, 2009 10:42:23 PM
*/
public class ReferenceElement {
public static boolean parseReferenceElement(final PsiBuilder builder) {
final PsiBuilder.Marker refelMark = builder.mark();
boolean res = parse(builder);
if (res && FanTokenTypes.COLON_COLON == builder.getTokenType()) {
// First one was pod name
builder.advanceLexer();
res = parse(builder);
}
if (res) {
refelMark.done(FanElementTypes.REFERENCE_ELEMENT);
} else {
refelMark.drop();
}
return res;
}
public static boolean parse(final PsiBuilder builder) {
if (IDENTIFIER_TOKENS_SET.contains(builder.getTokenType())) {
builder.advanceLexer();
return true;
}
return false;
}
}