From: Luca Bruno Date: Wed, 17 Nov 2010 20:30:04 +0000 (+0100) Subject: girparser: Support specifying symbols in metadata X-Git-Tag: 0.13.0~302 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=624c7688e71b6f43a3254ba6f458c33a10a57dde;p=thirdparty%2Fvala.git girparser: Support specifying symbols in metadata --- diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala index 6e3fd12cb..013520453 100644 --- a/vala/valagirparser.vala +++ b/vala/valagirparser.vala @@ -400,7 +400,7 @@ public class Vala.GirParser : CodeVisitor { return metadata; } - Expression? parse_literal () { + Expression? parse_expression () { var src = get_current_src (); Expression expr = null; switch (current) { @@ -422,8 +422,18 @@ public class Vala.GirParser : CodeVisitor { case TokenType.STRING_LITERAL: expr = new StringLiteral (get_string (), src); break; + case TokenType.IDENTIFIER: + expr = new MemberAccess (null, get_string (), src); + while (next () == TokenType.DOT) { + if (next () != TokenType.IDENTIFIER) { + Report.error (get_current_src (), "expected identifier got `%s'".printf (current.to_string ())); + break; + } + expr = new MemberAccess (expr, get_string (), get_current_src ()); + } + return expr; default: - Report.error (src, "expected literal"); + Report.error (src, "expected literal or symbol got `%s'".printf (current.to_string ())); break; } next (); @@ -450,7 +460,7 @@ public class Vala.GirParser : CodeVisitor { } next (); - Expression expr = parse_literal (); + Expression expr = parse_expression (); if (expr == null) { return false; }