青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評(píng)論-2670  文章-0  trackbacks-0
    經(jīng)歷了大約一個(gè)多星期的挑選,Vczh Library++3.0托管語言的語法樹大約就定下來了。跟本地語言有一個(gè)缺省的語法叫NativeX一樣,這次的語法就叫ManagedX了。當(dāng)然ManagedX只是設(shè)計(jì)來直接反映托管語言語法樹的一門語言,如果愿意的話,這個(gè)語法樹還能被編譯成其他長(zhǎng)得像(嗯,只能是像,因?yàn)楸仨毷峭泄艿模蓄悰]指針等)Basic啦Pascal那樣子的東西。

    我將ManagedX的語法分為兩部分。第一部分是基礎(chǔ)部分,第二部分則是擴(kuò)展部分。將他們分開的依據(jù)就是,一個(gè)基于擴(kuò)展部分的程序,總是可以被重寫為一個(gè)功能完全一致但是僅基于基礎(chǔ)部分的比較復(fù)雜的程序。舉一個(gè)簡(jiǎn)單的例子。我們知道lambda表達(dá)式在一門面向?qū)ο笳Z言中并不是必需的,它只是一個(gè)語法糖。如果我們?cè)诿嫦驅(qū)ο笳Z言中把函數(shù)指針統(tǒng)統(tǒng)抽象成一個(gè)基類或者接口(就跟C#的Delegate一樣)的話,一個(gè)lambda表達(dá)式總是可以被表達(dá)成一個(gè)新的類型,然后只需要重新組織一下生成該lambda表達(dá)式的函數(shù)的局部變量,就可以把lambda表達(dá)是去掉了。當(dāng)然lambda表達(dá)式作為一個(gè)語法來說是必需的,因?yàn)樗蟠筇岣吡碎_發(fā)效率。但是對(duì)于編譯過程來說又不是必需的,因?yàn)樗偸强梢杂米詣?dòng)重寫的方法來去掉。

    因此ManagedX的編譯過程就比較清晰了:
    1、我們接受一個(gè)基于擴(kuò)展部分的程序,然后經(jīng)過第一輪的語法分析,得到語法樹上面所有節(jié)點(diǎn)的類型信息和引用信息。
    2、根據(jù)分析出來的信息,將該程序重寫為僅基于基礎(chǔ)部分的程序。在重寫的過程中會(huì)使得信息不會(huì)丟失(特別是ManagedX支持反射,而反射卻可以支持?jǐn)U展部分,所以需要做很多小動(dòng)作來維持重寫前后的程序運(yùn)行上的一致性)
    3、對(duì)重寫出來的新程序重新進(jìn)行語法分析。
    4、根據(jù)分析出來的信息,將它編譯成NativeX

    從這里打架就可以知道為什么我之前要做NativeX了,因?yàn)閷?shí)現(xiàn)了NativeX之后,以后實(shí)現(xiàn)很多新的復(fù)雜語言會(huì)十分省事。運(yùn)行時(shí)的虛擬機(jī)做好了,函數(shù)庫也有了一部分,還有基于二進(jìn)制編譯結(jié)果的多文件支持啦、泛型啦、concept mapping啦、外接函數(shù)插件啦、還有將來會(huì)做的debugger,和編譯到X86的過程,都可以直接被新的語言所享受。在這里ManagedX的開發(fā)過程就僅僅是一個(gè)前端的開發(fā)過程了,因?yàn)楹蠖说牡谝浑A段已經(jīng)完成了,至少可以直接使用。

    下面貼一下ManagedX那將近900行的語法樹:(Library\Scripting\ManagedLanguage\ManagedLanguageExpression.h)
  1 /***********************************************************************
  2 Vczh Library++ 3.0
  3 Developer: 陳梓瀚(vczh)
  4 Scripting::ManagedLanguage
  5 
  6 Classes:
  7 ***********************************************************************/
  8 
  9 #ifndef VCZH_SCRIPTING_MANAGEDLANGUAGE_MANAGEDLANGUAGEEXPRESSION
 10 #define VCZH_SCRIPTING_MANAGEDLANGUAGE_MANAGEDLANGUAGEEXPRESSION
 11 
 12 #include "..\..\Pointer.h"
 13 #include "..\..\String.h"
 14 #include "..\..\Collections\List.h"
 15 #include "..\..\Collections\Dictionary.h"
 16 #include "..\Common\AlgorithmDeclaration.h"
 17 
 18 namespace vl
 19 {
 20     namespace scripting
 21     {
 22         namespace managedlanguage
 23         {
 24             struct ManagedPosition
 25             {
 26                 vint                                        start;
 27                 vint                                        lineStart;
 28                 vint                                        lineIndex;
 29                 vint                                        codeIndex;
 30 
 31                 ManagedPosition();
 32             };
 33 
 34             class ManagedLanguageElement : public Object, private NotCopyable
 35             {
 36             public:
 37                 ManagedPosition                                position;
 38             };
 39 
 40 /***********************************************************************
 41 Basic Constructions
 42 ***********************************************************************/
 43 
 44             class ManagedType : public ManagedLanguageElement
 45             {
 46             public:
 47                 ALGORITHM_TARGET_ROOT(ManagedType)
 48             };
 49 
 50             class ManagedExpression : public ManagedLanguageElement
 51             {
 52             public:
 53                 ALGORITHM_TARGET_ROOT(ManagedExpression)
 54             };
 55 
 56             class ManagedStatement : public ManagedLanguageElement
 57             {
 58             public:
 59                 ALGORITHM_TARGET_ROOT(ManagedStatement)
 60             };
 61 
 62             class ManagedDeclaration : public ManagedLanguageElement
 63             {
 64             public:
 65                 ALGORITHM_TARGET_ROOT(ManagedDeclaration)
 66             };
 67 
 68             class ManagedProgram : public ManagedLanguageElement
 69             {
 70             public:
 71                 collections::List<Ptr<ManagedDeclaration>>    declarations;
 72             };
 73 
 74 /***********************************************************************
 75 Extended Constructions
 76 ***********************************************************************/
 77 
 78             class ManagedExtendedType : public ManagedType
 79             {
 80             public:
 81                 ALGORITHM_ACCEPT_DECLARATION(ManagedType)
 82 
 83                 ALGORITHM_TARGET_ROOT(ManagedExtendedType)
 84             };
 85 
 86             class ManagedExtendedExpression : public ManagedExpression
 87             {
 88             public:
 89                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
 90 
 91                 ALGORITHM_TARGET_ROOT(ManagedExtendedExpression)
 92             };
 93 
 94             class ManagedExtendedStatement : public ManagedStatement
 95             {
 96             public:
 97                 ALGORITHM_ACCEPT_DECLARATION(ManagedStatement)
 98 
 99                 ALGORITHM_TARGET_ROOT(ManagedExtendedStatement)
100             };
101 
102             class ManagedExtendedDeclaration : public ManagedDeclaration
103             {
104             public:
105                 ALGORITHM_ACCEPT_DECLARATION(ManagedDeclaration)
106 
107                 ALGORITHM_TARGET_ROOT(ManagedExtendedDeclaration)
108             };
109 
110 /***********************************************************************
111 Basic Types
112 ***********************************************************************/
113 
114             class ManagedGenericArgumentType : public ManagedType
115             {
116             public:
117                 ALGORITHM_ACCEPT_DECLARATION(ManagedType)
118 
119                 WString                                        name;
120             };
121 
122             class ManagedReferencedType : public ManagedType
123             {
124             public:
125                 ALGORITHM_ACCEPT_DECLARATION(ManagedType)
126 
127                 WString                                        name;
128             };
129 
130             class ManagedMemberType : public ManagedType
131             {
132             public:
133                 ALGORITHM_ACCEPT_DECLARATION(ManagedType)
134 
135                 Ptr<ManagedType>                            operand;
136                 WString                                        member;
137             };
138 
139             class ManagedInstantiatedGenericType : public ManagedType
140             {
141             public:
142                 ALGORITHM_ACCEPT_DECLARATION(ManagedType)
143 
144                 Ptr<ManagedType>                            elementType;
145                 collections::List<Ptr<ManagedType>>            argumentTypes;
146             };
147 
148 #define MANAGED_TYPE_TARGETS(P, F)\
149             F(P, ManagedGenericArgumentType)\
150             F(P, ManagedReferencedType)\
151             F(P, ManagedMemberType)\
152             F(P, ManagedInstantiatedGenericType)\
153             F(P, ManagedExtendedType)\
154 
155             DEFINE_ALGORITHM_INTERFACE(ManagedType, MANAGED_TYPE_TARGETS)
156 
157 /***********************************************************************
158 Extended Types
159 ***********************************************************************/
160 
161             class ManagedArrayType : public ManagedExtendedType
162             {
163             public:
164                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedType)
165 
166                 Ptr<ManagedType>                            elementType;
167                 int                                            dimensionCount;
168             };
169 
170             class ManagedFunctionType : public ManagedExtendedType
171             {
172             public:
173                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedType)
174 
175                 Ptr<ManagedType>                            returnType;
176                 collections::List<Ptr<ManagedType>>            parameterTypes;
177             };
178 
179             class ManagedEventType : public ManagedExtendedType
180             {
181             public:
182                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedType)
183 
184                 Ptr<ManagedType>                            functionType;
185             };
186 
187             class ManagedAutoReferType : public ManagedExtendedType
188             {
189             public:
190                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedType)
191             };
192 
193 #define MANAGED_EXTENDED_TYPE_TARGETS(P, F)\
194             F(P, ManagedArrayType)\
195             F(P, ManagedFunctionType)\
196             F(P, ManagedEventType)\
197             F(P, ManagedAutoReferType)\
198 
199             DEFINE_ALGORITHM_INTERFACE(ManagedExtendedType, MANAGED_EXTENDED_TYPE_TARGETS)
200 
201 /***********************************************************************
202 Basic Expressions
203 ***********************************************************************/
204 
205             class ManagedPrimitiveExpression : public ManagedExpression
206             {
207             };
208 
209             class ManagedNullExpression : public ManagedPrimitiveExpression
210             {
211             public:
212                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
213             };
214 
215             class ManagedIntegerExpression : public ManagedPrimitiveExpression
216             {
217             public:
218                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
219 
220                 bool                                        sign;
221                 union
222                 {
223                     signed __int64                            signedInteger;
224                     unsigned __int64                        unsignedInteger;
225                 }                                            value;
226             };
227 
228             class ManagedFloatExpression : public ManagedPrimitiveExpression
229             {
230             public:
231                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
232 
233                 bool                                        doublePrecision;
234                 double                                        value;
235             };
236 
237             class ManagedBooleanExpression : public ManagedPrimitiveExpression
238             {
239             public:
240                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
241 
242                 bool                                        value;
243             };
244 
245             class ManagedCharExpression : public ManagedPrimitiveExpression
246             {
247             public:
248                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
249 
250                 wchar_t                                        value;
251             };
252 
253             class ManagedStringExpression : public ManagedPrimitiveExpression
254             {
255             public:
256                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
257 
258                 WString                                        value;
259             };
260 
261             class ManagedReferenceExpression : public ManagedExpression
262             {
263             public:
264                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
265 
266                 WString                                        name;
267             };
268 
269             class ManagedMemberExpression : public ManagedExpression
270             {
271             public:
272                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
273 
274                 Ptr<ManagedExpression>                        operand;
275                 WString                                        member;
276             };
277 
278             class ManagedInstanciatedExpression : public ManagedExpression
279             {
280             public:
281                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
282 
283                 Ptr<ManagedExpression>                        operand;
284                 collections::List<Ptr<ManagedType>>            argumentTypes;
285             };
286 
287             class ManagedInvokeExpression : public ManagedExpression
288             {
289             public:
290                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
291 
292                 Ptr<ManagedExpression>                        function;
293                 collections::List<Ptr<ManagedExpression>>    arguments;
294                 collections::List<WString>                    defaultParameterNames;
295                 collections::List<Ptr<ManagedExpression>>    defaultParameterValues;
296             };
297 
298             class ManagedNewExpression : public ManagedExpression
299             {
300             public:
301                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
302 
303                 Ptr<ManagedType>                            objectType;
304                 collections::List<Ptr<ManagedExpression>>    arguments;
305                 collections::List<WString>                    defaultParameterNames;
306                 collections::List<Ptr<ManagedExpression>>    defaultParameterValues;
307                 collections::List<WString>                    propertyNames;
308                 collections::List<Ptr<ManagedExpression>>    propertyValues;
309             };
310 
311             class ManagedFunctionResultExpression : public ManagedExpression
312             {
313             public:
314                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
315             };
316 
317             class ManagedCastingExpression : public ManagedExpression
318             {
319             public:
320                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
321 
322                 Ptr<ManagedExpression>                        operand;
323                 Ptr<ManagedType>                            type;
324             };
325 
326             class ManagedThisExpression : public ManagedExpression
327             {
328             public:
329                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
330             };
331 
332             class ManagedBaseExpression : public ManagedExpression
333             {
334             public:
335                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
336             };
337 
338             class ManagedAssignmentExpression : public ManagedExpression
339             {
340             public:
341                 ALGORITHM_ACCEPT_DECLARATION(ManagedExpression)
342             };
343 
344 #define MANAGED_EXPRESSION_TARGETS(P, F)\
345             F(P, ManagedNullExpression)\
346             F(P, ManagedIntegerExpression)\
347             F(P, ManagedFloatExpression)\
348             F(P, ManagedBooleanExpression)\
349             F(P, ManagedCharExpression)\
350             F(P, ManagedStringExpression)\
351             F(P, ManagedReferenceExpression)\
352             F(P, ManagedMemberExpression)\
353             F(P, ManagedInstanciatedExpression)\
354             F(P, ManagedInvokeExpression)\
355             F(P, ManagedNewExpression)\
356             F(P, ManagedFunctionResultExpression)\
357             F(P, ManagedCastingExpression)\
358             F(P, ManagedThisExpression)\
359             F(P, ManagedBaseExpression)\
360             F(P, ManagedAssignmentExpression)\
361             F(P, ManagedExtendedExpression)\
362 
363             DEFINE_ALGORITHM_INTERFACE(ManagedExpression, MANAGED_EXPRESSION_TARGETS)
364 
365 /***********************************************************************
366 Extended Expressions
367 ***********************************************************************/
368 
369             class ManagedLambdaExpression : public ManagedExtendedExpression
370             {
371             public:
372                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedExpression)
373 
374                 collections::List<Ptr<ManagedType>>            parameterTypes;
375                 collections::List<WString>                    parameterNames;
376                 Ptr<ManagedType>                            returnType;
377                 Ptr<ManagedStatement>                        body;
378             };
379 
380             class ManagedChoiceExpression : public ManagedExtendedExpression
381             {
382             public:
383                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedExpression)
384 
385                 Ptr<ManagedExpression>                        condition;
386                 Ptr<ManagedExpression>                        trueExpression;
387                 Ptr<ManagedExpression>                        falseExpression;
388             };
389 
390             class ManagedNullChoiceExpression : public ManagedExtendedExpression
391             {
392             public:
393                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedExpression)
394 
395                 Ptr<ManagedExpression>                        valueExpression;
396                 Ptr<ManagedExpression>                        candidateExpression;
397             };
398 
399             class ManagedTypeofExpression : public ManagedExtendedExpression
400             {
401             public:
402                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedExpression)
403 
404                 Ptr<ManagedType>                            type;
405             };
406 
407 #define MANAGED_EXTENDED_EXPRESSION_TARGETS(P, F)\
408             F(P, ManagedLambdaExpression)\
409             F(P, ManagedChoiceExpression)\
410             F(P, ManagedNullChoiceExpression)\
411             F(P, ManagedTypeofExpression)\
412 
413             DEFINE_ALGORITHM_INTERFACE(ManagedExtendedExpression, MANAGED_EXTENDED_EXPRESSION_TARGETS)
414 
415 /***********************************************************************
416 Basic Statements
417 ***********************************************************************/
418 
419             class ManagedEmptyStatement : public ManagedStatement
420             {
421             public:
422                 ALGORITHM_ACCEPT_DECLARATION(ManagedStatement)
423             };
424 
425             class ManagedCompositeStatement : public ManagedStatement
426             {
427             public:
428                 ALGORITHM_ACCEPT_DECLARATION(ManagedStatement)
429 
430                 collections::List<Ptr<ManagedStatement>>    statements;
431             };
432 
433             class ManagedExpressionStatement : public ManagedStatement
434             {
435             public:
436                 ALGORITHM_ACCEPT_DECLARATION(ManagedStatement)
437 
438                 Ptr<ManagedExpression>                        expression;
439             };
440 
441             class ManagedVariableStatement : public ManagedStatement
442             {
443             public:
444                 ALGORITHM_ACCEPT_DECLARATION(ManagedStatement)
445 
446                 bool                                        constant;
447                 Ptr<ManagedType>                            type;
448                 WString                                        name;
449                 Ptr<ManagedExpression>                        initializer;
450             };
451 
452             class ManagedIfStatement : public ManagedStatement
453             {
454             public:
455                 ALGORITHM_ACCEPT_DECLARATION(ManagedStatement)
456 
457                 Ptr<ManagedExpression>                        condition;
458                 Ptr<ManagedStatement>                        trueStatement;
459                 Ptr<ManagedStatement>                        falseStatement;
460             };
461 
462             class ManagedWhileStatement : public ManagedStatement
463             {
464             public:
465                 ALGORITHM_ACCEPT_DECLARATION(ManagedStatement)
466 
467                 Ptr<ManagedExpression>                        beginCondition;
468                 Ptr<ManagedExpression>                        endCondition;
469                 Ptr<ManagedStatement>                        statement;
470             };
471 
472             class ManagedForStatement : public ManagedStatement
473             {
474             public:
475                 ALGORITHM_ACCEPT_DECLARATION(ManagedStatement)
476 
477                 Ptr<ManagedStatement>                        initializer;
478                 Ptr<ManagedStatement>                        sideEffect;
479                 Ptr<ManagedExpression>                        condition;
480                 Ptr<ManagedStatement>                        statement;
481             };
482 
483             class ManagedBreakStatement : public ManagedStatement
484             {
485             public:
486                 ALGORITHM_ACCEPT_DECLARATION(ManagedStatement)
487             };
488 
489             class ManagedContinueStatement : public ManagedStatement
490             {
491             public:
492                 ALGORITHM_ACCEPT_DECLARATION(ManagedStatement)
493             };
494 
495             class ManagedReturnStatement : public ManagedStatement
496             {
497             public:
498                 ALGORITHM_ACCEPT_DECLARATION(ManagedStatement)
499             };
500 
501             class ManagedTryCatchStatement : public ManagedStatement
502             {
503             public:
504                 ALGORITHM_ACCEPT_DECLARATION(ManagedStatement)
505 
506                 Ptr<ManagedStatement>                        tryStatement;
507                 collections::List<Ptr<ManagedType>>            catchExceptionTypes;
508                 collections::List<WString>                    catchExceptionNames;
509                 collections::List<Ptr<ManagedStatement>>    catchExceptionHandlers;
510                 Ptr<ManagedStatement>                        finallyStatement;
511             };
512 
513             class ManagedThrowStatement : public ManagedStatement
514             {
515             public:
516                 ALGORITHM_ACCEPT_DECLARATION(ManagedStatement)
517 
518                 Ptr<ManagedExpression>                        expression;
519             };
520 
521 #define MANAGED_STATEMENT_TARGETS(P, F)\
522             F(P, ManagedEmptyStatement)\
523             F(P, ManagedCompositeStatement)\
524             F(P, ManagedExpressionStatement)\
525             F(P, ManagedVariableStatement)\
526             F(P, ManagedIfStatement)\
527             F(P, ManagedWhileStatement)\
528             F(P, ManagedForStatement)\
529             F(P, ManagedBreakStatement)\
530             F(P, ManagedContinueStatement)\
531             F(P, ManagedReturnStatement)\
532             F(P, ManagedTryCatchStatement)\
533             F(P, ManagedThrowStatement)\
534             F(P, ManagedExtendedStatement)
535 
536             DEFINE_ALGORITHM_INTERFACE(ManagedStatement, MANAGED_STATEMENT_TARGETS)
537 
538 /***********************************************************************
539 Extended Statements
540 ***********************************************************************/
541 
542             class ManagedUsingStatement : public ManagedExtendedStatement
543             {
544             public:
545                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedStatement)
546 
547                 Ptr<ManagedType>                            type;
548                 WString                                        name;
549                 Ptr<ManagedExpression>                        initialize;
550                 Ptr<ManagedStatement>                        statement;
551             };
552 
553             class ManagedLockStatement : public ManagedExtendedStatement
554             {
555             public:
556                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedStatement)
557 
558                 Ptr<ManagedExpression>                        lock;
559                 Ptr<ManagedStatement>                        statement;
560             };
561 
562             class ManagedSelectStatement : public ManagedExtendedStatement
563             {
564             public:
565                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedStatement)
566 
567                 Ptr<ManagedExpression>                        expression;
568                 collections::List<Ptr<ManagedExpression>>    caseConditions;
569                 collections::List<Ptr<ManagedStatement>>    caseStatements;
570                 Ptr<ManagedStatement>                        defaultStatements;
571             };
572 
573 #define MANAGED_EXTENDED_STATEMENT_TARGETS(P, F)\
574             F(P, ManagedUsingStatement)\
575             F(P, ManagedLockStatement)\
576             F(P, ManagedSelectStatement)\
577 
578             DEFINE_ALGORITHM_INTERFACE(ManagedExtendedStatement, MANAGED_EXTENDED_STATEMENT_TARGETS)
579 
580 /***********************************************************************
581 Basic Declaration Fragments
582 ***********************************************************************/
583 
584             struct ManagedAttributeInfo
585             {
586             public:
587                 collections::List<Ptr<ManagedNewExpression>>    attributes;
588             };
589 
590             struct ManagedGenericInfo
591             {
592             public:
593                 struct Argument
594                 {
595                     WString                                    name;
596                     collections::List<Ptr<ManagedType>>        typeConstraints;
597                     bool                                    newConstraint;
598                 };
599 
600                 collections::List<Ptr<Argument>>            arguments;
601             };
602 
603             namespace declatt
604             {
605                 enum Accessor
606                 {
607                     Public,
608                     Protected,
609                     Private,
610                     ProtectedInternal,
611                     Internal,
612                 };
613 
614                 enum Inheritation
615                 {
616                     Normal,
617                     Sealed,
618                     Abstract,
619                     Virtual,
620                     Override,
621                 };
622 
623                 enum MemberType
624                 {
625                     Instance,
626                     Static,
627                 };
628 
629                 enum DataType
630                 {
631                     Variable,
632                     Constant,
633                     Readonly,
634                 };
635             };
636 
637             class ManagedMember : public ManagedLanguageElement
638             {
639             public:
640                 ALGORITHM_TARGET_ROOT(ManagedMember)
641 
642                 declatt::Accessor                            accessor;
643                 declatt::MemberType                            memberType;
644                 ManagedAttributeInfo                        attributeInfo;
645             };
646 
647             class ManagedExtendedMember : public ManagedMember
648             {
649             public:
650                 ALGORITHM_ACCEPT_DECLARATION(ManagedMember)
651 
652                 ALGORITHM_TARGET_ROOT(ManagedExtendedMember)
653             };
654 
655             class ManagedParameter : public ManagedLanguageElement
656             {
657             public:
658                 enum ParameterType
659                 {
660                     Normal,
661                     Default,
662                     Params
663                 };
664 
665                 Ptr<ManagedType>                            type;
666                 WString                                        name;
667                 ParameterType                                parameterType;
668                 Ptr<ManagedExpression>                        defaultValue;
669                 bool                                        params;
670             };
671 
672             class ManagedMethodCommon
673             {
674             public:
675                 collections::List<Ptr<ManagedParameter>>    parameters;
676                 Ptr<ManagedStatement>                        body;
677             };
678 
679             class ManagedConstructorCommon
680             {
681             public:
682                 collections::List<Ptr<ManagedExpression>>    baseArguments;
683                 collections::List<WString>                    baseDefaultParameterNames;
684                 collections::List<Ptr<ManagedExpression>>    baseDefaultParameterValues;
685             };
686 
687 /***********************************************************************
688 Basic Members
689 ***********************************************************************/
690 
691             class ManagedField : public ManagedMember
692             {
693             public:
694                 ALGORITHM_ACCEPT_DECLARATION(ManagedMember)
695 
696                 Ptr<ManagedType>                            type;
697                 WString                                        name;
698                 Ptr<ManagedExpression>                        initializer;
699 
700                 declatt::DataType                            dataType;
701             };
702 
703             class ManagedMethod : public ManagedMember, public ManagedMethodCommon
704             {
705             public:
706                 ALGORITHM_ACCEPT_DECLARATION(ManagedMember)
707 
708                 Ptr<ManagedType>                            implementedInterfaceType;
709                 WString                                        name;
710                 Ptr<ManagedType>                            returnType;
711 
712                 declatt::Inheritation                        inheritation;
713                 ManagedGenericInfo                            genericInfo;
714             };
715 
716             class ManagedConstructor : public ManagedMember, public ManagedMethodCommon, public ManagedConstructorCommon
717             {
718             public:
719                 ALGORITHM_ACCEPT_DECLARATION(ManagedMember)
720             };
721 
722 #define MANAGED_MEMBER_TARGETS(P, F)\
723             F(P, ManagedField)\
724             F(P, ManagedMethod)\
725             F(P, ManagedConstructor)\
726             F(P, ManagedExtendedMember)\
727 
728             DEFINE_ALGORITHM_INTERFACE(ManagedMember, MANAGED_MEMBER_TARGETS)
729 
730 /***********************************************************************
731 Extended Members
732 ***********************************************************************/
733 
734             class ManagedProperty : public ManagedExtendedMember
735             {
736             public:
737                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedMember)
738 
739                 Ptr<ManagedType>                            type;
740                 WString                                        name;
741                 Ptr<ManagedStatement>                        getter;
742                 Ptr<ManagedStatement>                        setter;
743 
744                 declatt::Accessor                            setterAccessor;
745                 declatt::Inheritation                        inheritation;
746             };
747 
748             class ManagedConverterOperator : public ManagedExtendedMember
749             {
750             public:
751                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedMember)
752 
753                 Ptr<ManagedType>                            targetType;
754                 bool                                        implicit;
755 
756                 declatt::Inheritation                        inheritation;
757                 ManagedGenericInfo                            genericInfo;
758             };
759 
760             class ManagedConverterConstructor : public ManagedExtendedMember, public ManagedConstructorCommon
761             {
762             public:
763                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedMember)
764 
765                 Ptr<ManagedType>                            sourceType;
766                 bool                                        implicit;
767             };
768 
769 #define MANAGED_EXTENDED_MEMBER_TARGETS(P, F)\
770             F(P, ManagedProperty)\
771             F(P, ManagedConverterOperator)\
772             F(P, ManagedConverterConstructor)\
773 
774             DEFINE_ALGORITHM_INTERFACE(ManagedExtendedMember, MANAGED_EXTENDED_MEMBER_TARGETS)
775 
776 /***********************************************************************
777 Basic Declarations
778 ***********************************************************************/
779 
780             class ManagedTypeDeclaration : public ManagedDeclaration
781             {
782             public:
783                 ALGORITHM_ACCEPT_DECLARATION(ManagedDeclaration)
784 
785                 enum DeclarationType
786                 {
787                     Class,
788                     Structure,
789                     Interface,
790                 };
791 
792                 collections::List<Ptr<ManagedMember>>        members;
793 
794                 declatt::Accessor                            accessor;
795                 declatt::Inheritation                        inheritation;
796                 ManagedGenericInfo                            genericInfo;
797                 ManagedAttributeInfo                        attributeInfo;
798             };
799 
800             class ManagedNamespaceDeclaration : public ManagedDeclaration
801             {
802             public:
803                 ALGORITHM_ACCEPT_DECLARATION(ManagedDeclaration)
804 
805                 collections::List<Ptr<ManagedDeclaration>>    declarations;
806             };
807 
808 #define MANAGED_DECLARATION_TARGETS(P, F)\
809             F(P, ManagedTypeDeclaration)\
810             F(P, ManagedNamespaceDeclaration)\
811             F(P, ManagedExtendedDeclaration)\
812 
813             DEFINE_ALGORITHM_INTERFACE(ManagedDeclaration, MANAGED_DECLARATION_TARGETS)
814 
815 /***********************************************************************
816 Extended Declarations
817 ***********************************************************************/
818 
819             class ManagedEnumerationDeclaration : public ManagedExtendedDeclaration
820             {
821             public:
822                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedDeclaration)
823 
824                 bool                                        composable;
825                 collections::List<WString>                    enumerationNames;
826                 collections::List<vint>                        enumerationValues;
827 
828                 declatt::Accessor                            accessor;
829                 ManagedAttributeInfo                        attributeInfo;
830             };
831 
832             class ManagedTypeRenameDeclaration : public ManagedExtendedDeclaration
833             {
834             public:
835                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedDeclaration)
836 
837                 declatt::Accessor                            accessor;
838                 ManagedGenericInfo                            genericInfo;
839             };
840 
841             class ManagedUsingNamespaceDeclaration : public ManagedExtendedDeclaration
842             {
843             public:
844                 ALGORITHM_ACCEPT_DECLARATION(ManagedExtendedDeclaration)
845 
846                 collections::List<WString>                    namespaceFragments;
847             };
848 
849 #define MANAGED_EXTENDED_DECLARATION_TARGETS(P, F)\
850             F(P, ManagedEnumerationDeclaration)\
851             F(P, ManagedTypeRenameDeclaration)\
852             F(P, ManagedUsingNamespaceDeclaration)\
853 
854             DEFINE_ALGORITHM_INTERFACE(ManagedExtendedDeclaration, MANAGED_EXTENDED_DECLARATION_TARGETS)
855         }
856     }
857 }
858 
859 #endif

posted on 2011-05-28 00:33 陳梓瀚(vczh) 閱讀(3271) 評(píng)論(17)  編輯 收藏 引用 所屬分類: VL++3.0開發(fā)紀(jì)事

評(píng)論:
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-28 01:10 | 溪流
保持隊(duì)形,膜拜大神啊!^_^  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成[未登錄] 2011-05-28 02:09 | 邱震鈺(zblc)
膜拜大神啊~~~~~~~~~~~~~~~~~~~~~
(表代碼...表代碼.........我要圖..........請(qǐng)上圖,我要好看的圖........,最好是連環(huán)畫的那種)  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-28 02:48 | 陳梓瀚(vczh)
@溪流
臥槽你們這群魂淡  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-28 02:52 | ArthasLee
妖~完全看不明白。。。
求大神自拍、3D視頻……  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-28 04:54 | lwch
為什么會(huì)是先有Demo再有語法樹的結(jié)構(gòu)的?不解...  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-28 05:43 | 陳梓瀚(vczh)
@lwch
ManagedX沒有demo,那個(gè)demo是NativeX的。我先做完了NativeX,然后現(xiàn)在基于NativeX做ManagedX。  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-28 05:46 | 陳昱(CY)
我也來膜拜大神,難道以后要成水區(qū)了。。。。。。  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-28 06:54 | lwch
@陳梓瀚(vczh)
ManagedX和NativeX到底是兩種神馬玩意..  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成[未登錄] 2011-05-28 07:45 | 邱震鈺(zblc)
@lwch
嘛,我認(rèn)為就像MSIL和C#的關(guān)系  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-28 09:52 | 陳梓瀚(vczh)
@lwch
看本文的“NativeX”上的超鏈接  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-28 09:52 | 陳梓瀚(vczh)
@邱震鈺(zblc)
no,是C和C#的關(guān)系  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-28 10:40 | Enic
雖然不知道樓主在說什么,但是感覺樓主很牛逼,,,

膜拜大神啊,,,  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-28 18:39 | 陳梓瀚(vczh)
@Enic
........  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成[未登錄] 2011-05-28 19:30 | 邱震鈺(zblc)
@陳梓瀚(vczh)
- -bnr ...... 原來如此 廣義上是這么回事  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-29 02:13 | airtrack
額,還是膜拜下。  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-30 01:29 | 千暮(zblc)
膜拜樓主啊~~~~~~~~~~~~~~~~~~~~~~~~
(每每看到樓主的帖子如此風(fēng)騷且韻味十足 我就情不自禁的想膜拜一下~~~~~~~~)  回復(fù)  更多評(píng)論
  
# re: Vczh Library++3.0托管語言語法樹完成[未登錄] 2011-05-30 02:58 | connor
膜拜大神啊~~~~~~~~~~
求包 養(yǎng)~~~~~~~~~~  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美激情bt| 久久免费视频这里只有精品| 国产精品99久久久久久人| 国产美女一区二区| 久久蜜桃精品| 免费观看在线综合| 亚洲视频www| 欧美一级片在线播放| 国自产拍偷拍福利精品免费一| 免费成人性网站| 欧美精品三级| 久久大逼视频| 蜜臀va亚洲va欧美va天堂| 在线亚洲欧美视频| 午夜视频在线观看一区二区三区 | 久久福利影视| 老鸭窝毛片一区二区三区| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲成人在线网| 国产精品草莓在线免费观看| 久久久国产精彩视频美女艺术照福利 | 国产精品美女黄网| 蜜桃av一区二区在线观看| 欧美日韩国产丝袜另类| 久久精品国产一区二区电影| 老司机亚洲精品| 亚洲欧美美女| 毛片av中文字幕一区二区| 中文日韩在线视频| 欧美中文日韩| 一区二区三区精密机械公司 | 欧美精品一区二| 欧美一区二区视频观看视频| 快射av在线播放一区| 亚洲砖区区免费| 葵司免费一区二区三区四区五区| 亚洲天堂成人在线视频| 久久久久久久综合色一本| 宅男噜噜噜66一区二区66| 久久精品国产69国产精品亚洲| 艳女tv在线观看国产一区| 久久av老司机精品网站导航| 一区二区三区av| 久久久久久久久一区二区| 一级成人国产| 久久久久成人精品免费播放动漫| 制服丝袜激情欧洲亚洲| 久久人人爽人人爽| 午夜影视日本亚洲欧洲精品| 欧美激情1区2区3区| 久久精品综合网| 欧美日韩综合网| 男女精品视频| 国产日韩欧美一区二区| 99ri日韩精品视频| 亚洲国产精品一区二区第四页av| 亚洲欧美国产精品桃花| 一区二区三区国产精品| 美女亚洲精品| 久久综合久久美利坚合众国| 国产精品网站在线播放| 亚洲美女视频在线观看| 亚洲黄色在线视频| 久久成人亚洲| 欧美一级欧美一级在线播放| 欧美日韩精品国产| 欧美国产一区在线| 国外成人在线| 亚洲欧美视频在线观看| 9色porny自拍视频一区二区| 欧美国产日韩视频| 国产日韩亚洲欧美综合| 亚洲先锋成人| 亚洲桃色在线一区| 欧美精品成人| 亚洲福利视频免费观看| 在线观看视频亚洲| 久久av在线| 久久精品99国产精品日本| 国产精品久久久久久久app| 亚洲三级视频| 亚洲精品中文字幕在线| 麻豆成人精品| 欧美激情成人在线视频| 亚洲观看高清完整版在线观看| 久久久久久电影| 久久人体大胆视频| 国产一区二区三区在线免费观看 | 中文亚洲视频在线| 亚洲午夜一二三区视频| 欧美喷潮久久久xxxxx| 亚洲国产高清高潮精品美女| 亚洲国产精品成人综合| 久久免费视频在线| 老司机一区二区| 激情久久久久| 久久久久久久综合日本| 噜噜爱69成人精品| 影音先锋日韩资源| 久久婷婷国产综合国色天香| 久久综合伊人77777| 伊人久久大香线| 久久久久久穴| 欧美freesex交免费视频| 尤物在线精品| 蜜桃av综合| 91久久久久久| 中文一区字幕| 国产精品剧情在线亚洲| 亚洲欧美中文在线视频| 久久九九精品99国产精品| 加勒比av一区二区| 久久午夜精品一区二区| 欧美国产一区二区在线观看| 日韩亚洲欧美一区二区三区| 欧美日韩精品一区二区三区四区| 一本大道久久a久久精品综合| 亚洲欧美中文日韩在线| 国产日本欧美一区二区| 欧美一区二区三区视频在线观看| 久久久久国产精品一区| 在线成人中文字幕| 欧美成人精品一区二区| 亚洲理论电影网| 午夜精品福利视频| 国产亚洲欧洲| 美女91精品| 99热在这里有精品免费| 欧美一区二区三区啪啪| 激情成人综合| 欧美88av| 在线视频欧美日韩精品| 久久精品2019中文字幕| 在线精品视频一区二区三四| 欧美激情精品久久久六区热门| 一区二区91| 久久免费国产精品| 亚洲精品国产视频| 欧美视频免费看| 欧美影院精品一区| 亚洲成色777777在线观看影院| 在线亚洲免费| 国产永久精品大片wwwapp| 蜜臀va亚洲va欧美va天堂| 99精品国产福利在线观看免费| 欧美一区午夜视频在线观看| 亚洲风情在线资源站| 欧美日韩午夜精品| 亚洲欧美在线磁力| 欧美激情视频一区二区三区在线播放| 亚洲天天影视| 在线精品观看| 欧美三级日本三级少妇99| 久久aⅴ国产紧身牛仔裤| 亚洲人成网站777色婷婷| 欧美在线啊v| 亚洲欧洲日产国产网站| 国产精品久久久久久久久久久久久| 久久精品亚洲一区| 亚洲美女视频| 久久一区激情| 亚洲网站在线| 在线国产欧美| 国产精品另类一区| 欧美sm极限捆绑bd| 亚洲欧美成人一区二区三区| 欧美激情中文不卡| 欧美有码在线视频| 99精品久久久| 禁断一区二区三区在线| 欧美日韩一区二区三区高清| 欧美一区二视频在线免费观看| 最新日韩中文字幕| 久久久噜噜噜久久久| 亚洲特色特黄| 亚洲欧洲日产国码二区| 国产欧美精品| 欧美日韩福利视频| 久久久天天操| 亚洲欧美日韩综合| 亚洲精品在线电影| 欧美www在线| 欧美专区在线| 中文久久乱码一区二区| 1024精品一区二区三区| 国产日产欧产精品推荐色| 欧美另类人妖| 久久久一区二区| 亚洲欧美日韩综合国产aⅴ| 99www免费人成精品| 欧美激情精品久久久| 久久女同精品一区二区| 亚洲欧美日本另类| 一区二区三区日韩欧美| 亚洲电影免费在线观看| 国产亚洲一级高清| 国产精品国内视频| 欧美美女bb生活片| 麻豆91精品91久久久的内涵| 欧美一区综合|