@@ -1193,6 +1193,15 @@ conline:
1193
1193
AddSymbol (currentTypes, GetUserIdentifierName(ident), SYM_TYPEDEF, typ, NULL);
1194
1194
$$ = NULL ;
1195
1195
}
1196
+ | SP_STRUCT SP_IDENTIFIER ' =' structname SP_EOLN
1197
+ {
1198
+ /* basically a type alias*/
1199
+ AST *oldtype = $4 ;
1200
+ AST *ident = $2 ;
1201
+ const char *name = GetUserIdentifierName(ident);
1202
+ AddSymbol (currentTypes, name, SYM_TYPEDEF, oldtype, NULL );
1203
+ $$ = NULL ;
1204
+ }
1196
1205
| SP_EOLN
1197
1206
{ $$ = NULL ; }
1198
1207
| error SP_EOLN
@@ -1234,7 +1243,7 @@ structitem:
1234
1243
{
1235
1244
$$ = NewAST(AST_DECLARE_VAR, MaybeArrayType(ast_type_long64, $3 ), $2 );
1236
1245
}
1237
- | SP_TYPENAME SP_IDENTIFIER optarray
1246
+ | structname SP_IDENTIFIER optarray
1238
1247
{
1239
1248
AST *name = $2 ;
1240
1249
AST *typname = $1 ;
@@ -1307,6 +1316,15 @@ datline:
1307
1316
idast = NewAST(AST_LISTHOLDER, linebreak, idast);
1308
1317
$$ = idast;
1309
1318
}
1319
+ | identifier structname
1320
+ {
1321
+ AST *ident = $1 ;
1322
+ AST *typ = $2 ;
1323
+ AST *var;
1324
+
1325
+ var = NewAST(AST_DECLARE_VAR, typ, ident);
1326
+ $$ = NewAST(AST_LISTHOLDER, var, NULL );
1327
+ }
1310
1328
;
1311
1329
1312
1330
basedatline :
@@ -1536,7 +1554,7 @@ varline:
1536
1554
{ $$ = NewAST(AST_WORDLIST, $2 , NULL ); }
1537
1555
| SP_LONG identlist SP_EOLN
1538
1556
{ $$ = NewAST(AST_LONGLIST, $2 , NULL ); }
1539
- | SP_TYPENAME identlist SP_EOLN
1557
+ | structname identlist SP_EOLN
1540
1558
{
1541
1559
AST *typ = $1 ;
1542
1560
AST *decllist = $2 ;
@@ -1586,7 +1604,7 @@ vardecl:
1586
1604
{ $$ = NewAST(AST_DECLARE_VAR, NULL , $2 ); }
1587
1605
| SP_QUAD identdecl
1588
1606
{ $$ = NewAST(AST_DECLARE_VAR, ast_type_long64, $2 ); }
1589
- | SP_TYPENAME identdecl
1607
+ | structname identdecl
1590
1608
{ $$ = NewAST(AST_DECLARE_VAR, $1 , $2 ); }
1591
1609
;
1592
1610
@@ -2727,6 +2745,13 @@ modifierlist:
2727
2745
{ $$ = AddToList ($1 , $3 ); }
2728
2746
;
2729
2747
2748
+ structname:
2749
+ SP_TYPENAME
2750
+ { $$ = $1 ; }
2751
+ | structname ' .' identifier
2752
+ {
2753
+ SYNTAX_ERROR (" module types not supported yet" );
2754
+ }
2730
2755
%%
2731
2756
2732
2757
void
0 commit comments