using System;\r
using System.IO;\r
using System.Collections;\r
+using System.Collections.Generic;\r
using System.Globalization;\r
using System.Reflection;\r
using System.Security;\r
private PEAPI.PInvokeAttr pinvoke_attr;\r
private ILTokenizer tokenizer;\r
static int yacc_verbose_flag;\r
+ KeyValuePair<string, TypeAttr> current_extern;\r
\r
class NameValuePair {\r
public string Name;\r
%token K_OUT\r
%token K_OPT\r
// %token K_LCID\r
-%token K_RETVAL\r
+//%token K_RETVAL\r
%token K_STATIC\r
%token K_PUBLIC\r
%token K_PRIVATE\r
%token K_IS\r
%token K_ON\r
%token K_OFF\r
+%token K_FORWARDER\r
%token K_CHARMAPERROR\r
\r
/* end generated */\r
\r
if (param == null) {\r
Report.Warning (tokenizer.Location, String.Format ("invalid param index ({0}) with .param", index));\r
- break;\r
- }\r
- if ($5 != null)\r
+ } else if ($5 != null)\r
param.AddDefaultValue ((Constant) $5);\r
}\r
| param_type_decl\r
;\r
\r
exptype_head : D_CLASS K_EXTERN expt_attr comp_name\r
+ {\r
+ current_extern = new KeyValuePair<string, TypeAttr> ((string) $4, (TypeAttr) $3);\r
+ }\r
;\r
\r
expt_attr : /* EMPTY */\r
- | expt_attr K_PRIVATE\r
- | expt_attr K_PUBLIC \r
- | expt_attr K_NESTED K_PUBLIC\r
- | expt_attr K_NESTED K_PRIVATE\r
- | expt_attr K_NESTED K_FAMILY\r
- | expt_attr K_NESTED K_ASSEMBLY\r
- | expt_attr K_NESTED K_FAMANDASSEM\r
- | expt_attr K_NESTED K_FAMORASSEM\r
+ | expt_attr K_PRIVATE { $$ = (TypeAttr)$1 | TypeAttr.Private; }\r
+ | expt_attr K_PUBLIC { $$ = (TypeAttr)$1 | TypeAttr.Public; }\r
+ | expt_attr K_NESTED K_PUBLIC { $$ = (TypeAttr)$1 | TypeAttr.NestedPublic; }\r
+ | expt_attr K_NESTED K_PRIVATE { $$ = (TypeAttr)$1 | TypeAttr.NestedPrivate; }\r
+ | expt_attr K_NESTED K_FAMILY { $$ = (TypeAttr)$1 | TypeAttr.NestedFamily; }\r
+ | expt_attr K_NESTED K_ASSEMBLY { $$ = (TypeAttr)$1 | TypeAttr.NestedAssembly;}\r
+ | expt_attr K_NESTED K_FAMANDASSEM { $$ = (TypeAttr)$1 | TypeAttr.NestedFamAndAssem; }\r
+ | expt_attr K_NESTED K_FAMORASSEM { $$ = (TypeAttr)$1 | TypeAttr.NestedFamOrAssem; }\r
+ | K_FORWARDER { $$ = TypeAttr.Forwarder; }\r
;\r
\r
exptype_decls : /* EMPTY */\r
\r
exptype_decl : D_FILE comp_name\r
| D_CLASS K_EXTERN comp_name\r
- | D_CLASS int32\r
| customattr_decl\r
+ | D_ASSEMBLY K_EXTERN comp_name\r
+ {\r
+ codegen.ExternTable.AddClass (current_extern.Key, current_extern.Value, (string) $3);\r
+ }\r
;\r
\r
manifestres_all : manifestres_head OPEN_BRACE manifestres_decls CLOSE_BRACE\r