21.1. AddDataDef 関数説明 |
関数名 | AddDataDef |
---|---|
定義ファイル名 | pass2.cpp |
定義行 | 533 |
宣言形式 | void AddDataDef ( TList * TokenList , int sPos , int ePos , TList * ValDataList ) |
概要 | INTEGERやREALなどのデータ宣言の処理を行ない、変数リストに変数と型を追加す る。 |
戻り値 | なし |
パラメタ説明 | TokenList 処理するトークンリスト sPos TokenList上での開始位置 ePos TokenList上での終了位置 ValDataList 変数データリスト |
機能説明 | INTEGERやREALなどのデータ宣言の処理を行ない、変数リストに変数と型を追加す る。 ValDataには、どのモジュールでの宣言かが、ModuleIdxから設定される。 PARAMETERを含む宣言の場合には、値の計算も行う。 変数には、ModuleIdxも保持して、ModuleIdxが異なる場合は別変数とする。 パラメータ以外の定数での代入文などは、変数として扱う。(分岐,COMMONなどが ある) |
備考 |
名称 | 定義ファイル名 | 定義行 | |
---|---|---|---|
1 | Pass2_Line | pass2.cpp | 104 |
名称 | 定義ファイル名 | 定義行 | |
---|---|---|---|
1 | Eval | pass2.cpp | 922 |
2 | Add | ||
3 | AnsiCompareText | ||
4 | memcpy |
名称 | 定義ファイル名 | 定義行 | |
---|---|---|---|
1 | EvalConstF | pass2.cpp | 24 |
2 | ImplType | pass2.cpp | 23 |
3 | ModuleIdx | pass2.cpp | 20 |
名称 | 種別 | 定義ファイル名 | 定義行 | |
---|---|---|---|---|
1 | TToken | クラス | pass1.h | 216 |
2 | TValData | クラス | pass2.h | 42 |
関数論理チャート | +------------------------------------------------------------------------+ 533 +--+ void AddDataDef(TList *TokenList,int sPos,int ePos,TList *ValDataList) | 534 | { | +--+---------------------------------------------------------------------+ 535 +--- int i,j; 536 +--- TToken *Token; 537 +--- int TokId; 538 +--- AnsiString TokStr; 539 +--- bool IntF = false; 540 +--- bool RealF = false; 541 +--- bool CharF = false; 542 +--- bool LogicF = false; 543 +--- bool ComplexF = false; 544 +--- bool ParamaterF = false; 545 +--- bool DimensionF = false; 546 +--- int UseTokLen; 547 +--- double dData; 548 +--- int ArrayLevel = 0; 549 +--- int ArrayCount[100]; 550 +--- int ArrayStart[100]; 551 +--- int DimAttr_ArrayLevel = 0; // Dimension属性でのArrayLevel(DimensionF=true) 552 +--- int DimAttr_ArrayCount[100]; 553 +--- int DimAttr_ArrayStart[100]; 554 +--- int DataLength = 0; 555 +--- bool ParamValF; 556 +--- double ParamData; 557 +--- AnsiString ValName; 558 +--- int DefPos; 559 +--- int DefPosS,DefPosE; 560 +--- int ArrayDefPosS,ArrayDefPosE; 561 | 562 +--- ArrayDefPosS = ArrayDefPosE = -1; 563 | 564 +--- // 565 | // 宣言部分の処理 566 | // 567 +--- DefPosS = sPos; | +----------------------------------+ 568 +--+ for(i = sPos ; i <= ePos ; i++){ | | +--+-------------------------------+ 569 | +--- Token = (TToken *)TokenList->Items[i]; 570 | +--- TokId = Token->TokId; 571 | +--- TokStr = Token->Str; 572 | | | | +----------------+ 573 | +--+ switch(TokId){ | | | +--+-------------+ | | +---------------------+ 574 | | | case tid_INTEGER: | | | +---------------------+ 575 | | +--- IntF = true; | | | +--------+ 576 | | +--+ break; | | | | +--------+ | | +-----------------+ 577 | | | case tid_REAL: | | | +-----------------+ 578 | | +--- RealF = true; | | | +--------+ 579 | | +--+ break; | | | | +--------+ | | +-----------------------------+ 580 | | | case tid_DOUBLEPRECISION: | | | +-----------------------------+ 581 | | +--- RealF = true; | | | +--------+ 582 | | +--+ break; | | | | +--------+ | | +-----------------------+ 583 | | | case tid_CHARACTER: | | | +-----------------------+ 584 | | +--- CharF = true; | | | +--------+ 585 | | +--+ break; | | | | +--------+ | | +---------------------+ 586 | | | case tid_LOGICAL: | | | +---------------------+ 587 | | +--- LogicF = true; | | | +--------+ 588 | | +--+ break; | | | | +--------+ | | +---------------------+ 589 | | | case tid_COMPLEX: | | | +---------------------+ 590 | | +--- ComplexF = true; | | | +--------+ 591 | | +--+ break; | | | | +--------+ | | +-----------------------+ 592 | | | case tid_DIMENSION: | | | +-----------------------+ 593 | | +--- // 594 | | | // F90に対応するため、次が(の場合には、Dimension属性として扱う。 595 | | | // (でない場合は、DIMENSION文となる。 2007/1/19 596 | | | // また、定数でない場合もOK(デフォルトの値)とする。 597 | | | // | | | +------------------------------------------------------------------+ 598 | | +--+ if((i+1 < TokenList->Count) | 599 | | | | &&(((TToken *)TokenList->Items[i+1])->TokId == tid_Kakko)){ | | | | +--+---------------------------------------------------------------+ 600 | | | +--- int TokId2; 601 | | | +--- AnsiString TokStr2; 602 | | | | 603 | | | +--- DimensionF = true; 604 | | | +--- i+=2; 605 | | | +--- // 606 | | | | // )までを対象となり、Dim_ArrayLevelを求める。 607 | | | | // 608 | | | | // Exp: DIMENSION(1:3,2) 等 609 | | | | // | | | | +----------------------------------------------------------------------------+ 610 | | | +--+ while((i < ePos)&&(((TToken *)TokenList->Items[i])->TokId != tid_Kokka)){ | | | | | +--+-------------------------------------------------------------------------+ 611 | | | | +--- TokId2 = ((TToken *)TokenList->Items[i])->TokId; 612 | | | | +--- TokStr2 = ((TToken *)TokenList->Items[i])->Str; | | | | | +----------------------------------------------------+ 613 | | | | +--+ if(TokId2 == tid_Koron){ // 先頭なし Exp. (:3) | | | | | | +--+-------------------------------------------------+ 614 | | | | | +--- i++; | | | | | +-+---+ 615 | | | | | | } | | | | | | +-----+ 616 | | | | +--- // 数値の処理 617 | | | | +--- UseTokLen = Eval(TokenList,i,ePos,ValDataList,&dData); | | | | | +------------------+ 618 | | | | +--+ if(!EvalConstF){ | | | | | | +--+---------------+ 619 | | | | | +--- // ErrMsg(TokenList,i,"宣言部エラー"); 620 | | | | | +--- dData = 0; | | | | | +-+---+ 621 | | | | | | } | | | | | | +-----+ 622 | | | | +--- i += UseTokLen; 623 | | | | +--- TokId2 = ((TToken *)TokenList->Items[i])->TokId; 624 | | | | +--- TokStr2 = ((TToken *)TokenList->Items[i])->Str; | | | | | +----------------------------------------------------+ 625 | | | | +--+ if(TokId2 == tid_Koron){ // 先頭あり Exp (1:3) | | | | | | +--+-------------------------------------------------+ 626 | | | | | +--- DimAttr_ArrayStart[DimAttr_ArrayLevel] = (int)dData; 627 | | | | | +--- i++; 628 | | | | | +--- TokId2 = ((TToken *)TokenList->Items[i])->TokId; 629 | | | | | +--- TokStr2 = ((TToken *)TokenList->Items[i])->Str; 630 | | | | | +--- UseTokLen = Eval(TokenList,i,ePos,ValDataList,&dData); | | | | | | +------------------+ 631 | | | | | +--+ if(!EvalConstF){ | | | | | | | +--+---------------+ 632 | | | | | | +--- // ErrMsg(TokenList,i,"宣言部エラー"); 633 | | | | | | +--- dData = 0; | | | | | | +-+---+ 634 | | | | | | | } | | | | | | | +-----+ 635 | | | | | +--- i += UseTokLen; 636 | | | | | +--- DimAttr_ArrayCount[DimAttr_ArrayLevel] = (int)dData- 637 | | | | | | DimAttr_ArrayStart[DimAttr_ArrayLevel] + 1; | | | | | +-+---+ 638 | | | | | | } | | | | | | +-+---+ | | | | | +-+-------+ 638 | | | | | | else{ | | | | | | +-+-------+ 639 | | | | | +--- DimAttr_ArrayStart[DimAttr_ArrayLevel] = 1; 640 | | | | | +--- DimAttr_ArrayCount[DimAttr_ArrayLevel] = (int)dData; | | | | | +-+---+ 641 | | | | | | } | | | | | | +-----+ 642 | | | | +--- TokId2 = ((TToken *)TokenList->Items[i])->TokId; 643 | | | | +--- TokStr2 = ((TToken *)TokenList->Items[i])->Str; | | | | | +----------------------------+ 644 | | | | +--+ if(TokId2 == tid_Kannma){ | | | | | | +--+-------------------------+ 645 | | | | | +--- DimAttr_ArrayLevel++; | | | | | +-+---+ 646 | | | | | | } | | | | | | +-+---+ | | | | | +-+-------------------------------+ 646 | | | | | | else if(TokId2 == tid_Kokka){ | | | | | | +-+-------------------------------+ | | | | | | +--------+ 647 | | | | | +--+ break; | | | | | | | +--------+ | | | | | +-+---+ 648 | | | | | | } | | | | | | +-----+ 649 | | | | +--- i++; | | | | +-+---+ 650 | | | | | } | | | | | +-----+ | | | +-+---+ 651 | | | | } | | | | +-----+ | | | +--------+ 652 | | +--+ break; | | | | +--------+ | | +-----------------------+ 653 | | | case tid_PARAMETER: | | | +-----------------------+ 654 | | +--- ParamaterF = true; | | | +--------+ 655 | | +--+ break; | | | | +--------+ | | +---------------------------+ 656 | | | case tid_Kannma: // , | | | +---------------------------+ 657 | | +--- // ,は、ArrayLevelを Upする。 658 | | +--- ArrayLevel++; | | | +--------+ 659 | | +--+ break; | | | | +--------+ | | +---------------------------------+ 660 | | | case tid_KoronKoron: // :: | | | +---------------------------------+ 661 | | +--- // 宣言部分終了 662 | | +--- sPos = i+1; 663 | | +--- i = ePos+1; | | | +--------+ 664 | | +--+ break; | | | | +--------+ | | +-----------------------+ 665 | | | case tid_Kakko: // ( | | | +-----------------------+ 666 | | +--- // 667 | | | // (Len=xx) や (xx,xx)で配列要素数を指定 ')'までの処理を行う。 668 | | | // ただし、PARAMETERの直後は、()はパラメータの設定になる。 669 | | | // | | | +----------------------------------------------------------------+ 670 | | +--+ if(((TToken *)TokenList->Items[i-1])->TokId == tid_PARAMETER){ | | | | +--+-------------------------------------------------------------+ 671 | | | +--- // 宣言部分終了 672 | | | +--- sPos = i+1; 673 | | | +--- i = ePos+1; | | | +-+---+ 674 | | | | } | | | | +-+---+ | | | +-+-------+ 674 | | | | else{ | | | | +-+-------+ 675 | | | +--- // (Len=xx)か (xx,xx) 注:xxは、PARAMETERでの値も可能 676 | | | +--- i++; | | | | +------------------------------------------------------------------------+ 677 | | | +--+ if((AnsiCompareText(((TToken *)TokenList->Items[i])->Str,"LEN") == 0) | 678 | | | | | &&(((TToken *)TokenList->Items[i+1])->TokId == tid_Set)){ | | | | | +--+---------------------------------------------------------------------+ 679 | | | | +--- // Len = の処理 680 | | | | +--- i++; | | | | +-+---+ 681 | | | | | } | | | | | +-----+ | | | | +------------------------------------------------------------------------+ 682 | | | +--+ if((AnsiCompareText(((TToken *)TokenList->Items[i])->Str,"KIND") == 0) | 683 | | | | | &&(((TToken *)TokenList->Items[i+1])->TokId == tid_Set)){ | | | | | +--+---------------------------------------------------------------------+ 684 | | | | +--- // KIND = の処理 685 | | | | +--- i++; | | | | +-+---+ 686 | | | | | } | | | | | +-----+ 687 | | | +--- // 数値の処理 688 | | | +--- UseTokLen = Eval(TokenList,i,ePos,ValDataList,&dData); | | | | +------------------+ 689 | | | +--+ if(!EvalConstF){ | | | | | +--+---------------+ 690 | | | | +--- // ErrMsg(TokenList,i,"宣言部エラー"); 691 | | | | +--- dData = 0; | | | | +-+---+ 692 | | | | | } | | | | | +-----+ 693 | | | +--- i += UseTokLen; 694 | | | +--- DataLength = (int)dData; // 文字列長さは、DataLength | | | +-+---+ 695 | | | | } | | | | +-----+ | | | +--------+ 696 | | +--+ break; | | | | +--------+ | | +-----------+ 697 | | | default: | | | +-----------+ | | | +--------------------+ 698 | | +--+ if(TokStr == "*"){ | | | | +--+-----------------+ 699 | | | +--- // REAL*8 や INTEGER*4 などの処理 700 | | | +--- i++; 701 | | | +--- Token = (TToken *)TokenList->Items[i]; | | | | +------------------------------------+ 702 | | | +--+ if(Token->TokId == tid_ConstInt){ | | | | | +--+---------------------------------+ 703 | | | | +--- DataLength = (int)Token->dData; // 文字列長さは、DataLength | | | | +-+---+ 704 | | | | | } | | | | | +-----+ 705 | | | | | | | +-+---+ 706 | | | | } | | | | +-+---+ | | | +-+-------+ 706 | | | | else{ | | | | +-+-------+ 707 | | | +--- // 宣言部分終了 708 | | | +--- sPos = i; 709 | | | +--- i = ePos+1; | | | +-+---+ 710 | | | | } | | | | +-----+ | | +-+---+ 711 | | | } | | | +-----+ | +-+---+ 712 | | } | | +-----+ 713 +--- DefPosE = sPos; 714 +--- // 715 | // 変数部分の処理 716 | // 変数の定義を追加する。宣言(PARAMETERを含む)のみが対象。 717 | // もし、変数名のみで、DimensonF=treu(Dimension属性あり)の場合は、 718 | // Dim_ArrayLevel等を使用する。 Add 2007/01/18 719 | // | +----------------------------------+ 720 +--+ for(i = sPos ; i <= ePos ; i++){ | | +--+-------------------------------+ 721 | +--- Token = (TToken *)TokenList->Items[i]; 722 | +--- TokId = Token->TokId; 723 | +--- TokStr = Token->Str; 724 | | | | +------------------+ 725 | +--+ if(TokId != -1){ | | | +--+---------------+ | | | +--------+ 726 | | +--+ break; | | | | +--------+ | | +-+---+ 727 | | | } | | | +-----+ 728 | +--- DefPos = i; 729 | +--- ValName = TokStr; 730 | +--- i++; 731 | +--- Token = (TToken *)TokenList->Items[i]; 732 | +--- TokId = Token->TokId; 733 | +--- TokStr = Token->Str; 734 | +--- ArrayLevel = 0; | | +--------------------+ 735 | +--+ if(TokStr == "("){ | | | +--+-----------------+ 736 | | +--- // 737 | | | // 配列宣言の添え字の処理 738 | | | // REAL D(3,4) 739 | | | // 740 | | +--- ArrayDefPosS = i; 741 | | +--- i++; | | | +--------------+ 742 | | +--+ while(true){ | | | | +--+-----------+ 743 | | | +--- UseTokLen = Eval(TokenList,i,ePos,ValDataList,&dData); | | | | +------------------+ 744 | | | +--+ if(!EvalConstF){ | | | | | +--+---------------+ 745 | | | | +--- i += UseTokLen; 746 | | | | +--- ArrayStart[ArrayLevel] = 1; 747 | | | | +--- ArrayCount[ArrayLevel] = 0; | | | | +-+---+ 748 | | | | | } | | | | | +-+---+ | | | | +-+-------+ 748 | | | | | else{ | | | | | +-+-------+ 749 | | | | +--- i += UseTokLen; 750 | | | | +--- ArrayCount[ArrayLevel] = (int)dData; 751 | | | | +--- ArrayStart[ArrayLevel] = 1; 752 | | | | +--- // if(((TToken *)TokenList->Items[i+1])->TokId == tid_Koron){ | | | | | +----------------------------------------------------------+ 753 | | | | +--+ if(((TToken *)TokenList->Items[i])->TokId == tid_Koron){ | | | | | | +--+-------------------------------------------------------+ 754 | | | | | +--- // : を含んだ宣言の処理 755 | | | | | +--- i++; 756 | | | | | +--- ArrayStart[ArrayLevel] = ArrayCount[ArrayLevel]; 757 | | | | | +--- UseTokLen = Eval(TokenList,i,ePos,ValDataList,&dData); | | | | | | +------------------+ 758 | | | | | +--+ if(!EvalConstF){ | | | | | | | +--+---------------+ 759 | | | | | | +--- i += UseTokLen; 760 | | | | | | +--- ArrayCount[ArrayLevel] = 0; | | | | | | +-+---+ 761 | | | | | | | } | | | | | | | +-+---+ | | | | | | +-+-------+ 761 | | | | | | | else{ | | | | | | | +-+-------+ 762 | | | | | | +--- i += UseTokLen; 763 | | | | | | +--- ArrayCount[ArrayLevel] = (int)dData - ArrayStart[ArrayLevel]+1; | | | | | | +-+---+ 764 | | | | | | | } | | | | | | | +-----+ | | | | | +-+---+ 765 | | | | | | } | | | | | | +-----+ | | | | +-+---+ 766 | | | | | } | | | | | +-----+ 767 | | | +--- ArrayLevel++; 768 | | | +--- Token = (TToken *)TokenList->Items[i]; 769 | | | +--- TokId = Token->TokId; 770 | | | +--- TokStr = Token->Str; | | | | +--------------------------+ 771 | | | +--+ if(TokId != tid_Kannma){ | | | | | +--+-----------------------+ | | | | | +--------+ 772 | | | | +--+ break; | | | | | | +--------+ | | | | +-+---+ 773 | | | | | } | | | | | +-----+ 774 | | | +--- i++; | | | +-+---+ 775 | | | | } | | | | +-----+ 776 | | +--- ArrayDefPosE = i+1; | | +-+---+ 777 | | | } | | | +-----+ 778 | +--- // 779 | | // もし、配列宣言なしの変数名のみで、Dimension属性ありの場合は、 780 | | // Dimension属性をセットする。 781 | | // Add 2007/01/19 782 | | // | | +--------------------------------------+ 783 | +--+ if((ArrayLevel == 0)&&(DimensionF)){ | | | +--+-----------------------------------+ 784 | | +--- ArrayLevel = DimAttr_ArrayLevel; 785 | | +--- memcpy(ArrayStart,DimAttr_ArrayStart,sizeof(ArrayStart)); 786 | | +--- memcpy(ArrayCount,DimAttr_ArrayCount,sizeof(ArrayCount)); | | +-+---+ 787 | | | } | | | +-----+ 788 | +--- // 789 | | // パラメータ文の場合は、 xxx = xxx での値を所得する。 790 | | // もしパラメータ文でない場合は、初期値なのでカンマまで読み飛ばす。 791 | | // 792 | +--- Token = (TToken *)TokenList->Items[i]; 793 | +--- TokId = Token->TokId; 794 | +--- ParamValF = false; | | +------------------------+ 795 | +--+ if(TokId == tid_Set){ | | | +--+---------------------+ 796 | | +--- UseTokLen = 0; | | | +------------------+ 797 | | +--+ if(ParamaterF){ | | | | +--+---------------+ 798 | | | +--- i++; 799 | | | +--- UseTokLen = Eval(TokenList,i,ePos,ValDataList,&dData); | | | | +------------------+ 800 | | | +--+ if(EvalConstF){ | | | | | +--+---------------+ 801 | | | | +--- ParamValF = true; 802 | | | | +--- ParamData = dData; | | | | +-+---+ 803 | | | | | } | | | | | +-----+ 804 | | | +--- i += UseTokLen; | | | +-+---+ 805 | | | | } | | | | +-----+ | | | +----------------------+ 806 | | +--+ if(UseTokLen <= 0){ | | | | +--+-------------------+ | | | | +--------------------------+ 807 | | | +--+ for( ; i <= ePos ; i++){ | | | | | +--+-----------------------+ | | | | | +------------------------------------------------------------+ 808 | | | | +--+ if(((TToken *)TokenList->Items[i])->TokId == tid_Kannma){ | | | | | | +--+---------------------------------------------------------+ | | | | | | +--------+ 809 | | | | | +--+ break; | | | | | | | +--------+ | | | | | +-+---+ 810 | | | | | | } | | | | | | +-----+ | | | | +-+---+ 811 | | | | | } | | | | | +-----+ | | | +-+---+ 812 | | | | } | | | | +-----+ | | +-+---+ 813 | | | } | | | +-----+ 814 | +--- // 815 | | // すでに、同じMoudelIdxで、宣言されている同名変数があるかを調べる。 816 | | // あれば、追加しない。(型の一致かどうかの判定は、コンパイラまかせ) 817 | | // 818 | +--- TValData *ValData; 819 | +--- bool NewValDataF = true; 820 | | | | +--------------------------------------------+ 821 | +--+ for(j = 0 ; j < ValDataList->Count ; j++){ | | | +--+-----------------------------------------+ 822 | | +--- ValData = (TValData *)ValDataList->Items[j]; | | | +----------------------------------------------------+ 823 | | +--+ if((AnsiCompareText(ValData->Str,ValName) == 0)&& | 824 | | | | (ValData->ModuleIdx == ModuleIdx)){ | | | | +--+-------------------------------------------------+ 825 | | | +--- NewValDataF = false; | | | | +--------+ 826 | | | +--+ break; | | | | | +--------+ | | | +-+---+ 827 | | | | } | | | | +-----+ | | +-+---+ 828 | | | } | | | +-----+ 829 | +--- // 830 | | // 変数リストに追加する。 831 | | // SUBRuntineなどで、先に出現した場合も行う 832 | | // | | +----------------------------------------------+ 833 | +--+ if(NewValDataF || (ValData->DefPos == -1)){ | | | +--+-------------------------------------------+ | | | +------------------+ 834 | | +--+ if(NewValDataF){ | | | | +--+---------------+ 835 | | | +--- ValData = new TValData(ValName); 836 | | | +--- ValDataList->Add((void *)ValData); 837 | | | +--- ValData->ModuleIdx = ModuleIdx; | | | +-+---+ 838 | | | | } | | | | +-----+ 839 | | +--- ValData->DataType = ImplType[ValName[1]]; // 暗黙の宣言 840 | | +--- ValData->DefPos = DefPos; 841 | | +--- ValData->DefPosS = DefPosS; 842 | | +--- ValData->DefPosE = DefPosE; 843 | | +--- ValData->ArrayDefPosS = ArrayDefPosS; 844 | | +--- ValData->ArrayDefPosE = ArrayDefPosE; | | | +------------+ 845 | | +--+ if(RealF){ | | | | +--+---------+ 846 | | | +--- ValData->DataType = dt_Real; | | | +-+---+ 847 | | | | } | | | | +-----+ | | | +------------+ 848 | | +--+ if(IntF){ | | | | +--+---------+ 849 | | | +--- ValData->DataType = dt_Int; | | | +-+---+ 850 | | | | } | | | | +-----+ | | | +------------+ 851 | | +--+ if(CharF){ | | | | +--+---------+ 852 | | | +--- ValData->DataType = dt_Char; | | | +-+---+ 853 | | | | } | | | | +-----+ | | | +--------------+ 854 | | +--+ if(LogicF){ | | | | +--+-----------+ 855 | | | +--- ValData->DataType = dt_Logic; | | | +-+---+ 856 | | | | } | | | | +-----+ | | | +----------------+ 857 | | +--+ if(ComplexF){ | | | | +--+-------------+ 858 | | | +--- ValData->DataType = dt_Complex; | | | +-+---+ 859 | | | | } | | | | +-----+ 860 | | +--- ValData->DataLength = DataLength; 861 | | +--- ValData->ArrayLevel = ArrayLevel; | | | +----------------------+ 862 | | +--+ if(ArrayLevel != 0){ | | | | +--+-------------------+ 863 | | | +--- ValData->ArrayOrFuncF = true; 864 | | | +--- ValData->ArrayStart = new int[ArrayLevel]; 865 | | | +--- ValData->ArrayCount = new int[ArrayLevel]; | | | | +----------------------------------------+ 866 | | | +--+ for(int k = 0 ; k < ArrayLevel ; k++){ | | | | | +--+-------------------------------------+ 867 | | | | +--- ValData->ArrayStart[k] = ArrayStart[k]; 868 | | | | +--- ValData->ArrayCount[k] = ArrayCount[k]; | | | | +-+---+ 869 | | | | | } | | | | | +-----+ | | | +-+---+ 870 | | | | } | | | | +-----+ | | +-+---+ 871 | | | } | | | +-----+ | | +----------------+ 872 | +--+ if(ParamValF){ | | | +--+-------------+ 873 | | +--- ValData->ParamValF = ParamValF; 874 | | +--- ValData->dData = ParamData; | | +-+---+ 875 | | | } | | | +-----+ 876 | +--- // 877 | | // 次の変数へ 878 | | // 879 | +--- Token = (TToken *)TokenList->Items[i]; 880 | +--- TokId = Token->TokId; | | +--------------------------+ 881 | +--+ if(TokId == tid_Kokka){ | | | +--+-----------------------+ 882 | | +--- i++; | | +-+---+ 883 | | | } | | | +-----+ 884 | +--- Token = (TToken *)TokenList->Items[i]; 885 | +--- TokId = Token->TokId; | | +--------------------------+ 886 | +--+ if(TokId != tid_Kannma){ | | | +--+-----------------------+ | | | +--------+ 887 | | +--+ break; | | | | +--------+ | | +-+---+ 888 | | | } | | | +-----+ | +-+---+ 889 | | } | | +-----+ +-+---+ 890 | } | +-----+