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

隨筆-341  評論-2670  文章-0  trackbacks-0
    經歷了大約一個多星期的挑選,Vczh Library++3.0托管語言的語法樹大約就定下來了。跟本地語言有一個缺省的語法叫NativeX一樣,這次的語法就叫ManagedX了。當然ManagedX只是設計來直接反映托管語言語法樹的一門語言,如果愿意的話,這個語法樹還能被編譯成其他長得像(嗯,只能是像,因為必須是托管的,有類沒指針等)Basic啦Pascal那樣子的東西。

    我將ManagedX的語法分為兩部分。第一部分是基礎部分,第二部分則是擴展部分。將他們分開的依據就是,一個基于擴展部分的程序,總是可以被重寫為一個功能完全一致但是僅基于基礎部分的比較復雜的程序。舉一個簡單的例子。我們知道lambda表達式在一門面向對象語言中并不是必需的,它只是一個語法糖。如果我們在面向對象語言中把函數指針統統抽象成一個基類或者接口(就跟C#的Delegate一樣)的話,一個lambda表達式總是可以被表達成一個新的類型,然后只需要重新組織一下生成該lambda表達式的函數的局部變量,就可以把lambda表達是去掉了。當然lambda表達式作為一個語法來說是必需的,因為它大大提高了開發效率。但是對于編譯過程來說又不是必需的,因為它總是可以用自動重寫的方法來去掉。

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

    從這里打架就可以知道為什么我之前要做NativeX了,因為實現了NativeX之后,以后實現很多新的復雜語言會十分省事。運行時的虛擬機做好了,函數庫也有了一部分,還有基于二進制編譯結果的多文件支持啦、泛型啦、concept mapping啦、外接函數插件啦、還有將來會做的debugger,和編譯到X86的過程,都可以直接被新的語言所享受。在這里ManagedX的開發過程就僅僅是一個前端的開發過程了,因為后端的第一階段已經完成了,至少可以直接使用。

    下面貼一下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) 閱讀(3236) 評論(17)  編輯 收藏 引用 所屬分類: VL++3.0開發紀事

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

膜拜大神啊,,,  回復  更多評論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-28 18:39 | 陳梓瀚(vczh)
@Enic
........  回復  更多評論
  
# re: Vczh Library++3.0托管語言語法樹完成[未登錄] 2011-05-28 19:30 | 邱震鈺(zblc)
@陳梓瀚(vczh)
- -bnr ...... 原來如此 廣義上是這么回事  回復  更多評論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-29 02:13 | airtrack
額,還是膜拜下。  回復  更多評論
  
# re: Vczh Library++3.0托管語言語法樹完成 2011-05-30 01:29 | 千暮(zblc)
膜拜樓主啊~~~~~~~~~~~~~~~~~~~~~~~~
(每每看到樓主的帖子如此風騷且韻味十足 我就情不自禁的想膜拜一下~~~~~~~~)  回復  更多評論
  
# re: Vczh Library++3.0托管語言語法樹完成[未登錄] 2011-05-30 02:58 | connor
膜拜大神啊~~~~~~~~~~
求包 養~~~~~~~~~~  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品久久精品日日| 亚洲精品五月天| 亚洲私拍自拍| 国产精品久久波多野结衣| 一本色道久久88亚洲综合88| 欧美激情视频在线播放| 久热爱精品视频线路一| 91久久中文| 一本一本久久| 国产精品自在欧美一区| 久久久噜噜噜久久久| 美女诱惑黄网站一区| 一区二区三欧美| 亚洲综合首页| 亚洲高清不卡在线观看| 亚洲精品日日夜夜| 国产女人水真多18毛片18精品视频| 欧美在线中文字幕| 久久乐国产精品| 亚洲免费电影在线观看| 亚洲一区精品在线| 亚洲电影欧美电影有声小说| 亚洲区中文字幕| 国产精品高潮呻吟| 美国三级日本三级久久99| 欧美激情第4页| 欧美在线一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| a91a精品视频在线观看| 午夜亚洲影视| 亚洲小说欧美另类婷婷| 激情欧美一区| 夜夜嗨av一区二区三区中文字幕| 国产午夜精品久久| 亚洲精品国产系列| 国内成人精品一区| 国产精品99久久久久久久久久久久 | 西西裸体人体做爰大胆久久久| 亚洲激情偷拍| 国产一区二区三区四区在线观看| 亚洲第一福利社区| 狠狠综合久久av一区二区老牛| 亚洲精选大片| 在线成人免费视频| 羞羞色国产精品| 亚洲伊人久久综合| 欧美不卡视频一区| 另类尿喷潮videofree| 国产精品久久久久久户外露出 | 免费在线播放第一区高清av| 国产精品男人爽免费视频1| 日韩午夜激情| 麻豆精品网站| 久久九九精品| 国产亚洲欧洲一区高清在线观看| 日韩亚洲欧美中文三级| 亚洲片在线资源| 另类酷文…触手系列精品集v1小说| 亚洲精品一区久久久久久| 欧美韩国日本综合| 男同欧美伦乱| …久久精品99久久香蕉国产 | 亚洲精品资源美女情侣酒店| 亚洲国产精品欧美一二99| 久久久午夜视频| 免费欧美日韩国产三级电影| 激情欧美日韩一区| 久久亚洲影院| 欧美激情女人20p| 91久久久一线二线三线品牌| 免费毛片一区二区三区久久久| 蜜桃av一区二区| 在线精品高清中文字幕| 久久久蜜臀国产一区二区| 久久久噜噜噜久久中文字免| 国产农村妇女毛片精品久久麻豆| 99re66热这里只有精品4| 国产一区二区三区最好精华液| 中日韩美女免费视频网址在线观看 | 久久久国产精彩视频美女艺术照福利| 久久综合色天天久久综合图片| 亚洲麻豆一区| 欧美三区美女| 一区二区电影免费观看| 亚洲性视频h| 亚洲一区二区在线| 亚洲在线一区| 国产精品久久久一区麻豆最新章节| 亚洲精品乱码久久久久久久久| 亚洲精品一区在线观看| 美女久久一区| 亚洲大片在线| 性刺激综合网| 国产一区二区三区精品久久久| 久久亚洲综合色一区二区三区| 欧美成人精品一区二区| 亚洲精品资源| 欧美日韩亚洲一区二区三区| 夜色激情一区二区| 久久se精品一区精品二区| 国内精品久久久久影院 日本资源| 久久国产精品久久w女人spa| 欧美高清视频在线观看| 在线视频亚洲欧美| 国产精品综合视频| 欧美一区二区三区免费看| 欧美成人精品h版在线观看| 亚洲精品中文字幕在线| 国产精品女人网站| 午夜久久一区| 亚洲电影网站| 亚洲综合国产激情另类一区| 国产视频亚洲| 欧美高清视频一区二区| 在线视频欧美一区| 亚洲黄一区二区三区| 欧美一区二区三区播放老司机| 国产精品久久久久久妇女6080| 久久五月天婷婷| 亚洲视频图片小说| 蜜桃av一区二区三区| 国产精品第2页| 欧美成熟视频| 亚洲欧美日韩天堂一区二区| 久久综合五月天婷婷伊人| 在线午夜精品| 亚洲国产成人av好男人在线观看| 国产精品成人v| 欧美第一黄色网| 久久大综合网| 亚洲精品一区二区三区四区高清 | 亚洲风情在线资源站| 欧美视频在线视频| 理论片一区二区在线| 亚洲午夜高清视频| 欧美成人亚洲成人| 亚洲视频在线看| 一区电影在线观看| 亚洲国产一区二区视频| 亚洲精品乱码久久久久久黑人 | 好看的日韩视频| 国产情人综合久久777777| 欧美日本韩国一区二区三区| 久久综合伊人77777尤物| 亚洲欧美日韩爽爽影院| 亚洲美女淫视频| 欧美大片18| 欧美成人激情视频免费观看| 欧美在线视频一区二区三区| 一区二区欧美国产| 一区二区三区四区在线| 亚洲欧洲午夜| 在线看片日韩| 一区二区三区在线观看国产| 国产欧美高清| 国产色综合久久| 国产日韩av高清| 欧美激情中文字幕在线| 美女视频黄a大片欧美| 久久久久.com| 欧美高清成人| 欧美日本三区| 国产欧美日韩精品在线| 国产日韩三区| 激情综合自拍| 亚洲国产激情| 亚洲精品国产拍免费91在线| 亚洲人成绝费网站色www| 91久久精品美女高潮| 韩国av一区二区三区四区| 在线观看三级视频欧美| 狠狠综合久久av一区二区老牛| 尤物精品在线| 亚洲精品欧美极品| 中文日韩欧美| 一区二区高清视频在线观看| 欧美一区二区三区四区在线| 久久精品91久久香蕉加勒比| 久久久中精品2020中文| 欧美二区在线| 99re视频这里只有精品| 欧美视频免费在线| 欧美国产日本在线| 国产精品色午夜在线观看| 国产欧美日韩精品丝袜高跟鞋| 韩日欧美一区二区三区| 一本一道久久综合狠狠老精东影业| 亚洲欧美日韩第一区| 久久免费少妇高潮久久精品99| 欧美多人爱爱视频网站| 亚洲作爱视频| 久久久久久久97| 欧美日本高清| 在线观看福利一区| 国产精品盗摄久久久| 亚洲黄页一区| 香蕉久久久久久久av网站| 免费亚洲网站| 亚洲欧美久久久| 久久久久se|