mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 21:32:39 +00:00
Use this new fangled StringSwitch technology.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121273 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cc78f5c09c
commit
cd466f582a
@ -12,10 +12,11 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "TGLexer.h"
|
||||
#include "llvm/ADT/Twine.h"
|
||||
#include "llvm/Support/SourceMgr.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
#include "llvm/Config/config.h"
|
||||
#include "llvm/ADT/StringSwitch.h"
|
||||
#include "llvm/ADT/Twine.h"
|
||||
#include <cctype>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
@ -419,36 +420,23 @@ tgtok::TokKind TGLexer::LexExclaim() {
|
||||
++CurPtr;
|
||||
|
||||
// Check to see which operator this is.
|
||||
switch (CurPtr - Start) {
|
||||
default:
|
||||
break;
|
||||
case 2:
|
||||
if (!memcmp(Start, "eq", 2)) return tgtok::XEq;
|
||||
if (!memcmp(Start, "if", 2)) return tgtok::XIf;
|
||||
break;
|
||||
case 3:
|
||||
if (!memcmp(Start, "car", 3)) return tgtok::XCar;
|
||||
if (!memcmp(Start, "cdr", 3)) return tgtok::XCdr;
|
||||
if (!memcmp(Start, "con", 3)) return tgtok::XConcat;
|
||||
if (!memcmp(Start, "shl", 3)) return tgtok::XSHL;
|
||||
if (!memcmp(Start, "sra", 3)) return tgtok::XSRA;
|
||||
if (!memcmp(Start, "srl", 3)) return tgtok::XSRL;
|
||||
break;
|
||||
case 4:
|
||||
if (!memcmp(Start, "cast", 4)) return tgtok::XCast;
|
||||
if (!memcmp(Start, "null", 4)) return tgtok::XNull;
|
||||
break;
|
||||
case 5:
|
||||
if (!memcmp(Start, "subst", 5)) return tgtok::XSubst;
|
||||
break;
|
||||
case 7:
|
||||
if (!memcmp(Start, "foreach", 7)) return tgtok::XForEach;
|
||||
break;
|
||||
case 9:
|
||||
if (!memcmp(Start, "strconcat", 9)) return tgtok::XStrConcat;
|
||||
break;
|
||||
}
|
||||
tgtok::TokKind Kind =
|
||||
StringSwitch<tgtok::TokKind>(StringRef(Start, CurPtr - Start))
|
||||
.Case("eq", tgtok::XEq)
|
||||
.Case("if", tgtok::XIf)
|
||||
.Case("car", tgtok::XCar)
|
||||
.Case("cdr", tgtok::XCdr)
|
||||
.Case("con", tgtok::XConcat)
|
||||
.Case("shl", tgtok::XSHL)
|
||||
.Case("sra", tgtok::XSRA)
|
||||
.Case("srl", tgtok::XSRL)
|
||||
.Case("cast", tgtok::XCast)
|
||||
.Case("null", tgtok::XNull)
|
||||
.Case("subst", tgtok::XSubst)
|
||||
.Case("foreach", tgtok::XForEach)
|
||||
.Case("strconcat", tgtok::XStrConcat)
|
||||
.Default(tgtok::Error);
|
||||
|
||||
return ReturnError(Start - 1, "Unknown operator");
|
||||
return Kind != tgtok::Error ? Kind : ReturnError(Start-1, "Unknown operator");
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user