示例#1
0
main()
{
    symtabADT table;
    scannerADT scanner;
    string line, name, value;

    table = NewSymbolTable();
    scanner = NewScanner();
    SetScannerSpaceOption(scanner, IgnoreSpaces);
    while (TRUE) {
        printf("-> ");
        line = GetLine();
        if (StringEqual(line, "quit")) break;
        SetScannerString(scanner, line);
        name = ReadToken(scanner);
        if (MoreTokensExist(scanner)) {
            if (!StringEqual(ReadToken(scanner), "=")) {
                Error("Missing equal sign in assignment");
            }
            value = ReadToken(scanner);
            if (MoreTokensExist(scanner)) {
                Error("Statement contains additional data");
            }
            Enter(table, name, value);
        } else {
            value = Lookup(table, name);
            if (value == UNDEFINED) {
                printf("'%s' is undefined.\n", name);
            } else {
                printf("%s\n", value);
            }
        }
    }
    FreeSymbolTable(table);
}
示例#2
0
cmdScannerADT NewCommandScanner(void)
{
    cmdScannerADT cs;

    cs = New(cmdScannerADT);
    cs->cmdTable = NewSymbolTable();
    cs->scanner = NewScanner();
    SetScannerSpaceOption(cs->scanner, IgnoreSpaces);
    cs->data = NULL;
    cs->quit = FALSE;
    return (cs);
}
示例#3
0
static dataBlockT NewDataBlock(void)
{
    dataBlockT db;
    int i;

    db = New(dataBlockT);
    db->scanner = NewScanner();
    SetScannerSpaceOption(db->scanner, IgnoreSpaces);
    for (i = 0; i < 26; i++) {
        db->variables[i] = NULL;
    }
    return (db);
}
//---------------------------------------------------------------------------
void Table::Init()
{
	numErrors = 0;
	SetConsistencyInfo(CONSISTENCY_DONTKNOW);
	Scanners = new LinkedList();
	dScanner = NULL;
	dScanner = NewScanner(TRUE, FALSE);
	Handle=NULL;
	IdxHandle=NULL;
	FieldsRecord=NULL;
	HasNewHdr=FALSE;
	IndexList=NULL;
	doCRC = FALSE;
	GLocateUpToDate = FALSE;
}
示例#5
0
main()
{
    scannerADT myScanner;
    string token;
    int nTokens;

    myScanner = NewScanner();
    printf("Enter input line: ");
    SetScannerString(myScanner, GetLine());
    nTokens = 0;
    while (MoreTokensExist(myScanner)) {
        token = ReadToken(myScanner);
        nTokens++;
        printf("%2d: \"%s\"\n", nTokens, token);
    }
    FreeScanner(myScanner);
}
示例#6
0
文件: expr.c 项目: charlie5/swig4ada
void Preprocessor_expr_init(void) {
  if (!expr_init)
    init_precedence();
  if (!scan)
    scan = NewScanner();
}
示例#7
0
void scanner_init() {
  scan = NewScanner();
  Scanner_idstart(scan,"%");
  scan_init = 1;
  scanner_ccode = NewStringEmpty();
}
//---------------------------------------------------------------------------
Scanner *Table::NewScanner(BOOL orderIntegrity)
{
	return NewScanner(FALSE, orderIntegrity);
}