Skip to content

Commit

Permalink
compiler/libec/grammar: (#653) Fixed unspaced (>>) template arguments…
Browse files Browse the repository at this point in the history
… with undefined types
  • Loading branch information
jerstlouis committed Sep 30, 2013
1 parent 0deb55d commit f220551
Show file tree
Hide file tree
Showing 9 changed files with 12,742 additions and 13,077 deletions.
2,066 changes: 1,008 additions & 1,058 deletions compiler/bootstrap/libec/bootstrap/grammar.c

Large diffs are not rendered by default.

442 changes: 224 additions & 218 deletions compiler/bootstrap/libec/bootstrap/type.c

Large diffs are not rendered by default.

2,066 changes: 1,008 additions & 1,058 deletions compiler/libec/precompiled/grammar.c

Large diffs are not rendered by default.

442 changes: 224 additions & 218 deletions compiler/libec/precompiled/type.c

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion compiler/libec/src/ast.ec
Expand Up @@ -271,7 +271,7 @@ public struct ContextStringPair
}
};

Map<ContextStringPair, List<Location> > intlStrings { };
Map<ContextStringPair, List<Location>> intlStrings { };

Expression MkExpIntlString(char * string, char * context)
{
Expand Down
16,735 changes: 8,260 additions & 8,475 deletions compiler/libec/src/grammar.ec

Large diffs are not rendered by default.

26 changes: 19 additions & 7 deletions compiler/libec/src/grammar.y
Expand Up @@ -1180,13 +1180,21 @@ struct_declaration_list_error:
;

template_datatype:
declaration_specifiers { $$ = MkTemplateDatatype($1, null); }
| declaration_specifiers abstract_declarator { $$ = MkTemplateDatatype($1, $2); }
| identifier { $$ = MkTemplateDatatype(MkListOne(MkSpecifierName($1.string)), null); FreeIdentifier($1); }
guess_declaration_specifiers { $$ = MkTemplateDatatype($1, null); }
| guess_declaration_specifiers abstract_declarator { $$ = MkTemplateDatatype($1, $2); }
// | identifier { $$ = MkTemplateDatatype(MkListOne(MkSpecifierName($1.string)), null); FreeIdentifier($1); }
;

template_type_argument:
template_datatype { $$ = MkTemplateTypeArgument($1); }
// template_datatype { $$ = MkTemplateTypeArgument($1); }

// Explicitly copied the rules here to handle:
// ast.ec: Map<List<Location>> intlStrings { };
// vs
// LinkList.ec: class LinkList<bool circ = false>

guess_declaration_specifiers { $$ = MkTemplateTypeArgument(MkTemplateDatatype($1, null)); }
| guess_declaration_specifiers abstract_declarator { $$ = MkTemplateTypeArgument(MkTemplateDatatype($1, $2)); }
;

template_type_parameter:
Expand All @@ -1210,12 +1218,16 @@ template_identifier_parameter:
;

template_expression_argument:
constant_expression { $$ = MkTemplateExpressionArgument($1); }
shift_expression /*constant_expression*/ { $$ = MkTemplateExpressionArgument($1); }
;

template_expression_parameter:
/*
template_datatype identifier { $$ = MkExpressionTemplateParameter($2, $1, null); }
| template_datatype identifier '=' template_expression_argument { $$ = MkExpressionTemplateParameter($2, $1, $4); }
*/
guess_declaration_specifiers identifier '=' template_expression_argument { $$ = MkExpressionTemplateParameter($2, MkTemplateDatatype($1, null), $4); }
| guess_declaration_specifiers abstract_declarator identifier '=' template_expression_argument { $$ = MkExpressionTemplateParameter($3, MkTemplateDatatype($1, $2), $5); }
;

template_parameter:
Expand All @@ -1236,7 +1248,7 @@ template_argument:
| identifier '=' template_expression_argument { $$ = $3; $$.name = $1; $$.loc = @$; }
| identifier '=' template_identifier_argument { $$ = $3; $$.name = $1; $$.loc = @$; }
| identifier '=' template_type_argument { $$ = $3; $$.name = $1; $$.loc = @$; }
| template_datatype '=' template_expression_argument
/*| template_datatype '=' template_expression_argument
{
$$ = $3;
if($1.specifiers && $1.specifiers->first)
Expand Down Expand Up @@ -1271,7 +1283,7 @@ template_argument:
}
FreeTemplateDataType($1);
$$.loc = @$;
}
}*/
;

template_arguments_list:
Expand Down
4,032 changes: 1,993 additions & 2,039 deletions compiler/libec/src/type.ec

Large diffs are not rendered by default.

8 changes: 5 additions & 3 deletions compiler/libec/src/type.y
Expand Up @@ -902,13 +902,15 @@ struct_or_union_specifier_nocompound:
;

template_datatype:
declaration_specifiers { $$ = MkTemplateDatatype($1, null); }
| declaration_specifiers abstract_declarator { $$ = MkTemplateDatatype($1, $2); }
guess_declaration_specifiers { $$ = MkTemplateDatatype($1, null); }
| guess_declaration_specifiers abstract_declarator { $$ = MkTemplateDatatype($1, $2); }
/*| identifier { $$ = MkTemplateDatatype(MkListOne(MkSpecifierName($1.string)), null); FreeIdentifier($1); }*/
;

template_type_argument:
template_datatype { $$ = MkTemplateTypeArgument($1); }
guess_declaration_specifiers { $$ = MkTemplateTypeArgument(MkTemplateDatatype($1, null)); }
| guess_declaration_specifiers abstract_declarator { $$ = MkTemplateTypeArgument(MkTemplateDatatype($1, $2)); }
//template_datatype { $$ = MkTemplateTypeArgument($1); }
;

/*
Expand Down

0 comments on commit f220551

Please sign in to comment.