예제 #1
0
/* OperatorAdd_() - actual workhorse to add a new operator.
 *
 */
static
void OperatorAdd_(TToken Decl, int Precedence, int Associativity, SYMBOLS List, const char* Pattern)
{
    int         iSymbol;
    TSymbol*    Symbol;
    TOperator*  Result  = NEW(TOperator);

    assert(Result != NULL);
    Result->Precedence      = Precedence;
    Result->Associativity   = Associativity;
    Result->List            = List;
    Result->Decl            = Decl;
    Result->Pattern         = StrClone(Pattern);

    ++NOperators;
    Result->IntRep          = NOperators;
    Operators               = (TOperator**)realloc(Operators, sizeof(TOperator*)*NOperators);
    assert(Operators != NULL);
    Operators[NOperators-1] = Result;

    for(iSymbol = 0; iSymbol < SymbolListCount(List); ++iSymbol)
    {
        Symbol  = SymbolListGet(List, iSymbol);
        if(Symbol)
        {
            OpSymAdd(Result, iSymbol);
            ++Result->SymCount;
        }
    }
}
예제 #2
0
파일: main.c 프로젝트: osa1632/MyGrep
void ReadingCommandLineArguements (int argc, char* argv[], char** TheWord, char** FileName,\
	int* ArrayOfOptions,int *NumOfLinesAfter_forAArgument){
		int i = 1;
	for (i = 1; i < argc; i++){
		if ((i < argc - 1) && strcmp(argv[i], "-A") == 0){
			ArrayOfOptions[A] = 1;
			*NumOfLinesAfter_forAArgument = atoi(argv[++i]);
		}
		else if (strcmp(argv[i], "-b") == 0){
			ArrayOfOptions[B] = 1;
		}
		else if (strcmp(argv[i], "-c") == 0){
			ArrayOfOptions[C] = 1;
		}
		else if (strcmp(argv[i], "-i") == 0){
			ArrayOfOptions[I] = 1;
		}
		else if (strcmp(argv[i], "-n") == 0){
			ArrayOfOptions[N] = 1;
		}
		else if (strcmp(argv[i], "-v") == 0){
			ArrayOfOptions[V] = 1;
		}
		else if (strcmp(argv[i], "-x") == 0){
			ArrayOfOptions[X] = 1;
		}
		else if (strcmp(argv[i], "-E") == 0){
			ArrayOfOptions[E] = 1;
		}
		else{
			*TheWord = StrClone(argv[i]);
			i++;
			*FileName =  StrClone((i < argc) ? argv[i]:"");
		}
	}
}