private static KonohaExpr ParseExpr_Dot(Context ctx, Syntax syn, KStatement stmt, IList<Token> tls, int s, int c, int e)
{
Console.WriteLine("s={0}, c={1}", s, c);
Debug.Assert(s < c);
if (isFieldName(tls, c, e))
{
KonohaExpr expr = stmt.newExpr2(ctx, tls, s, c);
expr = new ConsExpr(ctx, syn, tls[c + 1], expr);
return KModSugar.Expr_rightJoin(ctx, expr, stmt, tls, c + 2, c + 2, e);
}
if (c + 1 < e) c++;
return new ConsExpr(ctx, syn, tls[c], ReportLevel.ERR, "expected field name: not " + tls[c].Text);
}