@begin C
%type <typedIdentifier_> ArrayedType
-%type <expression_> EncodedType
%type <modifier_> FunctionedType
%type <specifier_> IntegerType
%type <specifier_> IntegerTypeOpt
%type <selector_> SelectorExpressionOpt
%type <argument_> SelectorList
%type <word_> SelectorWordOpt
-%type <expression_> TypeOpt
+%type <typedIdentifier_> TypeOpt
%type <argument_> VariadicCall
@end
: TypeQualifierLeft PrimitiveType TypeQualifierRight { $$ = $3; $$->specifier_ = $2; CYSetLast($1) = $$->modifier_; $$->modifier_ = $1; }
;
-EncodedType
- : TypedIdentifier { $$ = CYNew CYEncodedType($1); }
- ;
-
PrimaryExpression
- : "@encode" "(" EncodedType ")" { $$ = $3; }
+ : "@encode" "(" TypedIdentifier ")" { $$ = CYNew CYEncodedType($3); }
;
/* }}} */
@end
;
TypeOpt
- : "(" LexSetRegExp EncodedType ")" { $$ = $3; }
+ : "(" LexSetRegExp TypedIdentifier ")" { $$ = $3; }
| { $$ = NULL; }
;
#include <sstream>
-static CYExpression *MessageType(CYContext &context, CYExpression *type, CYMessageParameter *next, CYExpression *extra = NULL) {
+static CYExpression *MessageType(CYContext &context, CYTypedIdentifier *type, CYMessageParameter *next, CYExpression *extra = NULL) {
if (type == NULL)
return NULL;
- CYExpression *left($C0($M(type, $S("toString"))));
+ CYExpression *left($C0($M(type->Replace(context), $S("toString"))));
if (extra != NULL)
left = $ CYAdd(left, extra);
CYNext<CYMessageParameter>
{
CYWord *tag_;
- CYExpression *type_;
+ CYTypedIdentifier *type_;
CYIdentifier *name_;
- CYMessageParameter(CYWord *tag, CYExpression *type, CYIdentifier *name) :
+ CYMessageParameter(CYWord *tag, CYTypedIdentifier *type, CYIdentifier *name) :
tag_(tag),
type_(type),
name_(name)
CYNext<CYMessage>
{
bool instance_;
- CYExpression *type_;
+ CYTypedIdentifier *type_;
CYMessageParameter *parameters_;
CYBlock code_;
- CYMessage(bool instance, CYExpression *type, CYMessageParameter *parameter, CYStatement *statements) :
+ CYMessage(bool instance, CYTypedIdentifier *type, CYMessageParameter *parameter, CYStatement *statements) :
instance_(instance),
type_(type),
parameters_(parameter),