void GetServerTag(out TagType tagtype, out string id, out TagAttributes attributes)
{
string inside_tags;
bool old = tokenizer.ExpectAttrValue;
tokenizer.ExpectAttrValue = false;
if (Eat ('@')){
tokenizer.ExpectAttrValue = old;
tagtype = TagType.Directive;
id = "";
if (Eat (Token.DIRECTIVE))
id = tokenizer.Value;
attributes = GetAttributes ();
if (!Eat ('%') || !Eat ('>'))
OnError ("expecting '%>'");
return;
}
if (Eat (Token.DOUBLEDASH)) {
tokenizer.ExpectAttrValue = old;
tokenizer.Verbatim = true;
inside_tags = GetVerbatim (tokenizer.get_token (), "--%>");
tokenizer.Verbatim = false;
id = null;
attributes = null;
tagtype = TagType.ServerComment;
return;
}
tokenizer.ExpectAttrValue = old;
bool varname;
bool databinding;
varname = Eat ('=');
databinding = !varname && Eat ('#');
tokenizer.Verbatim = true;
inside_tags = GetVerbatim (tokenizer.get_token (), "%>");
tokenizer.Verbatim = false;
id = inside_tags;
attributes = null;
tagtype = (databinding ? TagType.DataBinding :
(varname ? TagType.CodeRenderExpression : TagType.CodeRender));
}