From 8c4a87f563dd916f824428e939f08dbf4d2e027f Mon Sep 17 00:00:00 2001 From: Hackerpilot Date: Sun, 15 Dec 2013 03:02:52 -0800 Subject: [PATCH] Converted everything to the new lexer --- astprinter.d | 162 +- build.bat | 2 +- ctags.d | 40 +- dscanner.exe | Bin 0 -> 1063964 bytes dscanner.obj | Bin 0 -> 1223496 bytes formatter.d | 28 +- highlighter.d | 32 +- imports.d | 2 +- main.d | 46 +- main.html | 276 +++ outliner.d | 18 +- stats.d | 26 +- stdx/d/ast.d | 42 +- stdx/d/lexer.d | 4802 ++++++++++++----------------------------------- stdx/d/parser.d | 2149 ++++++++++----------- stdx/lexer.d | 457 +++++ 16 files changed, 3219 insertions(+), 4863 deletions(-) create mode 100644 dscanner.exe create mode 100644 dscanner.obj create mode 100644 main.html create mode 100644 stdx/lexer.d diff --git a/astprinter.d b/astprinter.d index 1b7ed06..ec3921a 100644 --- a/astprinter.d +++ b/astprinter.d @@ -21,7 +21,7 @@ class XMLPrinter : ASTVisitor { override void visit(AddExpression addExpression) { - output.writeln(""); + output.writeln(""); output.writeln(""); addExpression.left.accept(this); output.writeln(""); @@ -51,7 +51,7 @@ class XMLPrinter : ASTVisitor override void visit(AlignAttribute alignAttribute) { - output.writeln(""); + output.writeln(""); } override void visit(AndAndExpression andAndExpression) @@ -130,7 +130,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); else output.writeln(""); + str(assignExpression.operator), "\">"); assignExpression.accept(this); output.writeln(""); } @@ -143,20 +143,20 @@ class XMLPrinter : ASTVisitor override void visit(AtAttribute atAttribute) { output.writeln(""); - if (atAttribute.identifier.type == TokenType.invalid) + if (atAttribute.identifier.type == tok!"") atAttribute.accept(this); else - output.writeln("", atAttribute.identifier.value, ""); + output.writeln("", atAttribute.identifier.text, ""); output.writeln(""); } override void visit(Attribute attribute) { output.writeln(""); - if (attribute.attribute == TokenType.invalid) + if (attribute.attribute == tok!"") attribute.accept(this); else - output.writeln(getTokenValue(attribute.attribute)); + output.writeln(str(attribute.attribute)); output.writeln(""); } @@ -173,7 +173,7 @@ class XMLPrinter : ASTVisitor { output.writeln(""); output.writeln("", - autoDec.identifiers[i].value, ""); + autoDec.identifiers[i].text, ""); visit(autoDec.initializers[i]); output.writeln(""); } @@ -196,10 +196,10 @@ class XMLPrinter : ASTVisitor override void visit(BreakStatement breakStatement) { - if (breakStatement.label.type == TokenType.invalid) + if (breakStatement.label.type == tok!"") output.writeln(""); else - output.writeln(""); + output.writeln(""); } override void visit(BaseClass baseClass) @@ -256,7 +256,7 @@ class XMLPrinter : ASTVisitor override void visit(ClassDeclaration classDec) { output.writeln(""); - output.writeln("", classDec.name.value, ""); + output.writeln("", classDec.name.text, ""); classDec.accept(this); output.writeln(""); } @@ -318,29 +318,29 @@ class XMLPrinter : ASTVisitor override void visit(ContinueStatement continueStatement) { - if (continueStatement.label.type == TokenType.invalid) + if (continueStatement.label.type == tok!"") output.writeln(""); else output.writeln(""); + continueStatement.label.text, "\"/>"); } override void visit(DebugCondition debugCondition) { - if (debugCondition.identifierOrInteger.type == TokenType.invalid) + if (debugCondition.identifierOrInteger.type == tok!"") output.writeln(""); else output.writeln(""); + debugCondition.identifierOrInteger.text, "\"/>"); } override void visit(DebugSpecification debugSpecification) { - if (debugSpecification.identifierOrInteger.type == TokenType.invalid) + if (debugSpecification.identifierOrInteger.type == tok!"") output.writeln(""); else output.writeln(""); + debugSpecification.identifierOrInteger.text, "\"/>"); } override void visit(Declaration declaration) @@ -361,7 +361,7 @@ class XMLPrinter : ASTVisitor override void visit(Declarator declarator) { output.writeln(""); - output.writeln("", declarator.name.value, ""); + output.writeln("", declarator.name.text, ""); declarator.accept(this); output.writeln(""); } @@ -411,8 +411,8 @@ class XMLPrinter : ASTVisitor override void visit(EnumDeclaration enumDec) { output.writeln(""); - if (enumDec.name.type == TokenType.identifier) - output.writeln("", enumDec.name.value, ""); + if (enumDec.name.type == tok!"identifier") + output.writeln("", enumDec.name.text, ""); enumDec.accept(this); output.writeln(""); } @@ -426,7 +426,7 @@ class XMLPrinter : ASTVisitor override void visit(EqualExpression equalExpression) { - output.writeln(""); + output.writeln(""); output.writeln(""); visit(equalExpression.left); output.writeln(""); @@ -491,7 +491,7 @@ class XMLPrinter : ASTVisitor override void visit(ForeachStatement foreachStatement) { - output.writeln(""); if (foreachStatement.foreachType !is null) visit(foreachStatement.foreachType); @@ -515,7 +515,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); foreach (constructor; foreachType.typeConstructors) { - output.writeln("", getTokenValue(constructor), ""); + output.writeln("", str(constructor), ""); } if (foreachType.type !is null) visit(foreachType.type); @@ -552,7 +552,7 @@ class XMLPrinter : ASTVisitor override void visit(FunctionDeclaration functionDec) { output.writeln(""); - output.writeln("", functionDec.name.value, ""); + output.writeln("", functionDec.name.text, ""); if (functionDec.hasAuto) output.writeln(""); if (functionDec.hasRef) @@ -564,17 +564,17 @@ class XMLPrinter : ASTVisitor override void visit(FunctionLiteralExpression functionLiteralExpression) { output.writeln(""); + str(functionLiteralExpression.functionOrDelegate), "\">"); functionLiteralExpression.accept(this); output.writeln(""); } override void visit(GotoStatement gotoStatement) { - if (gotoStatement.label.type == TokenType.default_) + if (gotoStatement.label.type == tok!"default") output.writeln(""); - else if (gotoStatement.label.type == TokenType.identifier) - output.writeln(""); + else if (gotoStatement.label.type == tok!"identifier") + output.writeln(""); else { output.writeln(""); @@ -625,7 +625,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); output.writeln(""); - if (ifStatement.identifier.type != TokenType.invalid) + if (ifStatement.identifier.type != tok!"") { if (ifStatement.type is null) output.writeln(""); @@ -651,11 +651,11 @@ class XMLPrinter : ASTVisitor override void visit(ImportBind importBind) { - if (importBind.right.type == TokenType.invalid) - output.writeln(""); + if (importBind.right.type == tok!"") + output.writeln(""); else - output.writeln(""); + output.writeln(""); } override void visit(ImportBindings importBindings) @@ -725,7 +725,7 @@ class XMLPrinter : ASTVisitor override void visit(InterfaceDeclaration interfaceDec) { output.writeln(""); - output.writeln("", interfaceDec.name.value, ""); + output.writeln("", interfaceDec.name.text, ""); interfaceDec.accept(this); output.writeln(""); } @@ -741,11 +741,11 @@ class XMLPrinter : ASTVisitor { output.writeln(""); visit(isExpression.type); - if (isExpression.identifier.type != TokenType.invalid) + if (isExpression.identifier.type != tok!"") visit(isExpression.identifier); if (isExpression.typeSpecialization !is null) { - if (isExpression.equalsOrColon == TokenType.colon) + if (isExpression.equalsOrColon == tok!":") output.writeln(""); else output.writeln(""); @@ -776,7 +776,7 @@ class XMLPrinter : ASTVisitor override void visit (LabeledStatement labeledStatement) { output.writeln(""); + labeledStatement.identifier.text ,"\">"); visit(labeledStatement.declarationOrStatement); output.writeln(""); } @@ -784,9 +784,9 @@ class XMLPrinter : ASTVisitor override void visit(LambdaExpression lambdaExpression) { output.writeln(""); - if (lambdaExpression.functionType == TokenType.function_) + if (lambdaExpression.functionType == tok!"function") output.writeln(""); - if (lambdaExpression.functionType == TokenType.delegate_) + if (lambdaExpression.functionType == tok!"delegate") output.writeln(""); lambdaExpression.accept(this); output.writeln(""); @@ -803,14 +803,14 @@ class XMLPrinter : ASTVisitor output.writeln(""); else output.writeln(""); + linkageAttribute.identifier.text, "\"/>"); } override void visit(MemberFunctionAttribute memberFunctionAttribute) { output.writeln(""); if (memberFunctionAttribute.atAttribute is null) - output.writeln(getTokenValue(memberFunctionAttribute.tokenType)); + output.writeln(str(memberFunctionAttribute.tokenType)); else memberFunctionAttribute.accept(this); output.writeln(""); @@ -850,7 +850,7 @@ class XMLPrinter : ASTVisitor override void visit(MulExpression mulExpression) { - output.writeln(""); + output.writeln(""); output.writeln(""); mulExpression.left.accept(this); output.writeln(""); @@ -901,11 +901,11 @@ class XMLPrinter : ASTVisitor override void visit(Parameter param) { output.writeln(""); - if (param.name.type == TokenType.identifier) - output.writeln("", param.name.value, ""); + if (param.name.type == tok!"identifier") + output.writeln("", param.name.text, ""); foreach (attribute; param.parameterAttributes) { - output.writeln("", getTokenValue(attribute), ""); + output.writeln("", str(attribute), ""); } param.accept(this); if (param.vararg) @@ -926,7 +926,7 @@ class XMLPrinter : ASTVisitor override void visit(PostIncDecExpression postIncDecExpression) { output.writeln(""); + str(postIncDecExpression.operator), "\">"); postIncDecExpression.accept(this); output.writeln(""); } @@ -959,7 +959,7 @@ class XMLPrinter : ASTVisitor override void visit(PreIncDecExpression preIncDecExpression) { output.writeln(""); + str(preIncDecExpression.operator), "\">"); preIncDecExpression.accept(this); output.writeln(""); } @@ -974,7 +974,7 @@ class XMLPrinter : ASTVisitor override void visit(RelExpression relExpression) { output.writeln(""); + xmlEscape(str(relExpression.operator)), "\">"); output.writeln(""); visit(relExpression.left); output.writeln(""); @@ -1014,7 +1014,7 @@ class XMLPrinter : ASTVisitor override void visit(ShiftExpression shiftExpression) { output.writeln(""); + xmlEscape(str(shiftExpression.operator)), "\">"); output.writeln(""); visit(shiftExpression.left); output.writeln(""); @@ -1026,10 +1026,10 @@ class XMLPrinter : ASTVisitor override void visit(SingleImport singleImport) { - if (singleImport.rename.type == TokenType.invalid) + if (singleImport.rename.type == tok!"") output.writeln(""); else - output.writeln(""); + output.writeln(""); visit(singleImport.identifierChain); output.writeln(""); } @@ -1094,7 +1094,7 @@ class XMLPrinter : ASTVisitor override void visit(StructDeclaration structDec) { output.writeln(""); - output.writeln("", structDec.name.value, ""); + output.writeln("", structDec.name.text, ""); structDec.accept(this); output.writeln(""); } @@ -1196,7 +1196,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); - output.writeln("", templateDeclaration.name.value, ""); + output.writeln("", templateDeclaration.name.text, ""); visit(templateDeclaration.templateParameters); if (templateDeclaration.constraint !is null) visit(templateDeclaration.constraint); @@ -1275,28 +1275,28 @@ class XMLPrinter : ASTVisitor override void visit(Token token) { string tagName; - with (TokenType) switch (token.type) + switch (token.type) { - case invalid: return; - case identifier: tagName = "identifier"; break; - case doubleLiteral: tagName = "doubleLiteral"; break; - case idoubleLiteral: tagName = "idoubleLiteral"; break; - case floatLiteral: tagName = "floatLiteral"; break; - case ifloatLiteral: tagName = "ifloatLiteral"; break; - case intLiteral: tagName = "intLiteral"; break; - case uintLiteral: tagName = "uintLiteral"; break; - case longLiteral: tagName = "longLiteral"; break; - case ulongLiteral: tagName = "ulongLiteral"; break; - case realLiteral: tagName = "realLiteral"; break; - case irealLiteral: tagName = "irealLiteral"; break; - case characterLiteral: tagName = "characterLiteral"; break; - case stringLiteral: tagName = "stringLiteral"; break; - case dstringLiteral: tagName = "dstringLiteral"; break; - case wstringLiteral: tagName = "wstringLiteral"; break; - case dollar: output.writeln(""); return; - default: output.writeln("<", getTokenValue(token.type), "/>"); return; + case tok!"": return; + case tok!"identifier": tagName = "identifier"; break; + case tok!"doubleLiteral": tagName = "doubleLiteral"; break; + case tok!"idoubleLiteral": tagName = "idoubleLiteral"; break; + case tok!"floatLiteral": tagName = "floatLiteral"; break; + case tok!"ifloatLiteral": tagName = "ifloatLiteral"; break; + case tok!"intLiteral": tagName = "intLiteral"; break; + case tok!"uintLiteral": tagName = "uintLiteral"; break; + case tok!"longLiteral": tagName = "longLiteral"; break; + case tok!"ulongLiteral": tagName = "ulongLiteral"; break; + case tok!"realLiteral": tagName = "realLiteral"; break; + case tok!"irealLiteral": tagName = "irealLiteral"; break; + case tok!"characterLiteral": tagName = "characterLiteral"; break; + case tok!"stringLiteral": tagName = "stringLiteral"; break; + case tok!"dstringLiteral": tagName = "dstringLiteral"; break; + case tok!"wstringLiteral": tagName = "wstringLiteral"; break; + case tok!"$": output.writeln(""); return; + default: output.writeln("<", str(token.type), "/>"); return; } - output.writeln("<", tagName, ">", xmlEscape(token.value), ""); + output.writeln("<", tagName, ">", xmlEscape(token.text), ""); } override void visit(TraitsExpression traitsExpression) @@ -1322,8 +1322,8 @@ class XMLPrinter : ASTVisitor override void visit(Type2 type2) { output.writeln(""); - if (type2.builtinType != TokenType.invalid) - output.writeln(getTokenValue(type2.builtinType)); + if (type2.builtinType != tok!"") + output.writeln(str(type2.builtinType)); else type2.accept(this); output.writeln(""); @@ -1392,16 +1392,16 @@ class XMLPrinter : ASTVisitor override void visit(UnaryExpression unaryExpression) { output.writeln(""); - if (unaryExpression.prefix != TokenType.invalid) + if (unaryExpression.prefix != tok!"") { - output.writeln("", xmlEscape(unaryExpression.prefix.value), + output.writeln("", xmlEscape(unaryExpression.prefix.text), ""); visit(unaryExpression.unaryExpression); } - if (unaryExpression.suffix != TokenType.invalid) + if (unaryExpression.suffix != tok!"") { visit(unaryExpression.unaryExpression); - output.writeln("", unaryExpression.suffix.value, + output.writeln("", unaryExpression.suffix.text, ""); } else @@ -1412,8 +1412,8 @@ class XMLPrinter : ASTVisitor override void visit(UnionDeclaration unionDeclaration) { output.writeln(""); - if (unionDeclaration.name != TokenType.invalid) - output.writeln("", unionDeclaration.name.value, ""); + if (unionDeclaration.name != tok!"") + output.writeln("", unionDeclaration.name.text, ""); if (unionDeclaration.templateParameters !is null) visit(unionDeclaration.templateParameters); if (unionDeclaration.constraint !is null) diff --git a/build.bat b/build.bat index d3cc301..7eb3101 100644 --- a/build.bat +++ b/build.bat @@ -1 +1 @@ -dmd main.d stats.d imports.d highlighter.d ctags.d astprinter.d outliner.d formatter.d stdx/d/lexer.d stdx/d/parser.d stdx/d/entities.d stdx/d/ast.d -wi -ofdscanner +dmd main.d stats.d imports.d highlighter.d ctags.d astprinter.d outliner.d formatter.d stdx/d/lexer.d stdx/d/parser.d stdx/d/entities.d stdx/d/ast.d stdx/lexer.d -wi -ofdscanner diff --git a/ctags.d b/ctags.d index d29515d..cc44212 100644 --- a/ctags.d +++ b/ctags.d @@ -24,9 +24,7 @@ void printCtags(File output, string[] fileNames) File f = File(fileName); auto bytes = uninitializedArray!(ubyte[])(to!size_t(f.size)); f.rawRead(bytes); - LexerConfig config; - auto tokens = byToken(bytes, config); - Module m = parseModule(tokens.array(), fileName, &doNothing); + Module m = parseModule(byToken!(ubyte[])(bytes).array, fileName, &doNothing); auto printer = new CTagsPrinter; printer.fileName = fileName; printer.visit(m); @@ -46,83 +44,83 @@ class CTagsPrinter : ASTVisitor override void visit(ClassDeclaration dec) { - tagLines ~= "%s\t%s\t%d;\"\tc%s\n".format(dec.name.value, fileName, dec.name.line, context); + tagLines ~= "%s\t%s\t%d;\"\tc%s\n".format(dec.name.text, fileName, dec.name.line, context); auto c = context; - context = "\tclass:" ~ dec.name.value; + context = "\tclass:" ~ dec.name.text; dec.accept(this); context = c; } override void visit(StructDeclaration dec) { - tagLines ~= "%s\t%s\t%d;\"\ts%s\n".format(dec.name.value, fileName, dec.name.line, context); + tagLines ~= "%s\t%s\t%d;\"\ts%s\n".format(dec.name.text, fileName, dec.name.line, context); auto c = context; - context = "\tstruct:" ~ dec.name.value; + context = "\tstruct:" ~ dec.name.text; dec.accept(this); context = c; } override void visit(InterfaceDeclaration dec) { - tagLines ~= "%s\t%s\t%d;\"\ti%s\n".format(dec.name.value, fileName, dec.name.line, context); + tagLines ~= "%s\t%s\t%d;\"\ti%s\n".format(dec.name.text, fileName, dec.name.line, context); auto c = context; - context = "\tclass:" ~ dec.name.value; + context = "\tclass:" ~ dec.name.text; dec.accept(this); context = c; } override void visit(TemplateDeclaration dec) { - tagLines ~= "%s\t%s\t%d;\"\tT%s\n".format(dec.name.value, fileName, dec.name.line, context); + tagLines ~= "%s\t%s\t%d;\"\tT%s\n".format(dec.name.text, fileName, dec.name.line, context); auto c = context; - context = "\ttemplate:" ~ dec.name.value; + context = "\ttemplate:" ~ dec.name.text; dec.accept(this); context = c; } override void visit(FunctionDeclaration dec) { - tagLines ~= "%s\t%s\t%d;\"\tf\tarity:%d%s\n".format(dec.name.value, fileName, + tagLines ~= "%s\t%s\t%d;\"\tf\tarity:%d%s\n".format(dec.name.text, fileName, dec.name.line, dec.parameters.parameters.length, context); auto c = context; - context = "\tfunction:" ~ dec.name.value; + context = "\tfunction:" ~ dec.name.text; dec.accept(this); context = c; } override void visit(EnumDeclaration dec) { - if (dec.name == TokenType.invalid) + if (dec.name == tok!"") { dec.accept(this); return; } - tagLines ~= "%s\t%s\t%d;\"\tg%s\n".format(dec.name.value, fileName, + tagLines ~= "%s\t%s\t%d;\"\tg%s\n".format(dec.name.text, fileName, dec.name.line, context); auto c = context; - context = "\tenum:" ~ dec.name.value; + context = "\tenum:" ~ dec.name.text; dec.accept(this); context = c; } override void visit(UnionDeclaration dec) { - if (dec.name == TokenType.invalid) + if (dec.name == tok!"") { dec.accept(this); return; } - tagLines ~= "%s\t%s\t%d;\"\tu%s\n".format(dec.name.value, fileName, + tagLines ~= "%s\t%s\t%d;\"\tu%s\n".format(dec.name.text, fileName, dec.name.line, context); auto c = context; - context = "\tunion:" ~ dec.name.value; + context = "\tunion:" ~ dec.name.text; dec.accept(this); context = c; } override void visit(EnumMember mem) { - tagLines ~= "%s\t%s\t%d;\"\te%s\n".format(mem.name.value, fileName, + tagLines ~= "%s\t%s\t%d;\"\te%s\n".format(mem.name.text, fileName, mem.name.line, context); } @@ -130,7 +128,7 @@ class CTagsPrinter : ASTVisitor { foreach (d; dec.declarators) { - tagLines ~= "%s\t%s\t%d;\"\tv%s\n".format(d.name.value, fileName, + tagLines ~= "%s\t%s\t%d;\"\tv%s\n".format(d.name.text, fileName, d.name.line, context); } dec.accept(this); diff --git a/dscanner.exe b/dscanner.exe new file mode 100644 index 0000000000000000000000000000000000000000..df8ccab50b0db0332d65f4a3816ea5506a1a316f GIT binary patch literal 1063964 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

hTu2CMX3%`AKVn9mpSR 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

Ez-G^w+shJbB9OJh6S+K!5$;!{9p^d>;P# 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 z zF?Xc12~nLbMrU8wI$Mm+z8>A#N}?Drh|eS<1l=mI%JR^38W4R2tmUB*m?^~7M1fL1>NQL>u8HfD6 zCM75z-bCn*nds$I2;b=?nB>!1jP^Knr5B1kkBaGw!T$-oTv9IqOQoCymPudCM+3{% zLrq;q!zbr80irHvF3_6EK+XAvL+YpqkSUp-gXT`lL)Zoh;eAOM*|)f$5tdjUf~_|!&H$FT zH9HF!)FIw>0;w;R+evJb-Ola7>clRV9t&%+kKqLfV8;>-rXg(JH+>B|$VeE5%&>(x zNe?xvsZtNcPR4l}=Qmx@Gs@m32or6Oo%i~j<<)Q1J$(nz9zt3+iM}fejJ!O}*lT%$ z);eKB+d@7>6WQ=^;W#DxL)hrNSbX~QRPQx%#GB8n8#FLe{g(#KD$!mBr93YiWm%LK z&NG76xI9L#Qupwk9GZOnT-_5a=AnLZ&|F(R5A}^ePjv&=H#Jh933+%+g#(Y1-ve|$ zS*IKHu>(p683i2>H^uLOuXWS*fAunbdZ&{C$d`d};t1v?scx%MUFd1H zUZ#F{e@Z&N@A{zIrRG_on+9*40MvjFY|vGMx1yy2aT&FQ^(9)0K}$2VmhxPvm^*2O zZtMaqFpH7cbTbC`f6i7Tm5-@v~8cTEztY&NSmct8m z^c!R87^Gr=!y3;2siO>kV|Gi+TduxaPb>?|Im~ZVJDq065kRFCeYXc^GZr3Zi$)j` z%KdQC9X*P1;m~k#GdzWYc{YqjJL&*|oM8ef_n8XCS2$P+yx>?o)5ywxMb_Fm&IHoY zuMXbrP}Z0r*9m}N0g$cC1ZB6N6iVdaRHOKWU5ZV?yVEq7)|ikH*|dczaYAKO{{Ke) zVBS;!L@Ou&l+Xttj|3=L186OBd&GSZHA;3#fTF^p$x=MTYAQkJ9jAUk<_0mBGnBy= z#u;vdvY-yS0ZTd=2M+G1!+*SjcP>+wivA*u>;_=W|z<_+Msx# zOm0}bj>q^NtT5qj8Lt(wZl9M=TH#d({61g{{FI*GC~CClI8C6VbuW4ft09S>gwZZHqjlje5ur3i8vQzG`vwhASO4L=)<5UbP!_&qm#~=CS@$alUKt zRlUXQ&(z0NjI5nOYcy%5H|$bocxU;>2eb8wv;_mfLzQ&ED!mS zJJ>)*y~?l1rWdrOLxZQWlfEAoqE8b~l^WIeu|z1Lp{;tBfXxaFW8lCl<$(8=V%VZe z;|#Nw6yS^jvMgMpe~`?{SmR!*dRW&D#rdpx_&pq1NjVP1d5`l|KC+L!`_$T8*FLW7*-0oXzh&XSe7I z?36B1t^_F{m}&D#Eb&F6%Jhkk6JM!5aRAvM3!Lh<$U&LwF*D2^;0#G~!{J)m4<1=@ zE+lN1lhzVkl^h!V8bpVJ5HJy2CKBcHaIA_66j43N}!uHRm`jPY{7c zO%BGd2*%U$QwQm~07h}F*;Y<;2WK7^b0OW;U5JyB(x|RE@!cQPq7!sb=PW#2{xyw- zZ A+;m#zLL?J)O%LVj3Fq2{Tp?eNxCA&xN5P*Q1Dy71p<&1!WSrR0JVE(%#--pz zvufNTzQQpl-nonk?U%jMPfr9`h0I?264u!TI(&UhVo@oksaL|>tpkcczcTtF<%3U-N+#wHa{Gt*j z5sH6r4UNJ4Z-hW-F4fhE71O9`+O!FI(pqAzXhTo$(2nN!4+OI>Fv$z^EMYr*o;+^nG-}T6t{Xv>uK=|A`SUuA=<2j0nZAj1M%Klv&(!_+Am; zI@JAq?#SWKfZgX?wC}$O;ekHI7g$1QPD0>ze4}ATYM31sV5_H~pfuzrCqE$nC5WYW z_+&ghLGNQvKfr|0b!05C3jgh=Io_2WC7=<(E+UHn3ADFu#}?HPED5b%Ps8Es5Yt-x z^B(CjgZOFYaap)eUKtMd$A<1D&WQWTsR2kW}i-6ZGo@E`dNecr|A;Ld7Gt6at_lf)qlOb>C@5m6nHY z>0k07ZUd!~2SWuit_bf|`y%(5AE5YVGdr})%nzJ{?zqxYx#j>wq&&m6Qh#gEXmY{Z z+a;cWuUF7_IJl+`_I-I9d(K;to3h~#j(}`1XXhNp0SMnEI4_PkRF!U>X< z=B}Ry)*LtbQt$@umUMOdfhG|HH}%$>?To9O?HM_36_eGO+ts4oxEotB)`oJncYW2G z(=Ok)XXG5H_)*A*&hHNSjv8{>UE+@ifv}w8`kZ!Z;$xsq)m5goPtPYeSuDU2u8cas zn~(qtvR>Ty448p#)ZUHQ{0aiR7j05=5M7HTxwsh~N|9@|$?pn`Dvv4VUvZiTEDcsX zl;ip7;itnqiGgf}+?p(GRN-6>-U8><;&ouVBRsBI(Zq&1*3)236;c04 zNxa_}G|$Euv#J*_RmUcdL6bHFKm%ne&xAe(ogTozvgv)}5$%WB-H$X_g*|1Aa@veQ zYzhn>REb+dZ;9cESd(?YR5>oI#)w{V6%9I^FX6(kMHRlC3%|P@g^?rpTo$4{A$D4D zgI$Na(E~$bx{`w`eXTr2q1$l&V$wmbq$8>liW7zNbf}~&CNxCTH94>X@X1SQ&)e;( z`MP3=6IvVS)ZCt>>c}9iw?E_9Xqfa0Ali>DV+jyOCoan2wvHn$p2?=Y^uiVNZ*D8f}s zOxGkdg|BD@c^{^{HI(=2%FsE$aoTR$+4q z*`0BG2{}TO+K`gfOS0gSe-V=Gy=BPX45Vj&Mvr#mMzKf)`GF%Tvq+^y)mF0G(gY+b z%T7a}?NmjkJ|%p)BNGx<>((rAam|0<)-!~0zB?Mv@H zSd7FsaM{NUyg<9u_QkuHlh9|}M!uY@DnW`lAwj!tPqd-L+j4sGi01$--Oj2eg7b6cObe;nQR25x(Ozqa$E+n#WNwkx>pD+h0z z;?G3&`<10p{oc)OxAkkg9n_8VTjB{*=>YxiM&NRncp1<|`t7Q2bh%euhFjqIg4Qmj z!?2&P0mlWccW)b-*r9ZgglkrsWQN{*!nF)-{-&YW_c!`a4Xp!1>AXg89G^UuF=GN< z`oNjtd}nJr;HJvzCLkXz&WUgTgh8CCulo@mtq8o^_v_Q2Op!h%fpmTTfYAi;OYp_O{o0+({i;vU`sD(8fJiI(9rqo>3ztOo ztBPUtBaQUyNq)2rDfR0m{`EXkv7k`)>n(m%hcvohpJSqk9>cZsop%2j@}9Pq$NJBh zS1i;9@u8nbnAx)RJHCl;6ymiY0G@P|9}8+Vu$CqbaE?<< zEG2IK7^H$}(5m;rWAr=K_Wi*}&>`dZ9r%!34xM`IF4gwl@<-{#dnNb?zvwS>eumjI zYV2Lx3og!+e@|>+M;a}2=HSG3WbFMo0# zRUnSC1h7;EF#t5*^WXi95yve<0){2t2Xh#Cm{|Z?5(Ah(DO7V&4lRZ*pULOPxdb;h zbd+!D22qdLfRdUjUK)$DEO%4=$pcD_rV@g@0)3N^gR8KffrtpJD4?Pn55Id@K)3I&jrzS`GgeD_PtO z9NiD6EU6su{c!IAidoV>qYleAhukF2fq2sUiPH_(BBVaDruZb(@ikq9zzmvIc@w z9GP%B)LD(^(D#y|)`miBeUnM;FB|Aj90SFK1IMAr=5XJLQawX)$&k~b?nATzoZXdI zz2m;=%KP1)28%;vWf-`g-%&js`BYEFr|{A|Q++a0+YZoL)`mfsT1h*kYkfBj4%0lU z>tU{ooGSrFYL^Mhbt+1(&F-3ps&DB&6r2^JmHNQojG-!Sr7Bu84gs9+szay;iYsMi;YsF|(yDH>;!$IT;&3VHDZV9;xb-5#JVj_HvM(mBj6h>*fw6K&5LO<+Po-jKT*2v zv;|S)ZwbS@7-?i)^zx%Jq;zP%ihuc$ikv(-05|ZX^+=-!;4VmeZC;G-YxvT*Vlfx% z;zg{|V=h1sNPCy3XVDvwpVwAmDvsLm7{#^9s7`6eh`dmK7j7jOB!6iPggF*aSdbKm z4KT-mrdB$a><~W#|6ovCVT2*H-c9NTn@>oG7!IB|fwn746Y+B&~ ze47ywEa}+ZQpLCs4Vl$pS!#hvnPSAAa__VZxli{0k+e%toH5GhRPQxrV29!jMu~5< zdN1u!5_V%PH7YKO(m>~_ z(D!rzSwS5oP{|Q89z)lv-V7k^u+1L_ouIptFmzGGg*ep&xYa4fF8C*>?2~5*>fn{fmn`q6$4sPN5MD0+^BpDH;#l1a-NO11fC=85w^+LtqwfG9Bj~qwYZkqY7jgC%Z`4MdUUE$`+!OatnEda+k@1hIu$;9}uau z)CuV8#X+-=ny~!!qip3PPt&Oh#Ul6~Drj7SW$!+0qyS*PxpVbcTtnQ3tScyFgqgnK zlWmd8arNArOYoq3iPQQt60_mMK;zF*oT6}x$*6D9!t|Dkn64PLMIxW{f%?}l$Y7-z zo*&*n=-u-fKN$l)vgeb=y9#H~f)2ruQ$EIRr#YtcuIyYdZA_g(UwZ?jbVwQV&RCSF zYQ#2*;xQp+DFWpw9$Ssa?j6>>z}&sSGvgkBlqg z>OQ3RS$O|80Tj%i++L8_-H<#vU*{ah^wLaIp-E?10QDesi|6OjJKF$TS0p&N z?vJSMBOT$o=S*%dOzeJ>>voGOS@*!@Pt@tUVP4rV=UiyXMp$rQ#CNN?R;3xo#}JF> zRE&3M*YJ=#zH5k@9UpQ#a0;+bY`n{Ej;0aq%VDcbybOB^BHX#ekpl#K_~wZ~?;Rld zydTAPfY4V3@s>yPml;;R1BAYZVqHkX8&GKgZh$_7cd~l#09lLIUv=}Pbms)IqcU}>P9G-93aQktBQ-yU>_T<>Hd zMhpU2&s@YiPXJSzNAEd=&Qchcu5zNQxNiz{T>kwt`fX_wcSW8MugRbsmtcob=0b#h z4oi6l#w$b%Mc7|WVB&KX_qMmsC3M~oHtE7GwB+>{(H;|>>WL?FD0Gt12T)*RI}%=- zY89Jg#V`>d>Jdx?oJLhjM|)7||GXBCK_?z5pi_sMUIqL(biVX@2SPp}{wWk|f^w?! z!l%q%eS<*!1Y#ISa9}DRYY)Sig!VTkAYmBm=3*>STL~m3l6i+PS;ly3%_ea}tOjd3 z{=qyzf1(k09dN)WrL_c3K>+ISM=&uGsqm+7B;7?I)HOXy1#f{nlW3V_2k#|=!zir7 zT#YYVG`>v7JK7;h+WU0@*NsDBOBO)?grhB$b>e-dR(46aEPB;79{wofkc-B1(%#NO z4i$wcQ9njuy!SM;P1P895i_v)G||9>RHO~TqztdIp_6t{=^updgyOaS5ZPhVzcQ4sWinK=ShvGB`c=pnNu zc!c4z6MU&)(fZfo^GT|5UjsK0Y0DVxJlZ2a3d~kbxrSAh;w% zkTWV!q@(;0t4ayH*Nkf|(ay#!B+>jj*TpOrn&f3z$~f)CTL}dN1;5VxW0+qxK6ix6 zy~QQ!`j`8;EH^q_j_kHHxY=M}qfTmkhfz!XMzW4Lu)qy;+ogO<0}9f_&3}?ND`iPe zs85+QX#GMD~Sk#S6ZO$Jo6q2WI`sgZ%jiH zjpGxuG#poPW&ZwE`el`!n>8Fm7J#3i4gnRk2(ilZEv-|+L)4^U%uJd>VL=cxnB0U< z2F8+w`E`jg?BdgWP@g|NjIoW3vCRy?CZysrr~u$!6Wwobd9vBE^<#Jad}L2KS>O>~ z9A5#(Oo5)^-ZTwG3E{pR;Ytp3+FN1CX4#h?p)W3x2PTp0I2rQ^v1QHzKPDv6_&G3B z!_OSN2u*Tv8dc{@vd$f^MDW9tM}uodKH|_(cvVM#3}NOEg-Vwcir1)M)2BXmJ4y>AS3_6mNnQs$6d&C1+7iqKHW;8~#+$L_i7l4xYC32Vlfe7|2 zsH-jX$Ug;h9I|h0M-ojhr>qw8>wkET<20(ucV(4hQ6&|Ferh8Jd0?FfK7daE%Ip;F z%^}=`01WwC3OP_9;(Z(nh2DN1D4_gczXXuY?g>83SDH{*QkrInt88$y28^%`xUkd? zx=+Ayj5IV|??A!I2C4|+KohMz%K1t8_DSb;a0({K#xOs zU=(6?o{tN8otb!(Dc1eBls!{JqaP;Ovpf&72aId3%R~P-4m`6<8d3rGGZHYoL%7Y3 zIMs6JC!cfVQd(vYmD!-9@sm|ZOAQ5L6RSlIjknC;B|2=&!m&WS1M>}C4x~{*gf>fn z5<;VE08qnO252gR)w}BGSaoR92CjTPQgN{c5C##Q8PMR_%o#RO%0cQ7s*|6zBPDq3 zec@5tz`3UXXVe8O%|JiyU7?PmYDD}-@2sKGRp?K3V;$HBA#Vwfl$G>8I9nuvI#rF{ z8$|P5n!r(jc0;5Ree@Nq*QGzGi=AIpTP0pPLywz)5T&_m9DYg7xd~aRwfN9zKU%|e zFhOZ{tIwPXLww!OQ2++`vy6`(q~d+JhLTS%jZF=I=5r(_Oq6Q)OXVlYNC|%(tV>9G z!lwkZ@}aOo{LmW1t>rZ--Hqk&vMRELa7GN zll){IQi3Np8XmYJ4uu<(cUad&^XOteUGqHleQ!qmV8RTc)y4>x5I*_`i7`O98W^iD znMDvX)$0Dv(*G@PtPZJo0Y`b~va%k=)oy;-MkyG-%o>_>l%EKs1lwj-Q6jw0=cQ!B zJF#C0iklH;CuJYRBe@uAD71@t-~yUv5ZIFljX&{wWiqBo1Q;T5x5MbdaqNL4sWbN4+#*_I>IC}i<6rq zVQit%tB5c6aQbBuCeRy~|zbm0M%rpFC9a5r;jrF214~Is3sfoqZ z1gokU+`wC0qzfH+CQ)fp)>U5*rL;%pY+FW$jeMzfr0_%%-{HD_(@tfp6TaZri zWalZlY3RuA%D@)njZs^W#M3Tu8+j6|Rx6ScXcB0lMZ!tRA z!sW#Lhb_h%u*G;?WQ$QY*OiVUC$BwkOEIb-wiGAoFi@?{$NhD zotf@n39K>cELHy?R?9JAkH%8^zc*k%E}1Zq=@xFUevh3T|GSZpG^?E!L*eLVSb`A2PFI(y*

Y9sb6ld6YPo1Vt46=}(SXt6LbEWxN{ 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 z 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%0AAYxM;wfa*MTGy|Y(2%pG+S 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 m3Ea9ncY-&;<{m zE4raOdLSG<(F+fvH~OG2`k_AtU?2uzFdo7X42263h(r{k5rbhEju9A%QFs`!7>zi@ z!;LXWKq8Vb7US>;#^W(OjtQ8ENtl9Zn2s5E0y8lSb1)Cj;8{G67w{5Z#p`$jZ{jVy zjfHpzi;#-NSc0W^AIp%2gF;8X0vZtTHc>_Z0j<8yq0FYy%) z;2;j+YaGTmID(@%hD>~id{DhzJ3x36KID@k|j|=!6f8Z}%!ev~+ zRs4->&`ueET*!?)$cuc)j{+!&LMV(PD2iezjzE+^N!*3IQ3|C|24ztW^tgqQIOUd3y89d957Z{jVyjfHpzi|{T|u^3D69+u*LEW-y#!*Z;^ zO02?%SdBGUi;u7lA7ec>U?Vmm9b51TwqhH$V+VHPQ|!WL*o{5diwx|?=lB9&;wv1$ zK^(%@IE-&_1mEH)jv*7@;W)m>37o_!{D9N=5kKK){DNQc8_pmLXK@baaRI;M5B!OX z_zRbC8CP%>f8!b~(t`oWh1|%4yijHB{3w8eD1^c&f}$vf;s`_ul!V?{bT>+&G|E5~ zzRRIJDxf0nK_yg%165EJ_o5oAqXue1Wuqc66S~)Xv$SzQC8i&_kq3E^5BX651yKlv zQ3OR%48;+M5-5qga5qY!G|HeX%Aq_epd#);B~*q3RZtc8q8h5B25KS*wNM-Pp$_UI z81)c>`e=ZLXoSXSg8R`F&Cnbz&=RfC8g1Z2DB7YO!q6Ta&=H-`8C~!Ix}qDpqX)v# z6TR>tdZQ2eq96KW00v?Z2ICU@qoiK9cb?p24$t4$tFt zynz(FiMQ}J7UCT&!n;VtVl2UXSc>PBtBHf+aEWWX-_afs$j zoQ8kdkBhVys=~1a#SnMmD(=h`fb=bEM0o5~#!ElVg zNQ}b6h{b4(K>`vn7UQ5ifhm}ZX_$@~cmhviCT3wap28f=#XQVMGM>gWcoxs$dAxuZ zu>ddOWxRq{@fu#o8%V*Mcnfc1A>P3vyo*#U#uB`TrFb99@Bz}W94oLAtMDOKV-42g zBdo*6SdR_Zh)qbxW^BPH*otk~jvd&EPq7Q1VK??*FZLk=`|&xxz?b+62XGLF@HGzO z8yvy6IErJ)#CJH3?{N~p;8*;HGf)PN%IJiWSK1cs5Qg^XfR5;d≫%&=uX#9X$|^ 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

;gW75<}+kHMAx-#ESt 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�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 D2ljCH literal 0 HcmV?d00001 diff --git a/dscanner.obj b/dscanner.obj new file mode 100644 index 0000000000000000000000000000000000000000..aeaff27e4311a76a8e66fa1fb00b9d6df08e3dcc GIT binary patch literal 1223496 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 literal 0 HcmV?d00001 diff --git a/formatter.d b/formatter.d index ff1224e..b98ac75 100644 --- a/formatter.d +++ b/formatter.d @@ -70,7 +70,7 @@ class Formatter(Sink) if (addExpression.right is null) return; sink.put(" "); - sink.put(getTokenValue(addExpression.operator)); + sink.put(str(addExpression.operator)); sink.put(" "); format(addExpression.right); } @@ -333,8 +333,8 @@ class Formatter(Sink) void format(const GotoStatement gotoStatement) { sink.put("goto "); - if (gotoStatement.label != TokenType.invalid) - sink.put(gotoStatement.label.value); + if (gotoStatement.label != tok!"") + sink.put(gotoStatement.label.text); else format(gotoStatement.expression); sink.put(";"); @@ -348,7 +348,7 @@ class Formatter(Sink) if (!first) sink.put("."); first = false; - sink.put(ident.value); + sink.put(ident.text); } } @@ -372,7 +372,7 @@ class Formatter(Sink) if (identifierOrTemplateInstance.templateInstance !is null) format(identifierOrTemplateInstance.templateInstance); else - sink.put(identifierOrTemplateInstance.identifier.value); + sink.put(identifierOrTemplateInstance.identifier.text); } @@ -488,14 +488,14 @@ class Formatter(Sink) { foreach (attribute; parameter.parameterAttributes) { - sink.put(getTokenValue(attribute)); + sink.put(str(attribute)); } if (parameter.type !is null) format(parameter.type); - if (parameter.name.type != TokenType.invalid) + if (parameter.name.type != tok!"") { sink.put(" "); - sink.put(parameter.name.value); + sink.put(parameter.name.text); } if (parameter.vararg) sink.put(" ..."); @@ -607,7 +607,7 @@ class Formatter(Sink) void format(const Symbol symbol) { - if (symbol.dot != TokenType.invalid) + if (symbol.dot != tok!"") sink.put("."); format(symbol.identifierOrTemplateChain); } @@ -671,7 +671,7 @@ class Formatter(Sink) void format(const Token token) { - sink.put(token.value); + sink.put(token.text); } void format(const TraitsExpression traitsExpression) @@ -688,7 +688,7 @@ class Formatter(Sink) if (first) sink.put(" "); first = false; - sink.put(getTokenValue(constructor)); + sink.put(str(constructor)); } if (type.typeConstructors.length > 0) sink.put(" "); @@ -711,16 +711,16 @@ class Formatter(Sink) format(type2.typeofExpression); return; } - else if (type2.typeConstructor != TokenType.invalid) + else if (type2.typeConstructor != tok!"") { - sink.put(getTokenValue(type2.typeConstructor)); + sink.put(str(type2.typeConstructor)); sink.put("("); format(type2.type); sink.put(")"); return; } else - sink.put(getTokenValue(type2.builtinType)); + sink.put(str(type2.builtinType)); } void format(const TypeSpecialization typeSpecialization) diff --git a/highlighter.d b/highlighter.d index 843a2bc..10c0ad2 100644 --- a/highlighter.d +++ b/highlighter.d @@ -11,7 +11,7 @@ import std.array; import stdx.d.lexer; // http://ethanschoonover.com/solarized -void highlight(R)(TokenRange!R tokens, string fileName) +void highlight(R)(R tokens, string fileName) { stdout.writeln(q"[ @@ -36,27 +36,27 @@ html { background-color: #fdf6e3; color: #002b36; } foreach (Token t; tokens) { if (isBasicType(t.type)) - writeSpan("type", t.value); + writeSpan("type", str(t.type)); else if (isKeyword(t.type)) - writeSpan("kwrd", t.value); - else if (t.type == TokenType.comment) - writeSpan("com", t.value); - else if (isStringLiteral(t.type) || t.type == TokenType.characterLiteral) - writeSpan("str", t.value); + writeSpan("kwrd", str(t.type)); + else if (t.type == tok!"comment") + writeSpan("com", t.text); + else if (isStringLiteral(t.type) || t.type == tok!"characterLiteral") + writeSpan("str", t.text); else if (isNumberLiteral(t.type)) - writeSpan("num", t.value); + writeSpan("num", t.text); else if (isOperator(t.type)) - writeSpan("op", t.value); + writeSpan("op", str(t.type)); else { version(Windows) { // Stupid Windows automatically does a LF → CRLF, so CRLF → CRCRLF, which is obviously wrong. // Strip out the CR characters here to avoid this. - stdout.write(t.value.replace("<", "<").replace("\r", "")); + stdout.write(t.text.replace("<", "<").replace("\r", "")); } else - stdout.write(t.value.replace("<", "<")); + stdout.write(t.text.replace("<", "<")); } } @@ -70,13 +70,3 @@ void writeSpan(string cssClass, string value) else stdout.write(``, value.replace("&", "&").replace("<", "<"), ``); } - -/+void main(string[] args) -{ - LexerConfig config; - config.tokenStyle = TokenStyle.source; - config.iterStyle = IterationStyle.everything; - config.fileName = args[1]; - auto f = File(args[1]); - (cast(ubyte[]) f.byLine(KeepTerminator.yes).join()).byToken(config).highlight(); -}+/ diff --git a/imports.d b/imports.d index 6fef4aa..772a297 100644 --- a/imports.d +++ b/imports.d @@ -26,7 +26,7 @@ class ImportPrinter : ASTVisitor { if (!first) write("."); - write(ident.value); + write(ident.text); first = false; } } diff --git a/main.d b/main.d index c692c93..33cfdf6 100644 --- a/main.d +++ b/main.d @@ -89,12 +89,9 @@ int main(string[] args) if (highlight) { - LexerConfig config; - config.iterStyle = IterationStyle.everything; - config.tokenStyle = TokenStyle.source; bool usingStdin = args.length == 1; ubyte[] bytes = usingStdin ? readStdin() : readFile(args[1]); - highlighter.highlight(byToken(bytes, config), + highlighter.highlight(byToken!(typeof(bytes), false, false)(bytes), args.length == 1 ? "stdin" : args[1]); return 0; } @@ -104,13 +101,12 @@ int main(string[] args) } else { - LexerConfig config; bool usingStdin = args.length == 1; if (sloc || tokenCount) { if (usingStdin) { - auto tokens = byToken(readStdin(), config); + auto tokens = byToken!(ubyte[], false, false)(readStdin()); if (tokenCount) printTokenCount(stdout, "stdin", tokens); else @@ -121,7 +117,7 @@ int main(string[] args) ulong count; foreach (f; expandArgs(args, recursive)) { - auto tokens = byToken(readFile(f), config); + auto tokens = byToken!(ubyte[])(readFile(f)); if (tokenCount) count += printTokenCount(stdout, f, tokens); else @@ -132,48 +128,28 @@ int main(string[] args) } else if (syntaxCheck) { - auto tokens = byToken(usingStdin ? readStdin() : readFile(args[1]), - config); - if (usingStdin) - config.fileName = "stdin"; - else - config.fileName = args[1]; - parseModule(tokens.array(), config.fileName); + auto tokens = byToken(usingStdin ? readStdin() : readFile(args[1])); + parseModule(tokens.array(), usingStdin ? "stdin" : args[1]); } else if (imports) { - auto tokens = byToken(usingStdin ? readStdin() : readFile(args[1]), - config); - if (usingStdin) - config.fileName = "stdin"; - else - config.fileName = args[1]; - auto mod = parseModule(tokens.array(), config.fileName); + auto tokens = byToken(usingStdin ? readStdin() : readFile(args[1])); + auto mod = parseModule(tokens.array(), usingStdin ? "stdin" : args[1]); auto visitor = new ImportPrinter; visitor.visit(mod); } else if (ast) { - auto tokens = byToken(usingStdin ? readStdin() : readFile(args[1]), - config); - if (usingStdin) - config.fileName = "stdin"; - else - config.fileName = args[1]; - auto mod = parseModule(tokens.array(), config.fileName); + auto tokens = byToken(usingStdin ? readStdin() : readFile(args[1])); + auto mod = parseModule(tokens.array(), usingStdin ? "stdin" : args[1]); auto printer = new XMLPrinter; printer.output = stdout; printer.visit(mod); } else if (outline) { - auto tokens = byToken(usingStdin ? readStdin() : readFile(args[1]), - config); - if (usingStdin) - config.fileName = "stdin"; - else - config.fileName = args[1]; - auto mod = parseModule(tokens.array(), config.fileName); + auto tokens = byToken(usingStdin ? readStdin() : readFile(args[1])); + auto mod = parseModule(tokens.array(), usingStdin ? "stdin" : args[1]); auto outliner = new Outliner(stdout); outliner.visit(mod); } diff --git a/main.html b/main.html new file mode 100644 index 0000000..6f0976f --- /dev/null +++ b/main.html @@ -0,0 +1,276 @@ + + + + + +main.d + + + +

+//          Copyright Brian Schott (Sir Alaran) 2012.
+// Distributed under the Boost Software License, Version 1.0.
+//    (See accompanying file LICENSE_1_0.txt or copy at
+//          http://www.boost.org/LICENSE_1_0.txt)
+
+module main;
+
+import std.algorithm;
+import std.array;
+import std.conv;
+import std.file;
+import std.getopt;
+import std.parallelism;
+import std.path;
+import std.regex;
+import std.stdio;
+import std.range;
+import stdx.d.lexer;
+import stdx.d.parser;
+
+import highlighter;
+import stats;
+import ctags;
+import astprinter;
+import imports;
+import outliner;
+
+int main(string[] args)
+{
+	bool sloc;
+	bool highlight;
+	bool ctags;
+	bool recursive;
+	bool format;
+	bool help;
+	bool tokenCount;
+	bool syntaxCheck;
+	bool ast;
+	bool imports;
+	bool muffin;
+	bool outline;
+
+	try
+	{
+		getopt(args, "sloc|l", &sloc, "highlight", &highlight,
+			"ctags|c", &ctags, "recursive|r|R", &recursive, "help|h", &help,
+			"tokenCount|t", &tokenCount, "syntaxCheck|s", &syntaxCheck,
+			"ast|xml", &ast, "imports|i", &imports, "outline|o", &outline,
+			"muffinButton", &muffin);
+	}
+	catch (Exception e)
+	{
+		stderr.writeln(e.msg);
+	}
+
+	if (muffin)
+	{
+		stdout.writeln(
+`       ___________
+    __(#*O 0** @%*)__
+  _(%*o#*O%*0 #O#%##@)_
+ (*#@%#o*@ #o%O*%@ #o #)
+ \=====================/
+  |I|I|I|I|I|I|I|I|I|I|
+  |I|I|I|I|I|I|I|I|I|I|
+  |I|I|I|I|I|I|I|I|I|I|
+  |I|I|I|I|I|I|I|I|I|I|`);
+		return 0;
+	}
+
+	if (help)
+	{
+		printHelp(args[0]);
+		return 0;
+	}
+
+	auto optionCount = count!"a"([sloc, highlight, ctags, tokenCount,
+		syntaxCheck, ast, imports, outline]);
+	if (optionCount > 1)
+	{
+		stderr.writeln("Too many options specified");
+		return 1;
+	}
+	else if (optionCount < 1)
+	{
+		printHelp(args[0]);
+		return 1;
+	}
+
+	if (highlight)
+	{
+		bool usingStdin = args.length == 1;
+		ubyte[] bytes = usingStdin ? readStdin() : readFile(args[1]);
+		highlighter.highlight(byToken!(typeof(bytes), false, false)(bytes),
+			args.length == 1 ? "stdin" : args[1]);
+		return 0;
+	}
+	else if (ctags)
+	{
+		stdout.printCtags(expandArgs(args, recursive));
+	}
+	else
+	{
+		bool usingStdin = args.length == 1;
+		if (sloc || tokenCount)
+		{
+			if (usingStdin)
+			{
+				auto tokens = byToken!(ubyte[], false, false)(readStdin());
+				if (tokenCount)
+					printTokenCount(stdout, "stdin", tokens);
+				else
+					printLineCount(stdout, "stdin", tokens);
+			}
+			else
+			{
+				ulong count;
+				foreach (f; expandArgs(args, recursive))
+				{
+					auto tokens = byToken!(ubyte[])(readFile(f));
+					if (tokenCount)
+						count += printTokenCount(stdout, f, tokens);
+					else
+						count += printLineCount(stdout, f, tokens);
+				}
+				writefln("total:\t%d", count);
+			}
+		}
+		else if (syntaxCheck)
+		{
+			auto tokens = byToken(usingStdin ? readStdin() : readFile(args[1]));
+			parseModule(tokens.array(), usingStdin ? "stdin" : args[1]);
+		}
+		else if (imports)
+		{
+			auto tokens = byToken(usingStdin ? readStdin() : readFile(args[1]));
+			auto mod = parseModule(tokens.array(), usingStdin ? "stdin" : args[1]);
+			auto visitor = new ImportPrinter;
+			visitor.visit(mod);
+		}
+		else if (ast)
+		{
+			auto tokens = byToken(usingStdin ? readStdin() : readFile(args[1]));
+			auto mod = parseModule(tokens.array(), usingStdin ? "stdin" : args[1]);
+			auto printer = new XMLPrinter;
+			printer.output = stdout;
+			printer.visit(mod);
+		}
+		else if (outline)
+		{
+			auto tokens = byToken(usingStdin ? readStdin() : readFile(args[1]));
+			auto mod = parseModule(tokens.array(), usingStdin ? "stdin" : args[1]);
+			auto outliner = new Outliner(stdout);
+			outliner.visit(mod);
+		}
+	}
+	return 0;
+}
+
+string[] expandArgs(string[] args, bool recursive)
+{
+	if (recursive)
+	{
+		string[] rVal;
+		foreach (arg; args[1 ..$])
+		{
+			if (isFile(arg) && arg.endsWith(`.d`) || arg.endsWith(`.di`))
+				rVal abstract arg;
+			else foreach (item; dirEntries(arg, SpanMode.breadth).map!(a => a.name))
+			{
+				if (isFile(item) && (item.endsWith(`.d`) || item.endsWith(`.di`)))
+					rVal abstract item;
+				else
+					continue;
+			}
+		}
+		return rVal;
+	}
+	else
+		return args[1 .. $];
+}
+
+ubyte[] readStdin()
+{
+	auto sourceCode = appender!(ubyte[])();
+	ubyte[4096] buf;
+	while (true)
+	{
+		auto b = stdin.rawRead(buf);
+		if (b.length == 0)
+			break;
+		sourceCode.put(b);
+	}
+	return sourceCode.data;
+}
+
+ubyte[] readFile(string fileName)
+{
+	if (!exists(fileName))
+	{
+		stderr.writefln("%s does not exist", fileName);
+		return [];
+	}
+	File f = File(fileName);
+	ubyte[] sourceCode = uninitializedArray!(ubyte[])(to!size_t(f.size));
+	f.rawRead(sourceCode);
+	return sourceCode;
+}
+
+void printHelp(string programName)
+{
+	stderr.writefln(
+`
+    Usage: %s options
+
+options:
+    --help | -h
+        Prints this help message
+
+    --sloc | -l [sourceFiles]
+        Prints the number of logical lines of code in the given
+        source files. If no files are specified, input is read from stdin.
+
+    --tokenCount | t [sourceFiles]
+        Prints the number of tokens in the given source files. If no files are
+        specified, input is read from stdin.
+
+    --highlight [sourceFile] - Syntax-highlight the given source file. The
+        resulting HTML will be written to standard output. If no files are
+        specified, input is read from stdin.
+
+    --imports | -i [sourceFile]
+        Prints modules imported by the given source file. If no files are
+        specified, input is read from stdin.
+
+    --syntaxCheck | -s [sourceFile]
+        Lexes and parses sourceFile, printing the line and column number of any
+        syntax errors to stdout. One error or warning is printed per line.
+        If no files are specified, input is read from stdin.
+
+    --ctags | -c sourceFile
+        Generates ctags information from the given source code file. Note that
+        ctags information requires a filename, so stdin cannot be used in place
+        of a filename.
+
+    --ast | --xml sourceFile
+        Generates an XML representation of the source files abstract syntax
+        tree. If no files are specified, input is read from stdin.
+
+    --recursive | -R | -r
+        When used with --ctags, --tokenCount, or --sloc, dscanner will produce
+        ctags output for all .d and .di files contained within the given
+        directories and its sub-directories.`,
+        programName);
+}
+
+ diff --git a/outliner.d b/outliner.d index 46647a1..9f3db55 100644 --- a/outliner.d +++ b/outliner.d @@ -21,7 +21,7 @@ class Outliner : ASTVisitor override void visit(ClassDeclaration classDec) { printIndentation(); - output.writeln("class ", classDec.name.value, " : ", classDec.name.line); + output.writeln("class ", classDec.name.text, " : ", classDec.name.line); indent(); classDec.accept(this); outdent(); @@ -31,7 +31,7 @@ class Outliner : ASTVisitor override void visit(EnumDeclaration enumDec) { printIndentation(); - output.writeln("enum ", enumDec.name.value, " : ", enumDec.name.line); + output.writeln("enum ", enumDec.name.text, " : ", enumDec.name.line); indent(); enumDec.accept(this); outdent(); @@ -41,7 +41,7 @@ class Outliner : ASTVisitor override void visit(EnumMember enumMem) { printIndentation(); - output.writeln(enumMem.name.value, " : ", enumMem.name.line); + output.writeln(enumMem.name.text, " : ", enumMem.name.line); finish(); } @@ -57,7 +57,7 @@ class Outliner : ASTVisitor if (functionDec.returnType !is null) f.format(functionDec.returnType); app.put(" "); - app.put(functionDec.name.value); + app.put(functionDec.name.text); f.format(functionDec.parameters); app.put(" : "); app.put(to!string(functionDec.name.line)); @@ -68,7 +68,7 @@ class Outliner : ASTVisitor override void visit(InterfaceDeclaration interfaceDec) { printIndentation(); - output.writeln("interface ", interfaceDec.name.value, " : ", + output.writeln("interface ", interfaceDec.name.text, " : ", interfaceDec.name.line); indent(); interfaceDec.accept(this); @@ -79,7 +79,7 @@ class Outliner : ASTVisitor override void visit(StructDeclaration structDec) { printIndentation(); - output.writeln("struct ", structDec.name.value, " : ", + output.writeln("struct ", structDec.name.text, " : ", structDec.name.line); indent(); structDec.accept(this); @@ -90,7 +90,7 @@ class Outliner : ASTVisitor override void visit(TemplateDeclaration templateDeclaration) { printIndentation(); - output.writeln("template", templateDeclaration.name.value, " : ", + output.writeln("template", templateDeclaration.name.text, " : ", templateDeclaration.name.line); finish(); } @@ -105,7 +105,7 @@ class Outliner : ASTVisitor override void visit(UnionDeclaration unionDeclaration) { printIndentation(); - output.writeln("union ", unionDeclaration.name.value, " : ", + output.writeln("union ", unionDeclaration.name.text, " : ", unionDeclaration.name.line); indent(); unionDeclaration.accept(this); @@ -125,7 +125,7 @@ class Outliner : ASTVisitor f.format(variableDeclaration.type); } app.put(" "); - app.put(d.name.value); + app.put(d.name.text); app.put(" : "); app.put(to!string(d.name.line)); output.writeln(app.data); diff --git a/stats.d b/stats.d index 78dfd16..ee55ccb 100644 --- a/stats.d +++ b/stats.d @@ -9,21 +9,21 @@ import std.stdio; import std.algorithm; import stdx.d.lexer; -pure nothrow bool isLineOfCode(TokenType t) +pure nothrow bool isLineOfCode(IdType t) { - with (TokenType) switch(t) + switch(t) { - case semicolon: - case while_: - case if_: - case do_: - case else_: - case switch_: - case for_: - case foreach_: - case foreach_reverse_: - case default_: - case case_: + case tok!";": + case tok!"while": + case tok!"if": + case tok!"do": + case tok!"else": + case tok!"switch": + case tok!"for": + case tok!"foreach": + case tok!"foreach_reverse": + case tok!"default": + case tok!"case": return true; default: return false; diff --git a/stdx/d/ast.d b/stdx/d/ast.d index 3650ee9..691ce97 100644 --- a/stdx/d/ast.d +++ b/stdx/d/ast.d @@ -275,7 +275,7 @@ public: { mixin (visitIfNotNull!(left, right)); } - /** */ TokenType operator; + /** */ IdType operator; mixin BinaryExpressionBody; } @@ -410,7 +410,7 @@ class AsmAddExp : ExpressionNode { public: mixin (DEFAULT_ACCEPT); - /** */ TokenType operator; + /** */ IdType operator; mixin BinaryExpressionBody; } @@ -483,7 +483,7 @@ class AsmMulExp : ExpressionNode { public: mixin (DEFAULT_ACCEPT); - /** */ TokenType operator; + /** */ IdType operator; mixin BinaryExpressionBody; } @@ -583,7 +583,7 @@ public: } /** */ ExpressionNode ternaryExpression; /** */ ExpressionNode assignExpression; - /** */ TokenType operator; + /** */ IdType operator; } /// @@ -623,7 +623,7 @@ public: /** */ AlignAttribute alignAttribute; /** */ PragmaExpression pragmaExpression; /** */ StorageClass storageClass; - /** */ TokenType attribute; + /** */ IdType attribute; } /// @@ -1149,7 +1149,7 @@ public: { mixin (visitIfNotNull!(left, right)); } - /** */ TokenType operator; + /** */ IdType operator; mixin BinaryExpressionBody; } @@ -1222,7 +1222,7 @@ public: mixin (visitIfNotNull!(foreachType, foreachTypeList, low, high, declarationOrStatement)); } - /** */ TokenType type; + /** */ IdType type; /** */ ForeachTypeList foreachTypeList; /** */ ForeachType foreachType; /** */ Expression low; @@ -1239,7 +1239,7 @@ public: { mixin (visitIfNotNull!(type, identifier)); } - /** */ TokenType[] typeConstructors; + /** */ IdType[] typeConstructors; /** */ Type type; /** */ Token identifier; } @@ -1336,7 +1336,7 @@ public: mixin (visitIfNotNull!(type, parameters, functionAttributes, functionBody)); } - /** */ TokenType functionOrDelegate; + /** */ IdType functionOrDelegate; /** */ Type type; /** */ Parameters parameters; /** */ FunctionAttribute[] functionAttributes; @@ -1575,7 +1575,7 @@ public: /** */ Token identifier; /** */ TypeSpecialization typeSpecialization; /** */ TemplateParameterList templateParameterList; - /** */ TokenType equalsOrColon; + /** */ IdType equalsOrColon; } /// @@ -1622,7 +1622,7 @@ public: mixin (visitIfNotNull!(identifier, parameters, functionAttributes, assignExpression)); } - /** */ TokenType functionType; + /** */ IdType functionType; /** */ Token identifier; /** */ Parameters parameters; /** */ FunctionAttribute[] functionAttributes; @@ -1660,7 +1660,7 @@ public: { mixin (visitIfNotNull!(atAttribute)); } - /** */ TokenType tokenType; + /** */ IdType tokenType; /** */ AtAttribute atAttribute; } @@ -1743,7 +1743,7 @@ public: { mixin (visitIfNotNull!(left, right)); } - /** */ TokenType operator; + /** */ IdType operator; mixin BinaryExpressionBody; } @@ -1893,7 +1893,7 @@ public: mixin (visitIfNotNull!(type, name, default_)); } - /** */ TokenType[] parameterAttributes; + /** */ IdType[] parameterAttributes; /** */ Type type; /** */ Token name; /** */ bool vararg; @@ -1932,7 +1932,7 @@ public: { mixin (visitIfNotNull!(unaryExpression)); } - /** */ TokenType operator; + /** */ IdType operator; /** */ UnaryExpression unaryExpression; } @@ -1978,7 +1978,7 @@ public: { mixin (visitIfNotNull!(unaryExpression)); } - /** */ TokenType operator; + /** */ IdType operator; /** */ UnaryExpression unaryExpression; } @@ -2030,7 +2030,7 @@ public: { mixin (visitIfNotNull!(left, right)); } - /** */ TokenType operator; + /** */ IdType operator; mixin BinaryExpressionBody; } @@ -2089,7 +2089,7 @@ public: { mixin (visitIfNotNull!(left, right)); } - /** */ TokenType operator; + /** */ IdType operator; mixin BinaryExpressionBody; } @@ -2573,7 +2573,7 @@ public: mixin (visitIfNotNull!(type2, typeSuffixes)); } - /** */ TokenType[] typeConstructors; + /** */ IdType[] typeConstructors; /** */ TypeSuffix[] typeSuffixes; /** */ Type2 type2; } @@ -2588,11 +2588,11 @@ public: identifierOrTemplateChain, type)); } - /** */ TokenType builtinType; + /** */ IdType builtinType; /** */ Symbol symbol; /** */ TypeofExpression typeofExpression; /** */ IdentifierOrTemplateChain identifierOrTemplateChain; - /** */ TokenType typeConstructor; + /** */ IdType typeConstructor; /** */ Type type; } diff --git a/stdx/d/lexer.d b/stdx/d/lexer.d index 9b90c7a..26a0c3e 100644 --- a/stdx/d/lexer.d +++ b/stdx/d/lexer.d @@ -1,3618 +1,1244 @@ -// Written in the D programming language - -/** - * This module contains a range-based _lexer for the D programming language. - * - * For performance reasons the _lexer contained in this module operates only on - * UTF-8 encoded source code. If the use of other encodings is - * desired, the source code must be converted to UTF-8 before passing it to this - * _lexer. - * - * To use the _lexer, create a $(LREF LexerConfig) struct. The - * $(LREF LexerConfig) contains fields for configuring the behavior of the - * lexer. - * --- - * LexerConfig config; - * config.iterStyle = IterationStyle.everything; - * config.tokenStyle = TokenStyle.source; - * config.versionNumber = 2064; - * config.vendorString = "Lexer Example"; - * --- - * Once you have configured the _lexer, call $(LREF byToken)$(LPAREN)$(RPAREN) - * on your source code, passing in the configuration. - * --- - * // UTF-8 encoded source code - * auto source = "import std.stdio;"c; - * auto tokens = byToken(source, config); - * // or auto tokens = source.byToken(config); - * --- - * The result of $(LREF byToken)$(LPAREN)$(RPAREN) is a forward range of tokens - * that can be easily used with the algorithms from std.algorithm or iterated - * over with $(D_KEYWORD foreach). - * --- - * assert (tokens.front.type == TokenType.import_); - * assert (tokens.front.value == "import"); - * assert (tokens.front.line == 1); - * assert (tokens.front.startIndex == 0); - * --- - * - * Examples: - * - * Generate HTML markup of D code. - * --- - * module highlighter; - * - * import std.stdio; - * import std.array; - * import std.d.lexer; - * - * void writeSpan(string cssClass, string value) - * { - * stdout.write(``, value.replace("&", "&").replace("<", "<"), ``); - * } - * - * // http://ethanschoonover.com/solarized - * void highlight(R)(R tokens) - * { - * stdout.writeln(q"[ - * - * - * - * - * - * - *
]");
- *
- *     foreach (Token t; tokens)
- *     {
- *         if (isBuiltType(t.type))
- *             writeSpan("type", t.value);
- *         else if (isKeyword(t.type))
- *             writeSpan("kwrd", t.value);
- *         else if (t.type == TokenType.comment)
- *             writeSpan("com", t.value);
- *         else if (isStringLiteral(t.type))
- *             writeSpan("str", t.value);
- *         else if (isNumberLiteral(t.type))
- *             writeSpan("num", t.value);
- *         else if (isOperator(t.type))
- *             writeSpan("op", t.value);
- *         else
- *             stdout.write(t.value.replace("<", "<"));
- *     }
- *     stdout.writeln("
\n"); - * } - * - * void main(string[] args) - * { - * // Create the configuration - * LexerConfig config; - * // Specify that we want tokens to appear exactly as they did in the source - * config.tokenStyle = TokenStyle.source; - * // Include whitespace, comments, etc. - * config.iterStyle = IterationStyle.everything; - * // Tell the lexer to use the name of the file being read when generating - * // error messages. - * config.fileName = args[1]; - * // Open the file (error checking ommitted for brevity) - * auto f = File(args[1]); - * // Read the lines of the file, and combine them. Then create the token - * // range, which is then passed on to highlight. - * (cast(ubyte[]) f.byLine(KeepTerminator.yes).join()).byToken(config).highlight(); - * } - * --- - * - * Copyright: Brian Schott 2013 - * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt Boost, License 1.0) - * Authors: Brian Schott, Dmitry Olshansky - * Source: $(PHOBOSSRC std/d/_lexer.d) - */ - module stdx.d.lexer; +import std.typecons; +import std.typetuple; +import std.array; +import std.stdio; import std.algorithm; -import std.ascii; -import std.conv; -import std.datetime; -import stdx.d.entities; -import std.exception; import std.range; -import std.regex; -import std.string; -import std.traits; -import std.utf; -version (unittest) import std.stdio; - - -public: - -/** - * Represents a D token - */ -struct Token -{ - /** - * The characters that comprise the token. - */ - string value; - - /** - * The index of the start of the token in the original source. - * $(LPAREN)measured in UTF-8 code units$(RPAREN) - */ - size_t startIndex; - - /** - * The number of the line the token is on. - */ - uint line; - - /** - * The column number of the start of the token in the original source. - * $(LPAREN)measured in ASCII characters or UTF-8 code units$(RPAREN) - */ - ushort column; - - /** - * The token type. - */ - TokenType type; - - /** - * Check to see if the token is of the same type and has the same string - * representation as the given token. - */ - bool opEquals(ref const(Token) other) const nothrow pure - { - return other.type == type && other.value == value; - } - - /// - unittest - { - Token a; - a.type = TokenType.intLiteral; - a.value = "1"; - Token b; - b.type = TokenType.intLiteral; - b.value = "1"; - assert (a == b); - b.value = "2"; - assert (a != b); - } - - /** - * Checks to see if the token's string representation is equal to the given - * string. - */ - bool opEquals(string value) const nothrow pure - { - return this.value == value; - } - - /// - unittest - { - Token t; - t.value = "abcde"; - assert (t == "abcde"); - } - - /** - * Checks to see if the token is of the given type. - */ - bool opEquals(TokenType type) const nothrow pure - { - return this.type == type; - } - - /// - unittest - { - Token t; - t.type = TokenType.class_; - assert (t == TokenType.class_); - } - - /** - * Comparison operator orders tokens by start index. - */ - int opCmp(ref const(Token) other) const nothrow pure - { - if (startIndex < other.startIndex) return -1; - if (startIndex > other.startIndex) return 1; - return 0; - } - - /// - unittest - { - Token a; - a.startIndex = 10; - Token b; - b.startIndex = 20; - assert (a < b); - } - - /** - * Comparison operator overload for checking if the token's start index is - * before, after, or the same as the given index. - */ - int opCmp(size_t index) const nothrow pure - { - if (startIndex < index) return -1; - if (startIndex > index) return 1; - return 0; - } - - /// - unittest - { - import std.array; - import std.range; - auto source = cast(ubyte[]) "a b c"c; - LexerConfig c; - auto tokens = source.byToken(c).array(); - assert (tokens.length == 3); - //assert (tokens.assumeSorted().lowerBound(1)[$ - 1] == "b"); - } -} - -/** - * Configure the behavior of the $(LREF byToken)$(LPAREN)$(RPAREN) function. - * These flags may be combined using a bitwise or. - */ -enum IterationStyle : ushort -{ - /// Only include code, not whitespace or comments - codeOnly = 0, - /// Includes comments - includeComments = 0b0001, - /// Includes whitespace - includeWhitespace = 0b0010, - /// Include $(LINK2 http://dlang.org/lex.html#specialtokens, special tokens) - includeSpecialTokens = 0b0100, - /// Do not stop iteration on reaching the $(D_KEYWORD ___EOF__) token - ignoreEOF = 0b1000, - /// Include _everything - everything = includeComments | includeWhitespace | ignoreEOF -} - -/** - * Configuration of the token lexing style. These flags may be combined with a - * bitwise or. - */ -enum TokenStyle : ushort -{ - /** - * Escape sequences will be replaced with their equivalent characters, - * enclosing quote characters will not be included. Special tokens such as - * $(D_KEYWORD ___VENDOR__) will be replaced with their equivalent strings. - * Useful for creating a compiler or interpreter. - */ - default_ = 0b0000, - - /** - * Escape sequences will not be processed. An escaped quote character will - * not terminate string lexing, but it will not be replaced with the quote - * character in the token. - */ - notEscaped = 0b0001, - - /** - * Strings will include their opening and closing quote characters as well - * as any prefixes or suffixes $(LPAREN)e.g.: $(D_STRING "abcde"w) will - * include the $(D_STRING 'w') character as well as the opening and closing - * quotes$(RPAREN) - */ - includeQuotes = 0b0010, - - /** - * Do not replace the value field of the special tokens such as - * $(D_KEYWORD ___DATE__) with their string equivalents. - */ - doNotReplaceSpecial = 0b0100, - - /** - * Strings will be read exactly as they appeared in the source, including - * their opening and closing quote characters. Useful for syntax - * highlighting. - */ - source = notEscaped | includeQuotes | doNotReplaceSpecial -} - -/** - * Lexer configuration - */ -struct LexerConfig -{ - /** - * Configure the lexer's iteration style. - * See_Also: $(LREF IterationStyle) - */ - IterationStyle iterStyle = IterationStyle.codeOnly; - - /** - * Configure the style of the tokens produced by the lexer. - * See_Also: $(LREF TokenStyle) - */ - TokenStyle tokenStyle = tokenStyle.default_; - - /** - * Replacement for the $(D_KEYWORD ___VERSION__) token. Defaults to 100. - */ - uint versionNumber = 100; - - /** - * Replacement for the $(D_KEYWORD ___VENDOR__) token. Defaults to $(D_STRING "std.d.lexer") - */ - string vendorString = "std.d.lexer"; - - /** - * Name used when creating error messages that are sent to errorFunc. This - * is needed because the lexer operates on any forward range of ASCII - * characters or UTF-8 code units and does not know what to call its input - * source. Defaults to the empty string. - */ - string fileName = ""; - - /** - * The starting line and column numbers for the lexer. These can be set when - * partially lexing D code to provide correct token locations and better - * error messages. These should be left to their default values of 1 when - * lexing entire files. Line and column numbers are 1-indexed in this lexer - * because this produces more useful error messages. The start index is - * zero-indexed, as it is more useful to machines than users. - */ - uint startLine = 1; - - /** - * ditto - */ - ushort startColumn = 1; - - /** - * ditto - */ - size_t startIndex = 0; - - /** - * This function is called when an error is encountered during lexing. - * If this field is not set, the lexer will throw an exception including the - * line, column, and error message. - * - * $(BOOKTABLE Error Function Parameters:, - * $(TR $(TD string) $(TD File name)) - * $(TR $(TD size_t) $(TD Code unit index)) - * $(TR $(TD uint) $(TD Line number)) - * $(TR $(TD ushort) $(TD Column number)) - * $(TR $(TD string) $(TD Error message)) - * ) - */ - void delegate(string, size_t, uint, ushort, string) errorFunc; -} - -/** - * Iterate over the given range of characters by D tokens. - * - * The lexing process is able to handle a forward range of code units by using - * an internal circular buffer to provide efficient extracting of the token - * values from the input. It is more efficient, however, to provide a range - * that supports random accessing and slicing. If the input range supports - * slicing, the caching layer aliases itself away and the lexing process - * is much more efficient. - * - * Params: - * range = the range of characters to lex - * config = the lexer configuration - * bufferSize = initial size of internal circular buffer - * Returns: - * a $(LREF TokenRange) that iterates over the given range - */ -auto byToken(R)(R range, LexerConfig config, size_t bufferSize = 4*1024) - if (isForwardRange!(R) && !isRandomAccessRange!(R) - && is(ElementType!R : const(ubyte))) -{ - // 4K of circular buffer by default - auto r = TokenRange!(typeof(lexerSource(range))) - (lexerSource(range, bufferSize), config); - r.popFront(); - return r; -} - -///ditto -auto byToken(R)(R range, LexerConfig config) - if (isRandomAccessRange!(R) && is(ElementType!R : const(ubyte))) -{ - auto r = TokenRange!(typeof(lexerSource(range))) - (lexerSource(range), config); - r.popFront(); - return r; -} - -/** - * Range of tokens. Use $(LREF byToken)$(LPAREN)$(RPAREN) to instantiate. - */ -struct TokenRange(LexSrc) - //if ( is(LexSrc : LexSource!(U...), U...)) //check for LexSource -{ - /** - * Returns: true if the range is empty - */ - bool empty() const @property - { - return _empty; - } - - /** - * Returns: the current token - */ - ref const(Token) front() const @property - { - assert(!empty, "trying to get front of an empty token range"); - return current; - } - - /** - * Returns: the current token and then removes it from the range - */ - Token moveFront() - { - auto r = move(current); - popFront(); - return r; - } - - /** - * Removes the current token from the range - */ - void popFront() - { - advance(); - } - -private: - - /* - * Advances the range to the next token - */ - void advance() - { -L_advance: - if (src.empty) - { - _empty = true; - return; - } - src.mark(); // mark a start of a lexing "frame" - current.line = lineNumber; - current.startIndex = src.index; - current.column = column; - current.value = null; - switch (src.front) - { - // handle sentinels for end of input - case 0: - case 0x1a: - // TODO: check config flags, it's cheap - // since this branch at most is taken once per file - _empty = true; - return; - mixin(generateCaseTrie( - "=", "TokenType.assign", - "@", "TokenType.at", - "&", "TokenType.amp", - "&=", "TokenType.bitAndAssign", - "|", "TokenType.bitOr", - "|=", "TokenType.bitOrAssign", - "~=", "TokenType.catAssign", - ":", "TokenType.colon", - ",", "TokenType.comma", - "--", "TokenType.decrement", - "$", "TokenType.dollar", - "==", "TokenType.equal", - "=>", "TokenType.goesTo", - ">", "TokenType.greater", - ">=", "TokenType.greaterEqual", - "++", "TokenType.increment", - "{", "TokenType.lBrace", - "[", "TokenType.lBracket", - "<", "TokenType.less", - "<=", "TokenType.lessEqual", - "<>=", "TokenType.lessEqualGreater", - "<>", "TokenType.lessOrGreater", - "&&", "TokenType.logicAnd", - "||", "TokenType.logicOr", - "(", "TokenType.lParen", - "-", "TokenType.minus", - "-=", "TokenType.minusAssign", - "%", "TokenType.mod", - "%=", "TokenType.modAssign", - "*=", "TokenType.mulAssign", - "!", "TokenType.not", - "!=", "TokenType.notEqual", - "!>", "TokenType.notGreater", - "!>=", "TokenType.notGreaterEqual", - "!<", "TokenType.notLess", - "!<=", "TokenType.notLessEqual", - "!<>", "TokenType.notLessEqualGreater", - "+", "TokenType.plus", - "+=", "TokenType.plusAssign", - "^^", "TokenType.pow", - "^^=", "TokenType.powAssign", - "}", "TokenType.rBrace", - "]", "TokenType.rBracket", - ")", "TokenType.rParen", - ";", "TokenType.semicolon", - "<<", "TokenType.shiftLeft", - "<<=", "TokenType.shiftLeftAssign", - ">>", "TokenType.shiftRight", - ">>=", "TokenType.shiftRightAssign", - "*", "TokenType.star", - "?", "TokenType.ternary", - "~", "TokenType.tilde", - "!<>=", "TokenType.unordered", - ">>>", "TokenType.unsignedShiftRight", - ">>>=", "TokenType.unsignedShiftRightAssign", - "^", "TokenType.xor", - "^=", "TokenType.xorAssign" - )); - case '/': - nextCharNonLF(); - if (isEoF()) - { - current.type = TokenType.div; - current.value = "/"; - return; - } - switch (src.front) - { - case '/': - case '*': - case '+': - if (config.iterStyle & IterationStyle.includeComments) - return lexComment!true(); - lexComment!false(); - goto L_advance; // tail-recursion - - case '=': - current.type = TokenType.divAssign; - current.value = "/="; - src.popFront(); - return; - default: - current.type = TokenType.div; - current.value = "/"; - return; - } - case '.': - if (!src.canPeek()) - { - current.type = TokenType.dot; - current.value = tokenValue!(TokenType.dot); - nextCharNonLF(); - return; - } - switch (src.peek()) - { - case '0': .. case '9': - lexNumber(); - return; - case '.': - nextCharNonLF(); - nextCharNonLF(); - current.type = TokenType.dotdot; - if (src.front == '.') - { - current.type = TokenType.vararg; - nextCharNonLF(); - current.value = tokenValue!(TokenType.vararg); - } - else - current.value = tokenValue!(TokenType.dotdot); - return; - default: - nextCharNonLF(); - current.type = TokenType.dot; - current.value = tokenValue!(TokenType.dot); - return; - } - case '0': .. case '9': - lexNumber(); - return; - case '\'': - lexCharacterLiteral(); - return; - case '"': - case '`': - lexString(); - return; - case 'q': - nextCharNonLF(); - if (isEoF()) - goto default; - switch (src.front) - { - case '{': - lexTokenString(); - return; - case '"': - lexDelimitedString(); - return; - default: - break; - } - goto default; - case 'r': - nextCharNonLF(); - if (isEoF()) - goto default; - else if (src.front == '"') - { - lexString(); - return; - } - else - goto default; - case 'x': - nextCharNonLF(); - if (isEoF()) - goto default; - else if (src.front == '"') - { - lexHexString(); - return; - } - else - goto default; - case '#': - lexSpecialTokenSequence(); - if(config.iterStyle & IterationStyle.includeSpecialTokens) - return; - goto L_advance; // tail-recursion - // "short" ASCII whites - case 0x20: - case 0x09: .. case 0x0d: - if (config.iterStyle & IterationStyle.includeWhitespace) - return lexWhitespace!true(); - lexWhitespace!false(); - goto L_advance; // tail-recursion - default: - if ((src.front & 0x80) && isLongWhite()) - { - if (config.iterStyle & IterationStyle.includeWhitespace) - return lexWhitespace!true(); - lexWhitespace!false(); - goto L_advance; // tail-recursion - } - for(;;) - { - if(isSeparating()) - break; - nextCharNonLF(); - if(isEoF()) - break; - } - - current.type = lookupTokenType(src.slice); - current.value = getTokenValue(current.type); - if (current.value is null) - setTokenValue(); - if (!(config.iterStyle & IterationStyle.ignoreEOF) && current.type == TokenType.specialEof) - { - _empty = true; - return; - } - - if (config.tokenStyle & TokenStyle.doNotReplaceSpecial) - return; - expandSpecialToken(); - } - } - - // TODO: LexSource could be improved for forward ranges - // to avoid buffering at all (by disabling it for a moment) - // so keep the 'keep' parameter here and elsewhere - void lexWhitespace(bool keep)() - { - current.type = TokenType.whitespace; - do - { - nextChar(); - } while (!isEoF() && isWhite()); - static if (keep) setTokenValue(); - } - - void lexComment(bool keep)() - in - { - assert (src.front == '/' || src.front == '*' || src.front == '+'); - } - body - { - current.type = TokenType.comment; - switch(src.front) - { - case '/': - while (!isEoF() && !isNewline(src.front)) - { - nextCharNonLF(); - } - break; - case '*': - while (!isEoF()) - { - if (src.front == '*') - { - static if (keep) nextCharNonLF(); - else src.popFront(); - if (src.front == '/') - { - nextCharNonLF(); - break; - } - } - else - nextChar(); - } - break; - case '+': - int depth = 1; - while (depth > 0 && !isEoF()) - { - if (src.front == '+') - { - nextCharNonLF(); - if (src.front == '/') - { - nextCharNonLF(); - --depth; - } - } - else if (src.front == '/') - { - nextCharNonLF(); - if (src.front == '+') - { - nextCharNonLF(); - ++depth; - } - } - else - nextChar(); - } - break; - default: - assert(false); - } - static if (keep) - setTokenValue(); - } - - void lexHexString() - in - { - assert (src.front == '"'); - } - body - { - current.type = TokenType.stringLiteral; - nextChar(); - while (true) - { - if (isEoF()) - { - errorMessage("Unterminated hex string literal"); - return; - } - else if (isHexDigit(src.front)) - { - nextCharNonLF(); - } - else if (isWhite() && (config.tokenStyle & TokenStyle.notEscaped)) - { - nextChar(); - } - else if (src.front == '"') - { - nextCharNonLF(); - break; - } - else - { - errorMessage(format("Invalid character '%s' in hex string literal", - cast(char) src.front)); - return; - } - } - bool hasSuffix = lexStringSuffix(); - if (config.tokenStyle & TokenStyle.notEscaped) - { - if (config.tokenStyle & TokenStyle.includeQuotes) - setTokenValue(); - else - setTokenValue(2, hasSuffix ? -2 : -1); - } - else - { - // TODO: appender is an allocation happy fat pig - // remove it later - auto a = appender!(char[])(); - foreach (b; std.range.chunks(src.slice[2 .. $ - 1], 2)) - { - auto s = cast(char[])b; - ubyte ch = cast(ubyte)parse!uint(s, 16); - a.put(ch); - } - // can safely assume ownership of data - current.value = cast(string)a.data; - } - } - - void lexNumber() - in - { - assert(isDigit(src.front) || src.front == '.'); - } - body - { - if (src.front != '0') - { - lexDecimal(); - return; - } - else - { - switch (src.peek()) - { - case 'x': - case 'X': - nextCharNonLF(); - nextCharNonLF(); - lexHex(); - break; - case 'b': - case 'B': - nextCharNonLF(); - nextCharNonLF(); - lexBinary(); - break; - default: - lexDecimal(); - break; - } - } - } - - void lexFloatSuffix() - { - switch (src.front) - { - case 'L': - nextCharNonLF(); - current.type = TokenType.doubleLiteral; - break; - case 'f': - case 'F': - nextCharNonLF(); - current.type = TokenType.floatLiteral; - break; - default: - break; - } - if (!isEoF() && src.front == 'i') - { - nextCharNonLF(); - if (current.type == TokenType.floatLiteral) - current.type = TokenType.ifloatLiteral; - else - current.type = TokenType.idoubleLiteral; - } - } - - void lexIntSuffix() - { - bool foundU; - bool foundL; - while (!isEoF()) - { - switch (src.front) - { - case 'u': - case 'U': - if (foundU) - return; - switch (current.type) - { - case TokenType.intLiteral: - current.type = TokenType.uintLiteral; - nextCharNonLF(); - break; - case TokenType.longLiteral: - current.type = TokenType.ulongLiteral; - nextCharNonLF(); - break; - default: - assert (false); - } - foundU = true; - break; - case 'L': - if (foundL) - return; - switch (current.type) - { - case TokenType.intLiteral: - current.type = TokenType.longLiteral; - nextCharNonLF(); - break; - case TokenType.uintLiteral: - current.type = TokenType.ulongLiteral; - nextCharNonLF(); - break; - default: - assert (false); - } - foundL = true; - break; - default: - return; - } - } - } - - void lexExponent() - in - { - assert (src.front == 'e' || src.front == 'E' || src.front == 'p' - || src.front == 'P'); - } - body - { - nextCharNonLF(); - bool foundSign = false; - bool foundDigit = false; - while (!isEoF()) - { - switch (src.front) - { - case '-': - case '+': - if (foundSign) - { - if (!foundDigit) - errorMessage("Expected an exponent"); - return; - } - foundSign = true; - nextCharNonLF(); - break; - case '0': .. case '9': - case '_': - foundDigit = true; - nextCharNonLF(); - break; - case 'L': - case 'f': - case 'F': - case 'i': - lexFloatSuffix(); - return; - default: - if (!foundDigit) - errorMessage("Expected an exponent"); - return; - } - } - } - - void lexDecimal() - in - { - assert (isDigit(src.front) || src.front == '.'); - } - body - { - bool foundDot = src.front == '.'; - if (foundDot) - nextCharNonLF(); - current.type = TokenType.intLiteral; - decimalLoop: while (!isEoF()) - { - switch (src.front) - { - case '0': .. case '9': - case '_': - nextCharNonLF(); - break; - case 'u': - case 'U': - if (!foundDot) - lexIntSuffix(); - break decimalLoop; - case 'i': - lexFloatSuffix(); - break decimalLoop; - case 'L': - if (foundDot) - lexFloatSuffix(); - else - lexIntSuffix(); - break decimalLoop; - case 'f': - case 'F': - lexFloatSuffix(); - break decimalLoop; - case 'e': - case 'E': - lexExponent(); - break decimalLoop; - case '.': - if (foundDot) - break decimalLoop; - if (src.canPeek() && src.peek() == '.') - break decimalLoop; - else - { - // The following bit of silliness tries to tell the - // difference between "int dot identifier" and - // "double identifier". - if (src.canPeek()) - { - switch (src.peek()) - { - case '0': .. case '9': - goto doubleLiteral; - default: - break decimalLoop; - } - } - else - { - doubleLiteral: - nextCharNonLF(); - foundDot = true; - current.type = TokenType.doubleLiteral; - } - } - break; - default: - break decimalLoop; - } - } - setTokenValue(); - } - - void lexBinary() - { - current.type = TokenType.intLiteral; - binaryLoop: while (!isEoF()) - { - switch (src.front) - { - case '0': - case '1': - case '_': - nextCharNonLF(); - break; - case 'u': - case 'U': - case 'L': - lexIntSuffix(); - break binaryLoop; - default: - break binaryLoop; - } - } - setTokenValue(); - } - - void lexHex() - { - current.type = TokenType.intLiteral; - bool foundDot; - hexLoop: while (!isEoF()) - { - switch (src.front) - { - case 'a': .. case 'f': - case 'A': .. case 'F': - case '0': .. case '9': - case '_': - nextCharNonLF(); - break; - case 'u': - case 'U': - lexIntSuffix(); - break hexLoop; - case 'i': - if (foundDot) - lexFloatSuffix(); - break hexLoop; - case 'L': - if (foundDot) - { - lexFloatSuffix(); - break hexLoop; - } - else - { - lexIntSuffix(); - break hexLoop; - } - case 'p': - case 'P': - lexExponent(); - break hexLoop; - case '.': - if (foundDot) - break hexLoop; - if (src.canPeek() && src.peek() == '.') - break hexLoop; - nextCharNonLF(); - foundDot = true; - current.type = TokenType.doubleLiteral; - break; - default: - break hexLoop; - } - } - setTokenValue(); - } - - bool lexStringSuffix() - { - current.type = TokenType.stringLiteral; - bool foundSuffix = false; - if (!isEoF()) - { - switch (src.front) - { - case 'w': - current.type = TokenType.wstringLiteral; - goto case 'c'; - case 'd': - current.type = TokenType.dstringLiteral; - goto case 'c'; - case 'c': - foundSuffix = true; - nextCharNonLF(); - break; - default: - break; - } - } - return foundSuffix; - } - - void lexCharacterLiteral() - in - { - assert (src.front == '\''); - } - body - { - current.type = TokenType.characterLiteral; - nextChar(); - if (isEoF()) - { - errorMessage("Unterminated character literal"); - return; - } - switch (src.front) - { - case '\'': - break; - case '\\': - if (config.tokenStyle & TokenStyle.notEscaped) - skipEscapeSequence(); - else - { - // the only special path - // 40 bytes is enough for 2 quotes - // and the longest character entity - ubyte[40] utf8; - size_t len; - if (config.tokenStyle & TokenStyle.includeQuotes) - { - utf8[0] = '\''; - len = decodeEscapeSequence(utf8[1..$]); - utf8[len++] = '\''; - } - else - len = decodeEscapeSequence(utf8[]); - if (src.front != '\'') - { - errorMessage("Expected \"'\" to end character literal"); - } - // skip over last "'" - nextChar(); - setTokenValue(utf8[0..len]); - return; - } - break; - default: - if (src.front & 0x80) - { - while (src.front & 0x80) - nextChar(); - break; - } - else - { - nextChar(); - break; - } - } - if (src.front != '\'') - errorMessage("Expected \"'\" to end character literal"); - nextChar(); - if (config.tokenStyle & TokenStyle.includeQuotes) - setTokenValue(); - else - setTokenValue(1, -1); - } - - void lexString() - in - { - //assert (src.front == '"'); - } - body - { - current.type = TokenType.stringLiteral; - bool longWysiwg = src.slice.length > 0 && src.slice[0] == 'r'; // 2 chars : r" - bool isWysiwyg = src.front == '`'; - // in case we need to unescape string - Appender!(ubyte[]) unescaped; - auto quote = src.front; - nextChar(); - while (true) - { - if (isEoF()) - { - errorMessage("Unterminated string literal"); - return; - } - else if (src.front == '\\') - { - if (isWysiwyg || longWysiwg) - nextChar(); - else if(config.tokenStyle & TokenStyle.notEscaped) - { - skipEscapeSequence(); - } - else - { - if(unescaped == Appender!(ubyte[]).init) - unescaped = appender!(ubyte[])(); - unescaped.put(src.slice()); - decodeEscapeSequence(unescaped); - src.mark(); //start next slice after escape sequence - } - } - else if (src.front == quote) - { - nextCharNonLF(); - break; - } - else - nextChar(); - } - lexStringSuffix(); - // helper to handle quotes - void setData(R)(R range) - { - if (config.tokenStyle & TokenStyle.includeQuotes) - setTokenValue(range); - else if (longWysiwg) - setTokenValue(range[2..$-1]); - else - setTokenValue(range[1..$-1]); - } - import std.stdio; - if(unescaped != Appender!(ubyte[]).init) - { - //stuff in the last slice and use buffered data - unescaped.put(src.slice); - setData(unescaped.data); - } - else - { - setData(src.slice); //slice directly - } - } - - void lexDelimitedString() - in - { - assert(src.front == '"'); - } - body - { - current.type = TokenType.stringLiteral; - - nextChar(); - - bool heredoc; - ubyte open; - ubyte close; - - switch (src.front) - { - case '[': open = '['; close = ']'; break; - case '{': open = '{'; close = '}'; break; - case '(': open = '('; close = ')'; break; - case '<': open = '<'; close = '>'; break; - default: heredoc = true; break; - } - if (heredoc) - lexHeredocString(); - else - lexNormalDelimitedString(open, close); - } - - void lexNormalDelimitedString(ubyte open, ubyte close) - in - { - assert(src.slice[0 .. 2] == `q"`); - } - body - { - current.type = TokenType.stringLiteral; - int depth = 1; - nextChar(); - while (true) - { - if (isEoF()) - { - errorMessage("Unterminated string literal"); - break; - } - if (src.front == open) - { - nextChar(); - ++depth; - } - else if (src.front == close) - { - nextChar(); - --depth; - if (depth <= 0) - { - auto r = src.save(); //TODO: allocates for Fwd range - if (r.front == '"') - { - nextChar(); - break; - } - else - { - errorMessage("Expected \" after balanced " - ~ cast(char) close ~ " but found " - ~ cast(char) r.front ~ " instead."); - break; - } - } - } - else - nextChar(); - } - if (config.tokenStyle & TokenStyle.includeQuotes) - setTokenValue(); - else - setTokenValue(3, -2); - } - - void lexHeredocString() - in - { - assert (src.slice.equal("q\"")); - } - body - { - typeof(src.slice) ident; - uint newlineBytes; - while (true) - { - if (isEoF()) - { - errorMessage("Unterminated string literal"); - return; - } - else if (isNewline(src.front)) - { - ident = src.slice[2..$]; - nextChar(); - newlineBytes = cast(uint) (src.slice.length - 2 - ident.length); - break; - } - else if (isSeparating()) - { - nextChar(); - ident = src.slice[2..$]; - nextChar(); - newlineBytes = 0; - break; - } - else - { - nextChar(); - } - } - while (true) - { - if (isEoF()) - { - errorMessage("Unterminated string literal"); - break; - } - else if (src.slice.length > ident.length - && src.slice[$-ident.length .. $].equal(ident)) - { - if (src.front == '"') - { - nextChar(); - lexStringSuffix(); - break; - } - else - { - errorMessage("Unterminated string literal: " ~ cast(string) src.slice); - break; - } - } - else - nextChar(); - } - - bool hasSuffix = lexStringSuffix(); - - if (config.tokenStyle & TokenStyle.includeQuotes) - setTokenValue(); - else - { - setTokenValue(cast(int) (2 + newlineBytes + ident.length), - cast(int) (-(ident.length + (hasSuffix ? 2 : 1)))); - } - } - - void lexTokenString() - in - { - assert (src.front == '{'); - } - body - { - current.type = TokenType.stringLiteral; - nextChar(); - auto app = appender!(ubyte[])(); - if (config.tokenStyle & TokenStyle.includeQuotes) - { - app.put('q'); - app.put('{'); - } - LexerConfig c = config; - scope (exit) config = c; - config.iterStyle = IterationStyle.everything; - config.tokenStyle = TokenStyle.source; - int depth = 1; - - while (!isEoF()) - { - advance(); - if (current.type == TokenType.lBrace) - ++depth; - else if (current.type == TokenType.rBrace) - { - --depth; - if (depth <= 0) - break; - } - app.put(representation(current.value)); - } - config = c; - if (config.tokenStyle & TokenStyle.includeQuotes) - { - app.put('}'); - } - if (src.empty) - current.type = TokenType.stringLiteral; - else - { - switch (src.front) - { - case 'd': - if (config.tokenStyle & TokenStyle.includeQuotes) - app.put('d'); - current.type = TokenType.dstringLiteral; - src.popFront(); - break; - case 'w': - if (config.tokenStyle & TokenStyle.includeQuotes) - app.put('w'); - current.type = TokenType.wstringLiteral; - src.popFront(); - break; - case 'c': - if (config.tokenStyle & TokenStyle.includeQuotes) - app.put('c'); - src.popFront(); - goto default; - default: - current.type = TokenType.stringLiteral; - break; - } - } - current.value = cast(string) app.data; - } - - void lexSpecialTokenSequence() - in - { - assert (src.front == '#'); - } - body - { - nextChar(); - auto r = src.save(); - auto app = appender!(ubyte[])(); - app.put('#'); - while (true) - { - if (r.isRangeEoF()) - { - errorMessage("Found EOF when interpreting special token sequence"); - return; - } - else if (isNewline(r.front)) - break; - else - { - app.put(r.front); - r.popFront(); - } - } - auto m = match((cast(char[]) app.data), - `#line\s+(?P\d+)\s*(?P".+")*?`); - if (m) - { - current.type = TokenType.specialTokenSequence; - current.value = (cast(char[]) app.data).idup; - column += app.data.length; - foreach (i; 0 .. app.data.length) - src.popFront(); - auto c = m.captures; - if (c["filespec"]) - config.fileName = c["filespec"].idup; - auto l = c["line"]; - lineNumber = parse!uint(l); - } - else - { - current.type = TokenType.hash; - current.value = tokenValue!(TokenType.hash); - } - } - -//===================================================================== -// Helpers for lexXYZ functions -//===================================================================== - void skipEscapeSequence() - { - // no decoding, just minor sanity checks - nextChar(); - switch (src.front) - { - case '\'': - case '"': - case '?': - case '\\': - case 'a': - case 'b': - case 'f': - case 'n': - case 'r': - case 't': - case 'v': - case 0x0a: - case 0x00: - nextChar(); - return; - case '0': .. case '7': - foreach(i; 0 .. 3) - { - nextChar(); - if (src.front < '0' || src.front > '7') return; - } - return; - case 'x': - nextChar(); - foreach(i; 0 .. 2) - { - if (!isHexDigit(src.front)) - { - errorMessage("Expected hex digit"); - return; - } - nextChar(); - } - return; - case 'u': - case 'U': - uint digits = src.front == 'u' ? 4 : 8; - nextChar(); - foreach (i; 0 .. digits) - { - if (!isHexDigit(src.front)) - { - errorMessage("Expected hex digit instead of %s".format( - cast(char) src.front)); - return; - } - nextChar(); - } - return; - case '&': - while (!isEoF()) - { - nextChar(); - if (src.front == ';') - break; - } - return; - default: - errorMessage("Invalid escape sequence"); - return; - } - } - - size_t decodeEscapeSequence(OutputRange)(OutputRange dest) - in - { - assert (src.front == '\\'); - } - body - { - size_t reencodeNumeric(ubyte[] src, int radix, OutputRange dest) - { - char[] chunk = cast(char[])src; - char[4] utfBuf; - uint codepoint = parse!uint(chunk, radix); - size_t len; - try - len = encode(utfBuf, codepoint); - catch (UTFException ex) - { - errorMessage(ex.msg); - return 0; - } - dest.put(cast(ubyte[]) utfBuf[0..len]); - return len; - } - - ubyte[40] buffer; - src.popFront(); - switch (src.front) - { - case '\'': - case '"': - case '?': - case '\\': - buffer[0] = src.front; - src.popFront(); - return 1; - case 'a': dest.put('\a'); src.popFront(); return 1; - case 'b': dest.put('\b'); src.popFront(); return 1; - case 'f': dest.put('\f'); src.popFront(); return 1; - case 'n': dest.put('\n'); src.popFront(); return 1; - case 'r': dest.put('\r'); src.popFront(); return 1; - case 't': dest.put('\t'); src.popFront(); return 1; - case 'v': dest.put('\v'); src.popFront(); return 1; - case 0x0a: dest.put(cast(ubyte)0x0a); src.popFront(); return 1; - case 0x00: dest.put(cast(ubyte)0x00); src.popFront(); return 1; - case '0': .. case '7': - size_t idx = 0; - while(idx < 3 && !isEoF()) - { - buffer[idx++] = src.front; - src.popFront(); - if (src.front < '0' || src.front > '7') break; - } - return reencodeNumeric(buffer[0..idx], 8, dest); - case 'x': - src.popFront(); - foreach(i; 0 .. 2) - { - if (!isHexDigit(src.front)) - { - errorMessage("Expected hex digit"); - return 1; - } - buffer[i] = src.front; - src.popFront(); - } - return reencodeNumeric(buffer[0..2], 16, dest); - case 'u': - case 'U': - uint digitCount = src.front == 'u' ? 4 : 8; - src.popFront(); - foreach (i; 0 .. digitCount) - { - if (!isHexDigit(src.front)) - { - errorMessage("Expected hex digit"); - return 1; - } - buffer[i] = src.front; - src.popFront(); - } - return reencodeNumeric(buffer[0..digitCount], 16, dest); - case '&': - src.popFront(); - size_t idx = 0; - while (!isEoF()) - { - if (std.ascii.isAlpha(src.front)) - { - buffer[idx++] = src.front; - if(idx == buffer.length) // way over maximum length - errorMessage("Invalid character entity"); - src.popFront(); - } - else if (src.front == ';') - { - src.popFront(); - break; - } - else - { - errorMessage("Invalid character entity"); - return idx; - } - } - //TODO: avoid looking up as UTF string, use raw bytes - string chunk = cast(string)buffer[0..idx]; - auto names = assumeSorted(map!"a.name"(characterEntities)); - auto place = names.lowerBound(chunk).length; - if (place == names.length || names[place] != chunk) - { - errorMessage("Invalid character entity \"&%s;\"" - .format(cast(string) chunk)); - return 1; - } - auto entity = characterEntities[place].value; - dest.put(cast(ubyte[]) entity); - return entity.length; - default: - errorMessage("Invalid escape sequence"); - return 1; - } - } - - // advances underlying mark-slice range and counts lines, cols - void nextChar() - { - bool foundNewline; - if (src.front == '\r') - { - src.popFront(); - foundNewline = true; - } - if (!src.empty) - { - if (src.front == '\n') - { - src.popFront(); - foundNewline = true; - } - else - { - src.popFront(); - } - } - if (foundNewline) - { - ++lineNumber; - column = 1; - } - else - ++column; - - } - - //same but don't bother for LF sequences - void nextCharNonLF() - { - src.popFront(); - ++column; - } - - void setTokenValue()() - { - current.value = cache.get(src.slice); - } - - void setTokenValue()(int startOffset, int endOffset) - in - { - assert(startOffset >= 0); - assert(endOffset <= 0); - } - body - { - auto piece = src.slice; - // avoid unsigned arithmetic as endOffset is negative - int end = cast(int)piece.length + endOffset; - current.value = cache.get(src.slice[startOffset .. end]); - } - - void setTokenValue(R)(R range) - if(isRandomAccessRange!R && is(ElementType!R : const(ubyte))) - { - current.value = cache.get(range); - } - - bool isEoF() const - { - return src.empty || src.front == 0 || src.front == 0x1a; - } - - bool isSeparating() - { - auto ch = src.front; - if (ch <= 0x2f) return true; - if (ch >= ':' && ch <= '@') return true; - if (ch >= '[' && ch <= '^') return true; - if (ch >= '{' && ch <= '~') return true; - if (ch == '`') return true; - if ((ch & 0x80) && isLongWhite()) return true; - return false; - } - - bool isWhite() - { - auto c = src.front; - if (c & 0x80) // multi-byte utf-8 - { - return isLongWhite(); - } - else - return c == 0x20 || (c >= 0x09 && c <= 0x0d); - } - - bool isLongWhite() - { - assert(src.front & 0x80); // only non-ascii - //TODO: here and elsewhere we'd better have - // some kind of lookahead in LexSource instead of .save - auto r = src.save(); - if (r.front != 0xe2) - return false; - else - r.popFront(); - if (r.empty || r.front != 0x80) - return false; - else - r.popFront(); - if (r.empty || (r.front != 0xa8 && r.front != 0xa9)) - return false; - return true; - } - - void expandSpecialToken() - { - switch (current.type) - { - case TokenType.specialDate: - current.type = TokenType.stringLiteral; - auto time = Clock.currTime(); - current.value = format("%s %02d %04d", time.month, time.day, time.year); - return; - case TokenType.specialTime: - auto time = Clock.currTime(); - current.type = TokenType.stringLiteral; - current.value = (cast(TimeOfDay)(time)).toISOExtString(); - return; - case TokenType.specialTimestamp: - auto time = Clock.currTime(); - auto dt = cast(DateTime) time; - current.type = TokenType.stringLiteral; - current.value = format("%s %s %02d %02d:%02d:%02d %04d", - dt.dayOfWeek, dt.month, dt.day, dt.hour, dt.minute, - dt.second, dt.year); - return; - case TokenType.specialVendor: - current.type = TokenType.stringLiteral; - current.value = config.vendorString; - return; - case TokenType.specialVersion: - current.type = TokenType.stringLiteral; - current.value = format("%d", config.versionNumber); - return; - case TokenType.specialLine: - current.type = TokenType.intLiteral; - current.value = format("%d", current.line); - return; - case TokenType.specialFile: - current.type = TokenType.stringLiteral; - current.value = config.fileName; - return; - default: - return; - } - } - - void errorMessage(string s) - { - import std.string: format; - if (config.errorFunc !is null) - config.errorFunc(config.fileName, current.startIndex, - current.line, current.column, s); - else - throw new Exception(format("%s(%d:%d): %s", - config.fileName, current.line, current.column, s)); - } - - this(LexSrc lex, LexerConfig cfg) - { - src = move(lex); // lex is r-value - lineNumber = cfg.startLine; - column = cfg.startColumn; - //src._index = cfg.startIndex; - _empty = false; - config = move(cfg); // ditto with cfg - cache = StringCache(initialTableSize); - } - - enum initialTableSize = 2048; - Token current; - uint lineNumber; - ushort column; - LexSrc src; - bool _empty; - LexerConfig config; - StringCache cache; -} - -/** - * Returns: true if the token is an operator - */ -pure nothrow bool isOperator(const TokenType t) -{ - return t >= TokenType.assign && t <= TokenType.xorAssign; -} - -/** - * ditto - */ -pure nothrow bool isOperator(ref const Token t) -{ - return isOperator(t.type); -} - -/** - * Returns: true if the token is a keyword - */ -pure nothrow bool isKeyword(const TokenType t) -{ - return t >= TokenType.bool_ && t <= TokenType.with_; -} - -/** - * ditto - */ -pure nothrow bool isKeyword(ref const Token t) -{ - return isKeyword(t.type); -} - -/** - * Returns: true if the token is a built-in type - */ -pure nothrow bool isBasicType(const TokenType t) -{ - return t >= TokenType.bool_ && t <= TokenType.wchar_; -} - -/** - * ditto - */ -pure nothrow bool isBasicType(ref const Token t) -{ - return isBasicType(t.type); -} - -/** - * Returns: true if the token is an attribute - */ -pure nothrow bool isAttribute(const TokenType t) -{ - return t >= TokenType.align_ && t <= TokenType.static_; -} - -/** - * ditto - */ -pure nothrow bool isAttribute(ref const Token t) -{ - return isAttribute(t.type); -} - -/** - * Returns: true if the token is a protection attribute - */ -pure nothrow bool isProtection(const TokenType t) -{ - return t >= TokenType.export_ && t <= TokenType.public_; -} - -/** - * ditto - */ -pure nothrow bool isProtection(ref const Token t) -{ - return isProtection(t.type); -} - -/** - * Returns: true if the token is a compile-time constant such as ___DATE__ - */ -pure nothrow bool isConstant(const TokenType t) -{ - return t >= TokenType.specialDate && t <= TokenType.traits; -} - -/** - * ditto - */ -pure nothrow bool isConstant(ref const Token t) -{ - return isConstant(t.type); -} - -/** - * Returns: true if the token is a string or number literal - */ -pure nothrow bool isLiteral(const TokenType t) -{ - return t >= TokenType.doubleLiteral && t <= TokenType.wstringLiteral; -} - -/** - * ditto - */ -pure nothrow bool isLiteral(ref const Token t) -{ - return isLiteral(t.type); -} - -/** - * Returns: true if the token is a number literal - */ -pure nothrow bool isNumberLiteral(const TokenType t) -{ - return t >= TokenType.doubleLiteral && t <= TokenType.ulongLiteral; -} - -/** - * ditto - */ -pure nothrow bool isNumberLiteral(ref const Token t) -{ - return isNumberLiteral(t.type); -} - -/** - * Returns: true if the token is a string literal - */ -pure nothrow bool isStringLiteral(const TokenType t) -{ - return t >= TokenType.dstringLiteral && t <= TokenType.wstringLiteral; -} - -/** - * ditto - */ -pure nothrow bool isStringLiteral(ref const Token t) -{ - return isStringLiteral(t.type); -} - -/** - * Returns: true if the token is whitespace, a comment, a special token - * sequence, or an identifier - */ -pure nothrow bool isMisc(const TokenType t) -{ - return t >= TokenType.comment && t <= TokenType.specialTokenSequence; -} - -/** - * ditto - */ -pure nothrow bool isMisc(ref const Token t) -{ - return isMisc(t.type); -} - -/** - * Listing of all the tokens in the D language. - */ -enum TokenType: ushort -{ - invalid, /// Not a valid token - assign, /// = - at, /// @ - amp, /// & - bitAndAssign, /// &= - bitOr, /// | - bitOrAssign, /// |= - catAssign, /// ~= - colon, /// : - comma, /// , - decrement, /// -- - div, /// / - divAssign, /// /= - dollar, /// $ - dot, /// . - equal, /// == - goesTo, /// => - greater, /// > - greaterEqual, /// >= - hash, /// # - increment, /// ++ - lBrace, /// { - lBracket, /// [ - less, /// < - lessEqual, /// <= - lessEqualGreater, /// <>= - lessOrGreater, /// <> - logicAnd, /// && - logicOr, /// || - lParen, /// $(LPAREN) - minus, /// - - minusAssign, /// -= - mod, /// % - modAssign, /// %= - mulAssign, /// *= - not, /// ! - notEqual, /// != - notGreater, /// !> - notGreaterEqual, /// !>= - notLess, /// !< - notLessEqual, /// !<= - notLessEqualGreater, /// !<> - plus, /// + - plusAssign, /// += - pow, /// ^^ - powAssign, /// ^^= - rBrace, /// } - rBracket, /// ] - rParen, /// $(RPAREN) - semicolon, /// ; - shiftLeft, /// << - shiftLeftAssign, /// <<= - shiftRight, /// >> - shiftRightAssign, /// >>= - dotdot, /// .. - star, /// * - ternary, /// ? - tilde, /// ~ - unordered, /// !<>= - unsignedShiftRight, /// >>> - unsignedShiftRightAssign, /// >>>= - vararg, /// ... - xor, /// ^ - xorAssign, /// ^= - - bool_, /// $(D_KEYWORD bool) - byte_, /// $(D_KEYWORD byte) - cdouble_, /// $(D_KEYWORD cdouble) - cent_, /// $(D_KEYWORD cent) - cfloat_, /// $(D_KEYWORD cfloat) - char_, /// $(D_KEYWORD char) - creal_, /// $(D_KEYWORD creal) - dchar_, /// $(D_KEYWORD dchar) - double_, /// $(D_KEYWORD double) - float_, /// $(D_KEYWORD float) - idouble_, /// $(D_KEYWORD idouble) - ifloat_, /// $(D_KEYWORD ifloat) - int_, /// $(D_KEYWORD int) - ireal_, /// $(D_KEYWORD ireal) - long_, /// $(D_KEYWORD long) - real_, /// $(D_KEYWORD real) - short_, /// $(D_KEYWORD short) - ubyte_, /// $(D_KEYWORD ubyte) - ucent_, /// $(D_KEYWORD ucent) - uint_, /// $(D_KEYWORD uint) - ulong_, /// $(D_KEYWORD ulong) - ushort_, /// $(D_KEYWORD ushort) - void_, /// $(D_KEYWORD void) - wchar_, /// $(D_KEYWORD wchar) - - align_, /// $(D_KEYWORD align) - deprecated_, /// $(D_KEYWORD deprecated) - extern_, /// $(D_KEYWORD extern) - pragma_, /// $(D_KEYWORD pragma) - export_, /// $(D_KEYWORD export) - package_, /// $(D_KEYWORD package) - private_, /// $(D_KEYWORD private) - protected_, /// $(D_KEYWORD protected) - public_, /// $(D_KEYWORD public) - abstract_, /// $(D_KEYWORD abstract) - auto_, /// $(D_KEYWORD auto) - const_, /// $(D_KEYWORD const) - final_, /// $(D_KEYWORD final) - gshared, /// $(D_KEYWORD __gshared) - immutable_, /// $(D_KEYWORD immutable) - inout_, /// $(D_KEYWORD inout) - scope_, /// $(D_KEYWORD scope) - shared_, /// $(D_KEYWORD shared) - static_, /// $(D_KEYWORD static) - - synchronized_, /// $(D_KEYWORD synchronized) - alias_, /// $(D_KEYWORD alias) - asm_, /// $(D_KEYWORD asm) - assert_, /// $(D_KEYWORD assert) - body_, /// $(D_KEYWORD body) - break_, /// $(D_KEYWORD break) - case_, /// $(D_KEYWORD case) - cast_, /// $(D_KEYWORD cast) - catch_, /// $(D_KEYWORD catch) - class_, /// $(D_KEYWORD class) - continue_, /// $(D_KEYWORD continue) - debug_, /// $(D_KEYWORD debug) - default_, /// $(D_KEYWORD default) - delegate_, /// $(D_KEYWORD delegate) - function_, /// $(D_KEYWORD function) - delete_, /// $(D_KEYWORD delete) - do_, /// $(D_KEYWORD do) - else_, /// $(D_KEYWORD else) - enum_, /// $(D_KEYWORD enum) - false_, /// $(D_KEYWORD false) - finally_, /// $(D_KEYWORD finally) - foreach_, /// $(D_KEYWORD foreach) - foreach_reverse_, /// $(D_KEYWORD foreach_reverse) - for_, /// $(D_KEYWORD for) - goto_, /// $(D_KEYWORD goto) - if_, /// $(D_KEYWORD if) - import_, /// $(D_KEYWORD import) - in_, /// $(D_KEYWORD in) - interface_, /// $(D_KEYWORD interface) - invariant_, /// $(D_KEYWORD invariant) - is_, /// $(D_KEYWORD is) - lazy_, /// $(D_KEYWORD lazy) - macro_, /// $(D_KEYWORD macro) - mixin_, /// $(D_KEYWORD mixin) - module_, /// $(D_KEYWORD module) - new_, /// $(D_KEYWORD new) - nothrow_, /// $(D_KEYWORD nothrow) - null_, /// $(D_KEYWORD null) - out_, /// $(D_KEYWORD out) - override_, /// $(D_KEYWORD override) - pure_, /// $(D_KEYWORD pure) - ref_, /// $(D_KEYWORD ref) - return_, /// $(D_KEYWORD return) - struct_, /// $(D_KEYWORD struct) - super_, /// $(D_KEYWORD super) - switch_, /// $(D_KEYWORD switch) - template_, /// $(D_KEYWORD template) - this_, /// $(D_KEYWORD this) - throw_, /// $(D_KEYWORD throw) - true_, /// $(D_KEYWORD true) - try_, /// $(D_KEYWORD try) - typedef_, /// $(D_KEYWORD typedef) - typeid_, /// $(D_KEYWORD typeid) - typeof_, /// $(D_KEYWORD typeof) - union_, /// $(D_KEYWORD union) - unittest_, /// $(D_KEYWORD unittest) - version_, /// $(D_KEYWORD version) - volatile_, /// $(D_KEYWORD volatile) - while_, /// $(D_KEYWORD while) - with_, /// $(D_KEYWORD with) - - specialDate, /// $(D_KEYWORD ___DATE__) - specialEof, /// $(D_KEYWORD ___EOF__) - specialTime, /// $(D_KEYWORD ___TIME__) - specialTimestamp, /// $(D_KEYWORD ___TIMESTAMP__) - specialVendor, /// $(D_KEYWORD ___VENDOR__) - specialVersion, /// $(D_KEYWORD ___VERSION__) - specialFile, /// $(D_KEYWORD ___FILE__) - specialLine, /// $(D_KEYWORD ___LINE__) - specialModule, /// $(D_KEYWORD ___MODULE__) - specialFunction, /// $(D_KEYWORD ___FUNCTION__) - specialPrettyFunction, /// $(D_KEYWORD ___PRETTY_FUNCTION__) - specialTokenSequence, /// #line 10 "file.d" - - comment, /// $(D_COMMENT /** comment */) or $(D_COMMENT // comment) or $(D_COMMENT ///comment) - identifier, /// anything else - scriptLine, /// Line at the beginning of source file that starts from #! - traits, /// $(D_KEYWORD ___traits) - parameters, /// $(D_KEYWORD ___parameters) - vector, /// $(D_KEYWORD ___vector) - whitespace, /// whitespace - doubleLiteral, /// 123.456 - floatLiteral, /// 123.456f or 0x123_45p-3 - idoubleLiteral, /// 123.456i - ifloatLiteral, /// 123.456fi - intLiteral, /// 123 or 0b1101010101 - longLiteral, /// 123L - realLiteral, /// 123.456L - irealLiteral, /// 123.456Li - uintLiteral, /// 123u - ulongLiteral, /// 123uL - characterLiteral, /// 'a' - dstringLiteral, /// $(D_STRING "32-bit string"d) - stringLiteral, /// $(D_STRING "an 8-bit string") - wstringLiteral, /// $(D_STRING "16-bit string"w) -} - -/** - * Look up a token's string representation by its type. - * Params: - * type = the token type - * Returns: a string representing the token, or null for token types such as - * identifier or integer literal whose string representations vary - */ -pure string getTokenValue(const TokenType type) -{ - return tokenValues[type]; -} - -/// -unittest -{ - // The class token always has one value - assert (getTokenValue(TokenType.class_) == "class"); - // Identifiers do not - assert (getTokenValue(TokenType.identifier) is null); -} - -// Implementation details follow -private: - -// For now a private helper that is tailored to the way lexer works -// hides away forwardness of range by buffering -// random-access version is a straightforward thin wrapping -// ATM it is byte-oriented -private struct LexSource(R) - if(isForwardRange!R && !isRandomAccessRange!R) - { - bool empty() const { return _empty; } - - auto ref front() const - { - return accum[accumIdx]; - } - - auto ref peek() const - in - { - assert (accumIdx + 1 < accum.length); - } - body - { - return accum[accumIdx + 1]; - } - - void popFront() - { - ++_index; - range.popFront(); - // if that was last byte - // just advance so that open-righted slice just works - accumIdx = (accumIdx+1) & mask; - if(range.empty) - { - _empty = true; - return; - } - if(accumIdx == savedAccumIdx) - { - // and move stuff around - auto oldLen = accum.length; - auto toCopy = oldLen - accumIdx; - accum.length *= 2; // keep pow of 2 - // copy starting with last item - copy(retro(accum[accumIdx..oldLen]), - retro(accum[$-toCopy..$])); - savedAccumIdx = accum.length - toCopy; - } - accum[accumIdx] = range.front; - } - - auto save() - { - typeof(this) copy = this; - copy.range = range.save; - // sadly need to dup circular buffer, as it overwrites items - copy.accum = copy.accum.dup; - return copy; - } - - // mark a position to slice from later on - size_t mark() - { - savedAccumIdx = accumIdx; - return accumIdx; - } - - // slice to current position from previously marked position - auto slice() @property - { - // it's an open right range as usual - return CircularRange(accum, savedAccumIdx, accumIdx); - } - - size_t index() const @property - { - return _index; - } - -private: - this(R src, size_t bufferSize) - { - range = src; - assert(bufferSize > 0); - assert((bufferSize & (bufferSize-1)) == 0); //is power of 2 - accum = new ubyte[bufferSize]; - if(range.empty) - _empty = true; - else - accum[accumIdx] = range.front; // load front - } - - // a true RA-range of ubyte - struct CircularRange - { - this(ubyte[] buf, size_t s, size_t e) - { - assert((buffer.length & (buffer.length-1)) == 0); - buffer = buf; - start = s; - end = e; - } - //Forward range primitives - @property bool empty() const { return start == end; } - @property auto ref front() const { return buffer[start]; } - void popFront() { start = (start + 1) & mask; } - @property auto save() { return this; } - - //Backwards is a bit slower, but should be rarely used (if at all) - @property ref back(){ return buffer[(end-1) & mask]; } - void popBack() { end = (end - 1) & mask; } - - // RA range primitives - ref opIndex(size_t idx){ return buffer[(start+idx) & mask]; } - @property size_t length() - { - return end < start ? end + buffer.length -start : end - start; - } - alias length opDollar; - - auto opSlice(size_t newStart, size_t newEnd) - { - size_t maskedStart = (start+newStart) & mask; - size_t maskedEnd = (start+newEnd) & mask; - return typeof(this)(buffer, maskedStart, maskedEnd); - } - // @@@bug fwd-ref in ldc0.10 (if placed above previous one) - auto opSlice(){ return opSlice(0, length); } - private: - @property auto mask(){ return buffer.length-1; } - size_t start, end; - ubyte[] buffer; - } - - @property auto mask(){ return accum.length-1; } - - R range; - bool _empty; - ubyte[] accum; // accumulator buffer for non-RA ranges - size_t savedAccumIdx; - size_t accumIdx; // current index in accumulator - size_t _index; // index of current element in original range -} - -// TODO: make sure it's RandomAccess later -/*static assert(isRandomAccessRange!( - LexSource!(typeof(filter!"true"(cast(ubyte[])null))) - .CircularRange) -);*/ - -//trivial pass-through for RA ranges -private struct LexSource(R) - if(isRandomAccessRange!R) -{ - bool empty() const @property { return cur >= range.length; } - bool canPeek() const { return cur + 1 < range.length; } - auto ref front() const @property { return range[cur]; } - void popFront(){ cur++; } - - auto ref peek() const - in - { - assert (canPeek()); - } - body - { - return range[cur + 1]; - } - - auto save() - { - typeof(this) copy = this; - copy.range = range.save; - return copy; - } - - auto mark() - { - saved = cur; - } - - // use the underlying range slicing capability - auto slice() @property - { - return range[saved..cur]; - } - - size_t index() const @property - { - return cur; - } - -private: - this(R src) - { - range = src; - } - size_t cur, saved; - R range; -} - -auto lexerSource(Range)(Range range, size_t bufSize=8) - if(isForwardRange!Range && !isRandomAccessRange!Range - && is(ElementType!Range : const(ubyte))) -{ - return LexSource!(Range)(range, bufSize); -} - -auto lexerSource(Range)(Range range) - if(isRandomAccessRange!Range - && is(ElementType!Range : const(ubyte))) -{ - return LexSource!(Range)(range); -} - -unittest -{ - // test the basic functionality of a "mark-slice" range - import std.string, std.stdio; - - static void test_hello(T)(T lexs) - { - assert(lexs.front == 'H'); - lexs.popFront(); - assert(lexs.front == 'e'); - foreach(i; 0..2) - { - auto saved = lexs.save; - lexs.mark(); - assert(lexs.slice.equal("")); - lexs.popFront(); - assert(lexs.slice.equal("e"), text(cast(char)lexs.front)); - lexs.popFrontN(4); - auto bytes = lexs.slice.map!"cast(char)a".array(); - assert(bytes.equal("ello,"), bytes.to!string); - lexs.mark(); - assert(lexs.slice.equal("")); - assert(lexs.front == 'w'); - lexs.popFrontN(6); - assert(lexs.empty); - auto s = lexs.slice(); - auto msg = s.save.map!"cast(char)a".array; - assert(s[].equal("world!"), msg); - assert(s[2..$-1].equal("rld"), msg); - assert(s[0] == 'w' && s[$-1] == '!'); - s.popFront(); - assert(s.front == 'o' && s.back == '!'); - s.popBack(); - assert(s.front == 'o' && s.back == 'd'); - //restore and repeat again - lexs = saved; - } - } - - static void test_empty(T)(T lexs) - { - assert(lexs.empty); - lexs.mark(); - assert(lexs.slice().equal("")); - } - - auto fwdLex = lexerSource( - "Hello, world!" - .representation - .filter!"a != ' '", 16 // and the one that is more then enough - ); - test_hello(fwdLex); - fwdLex = lexerSource( - "Hello, world!" - .representation - .filter!"a != ' '", 1 // try the smallest initial buffer - ); - test_hello(fwdLex); - fwdLex = lexerSource("".representation.filter!"a != ' '"); - auto raLex = lexerSource("".representation); - test_empty(raLex); - test_empty(fwdLex); - raLex = lexerSource("Hello,world!".representation); - test_hello(raLex); -} - -// uses auto-detection for pure, safe nothrow -bool isRangeEoF(R)(ref R range) -{ - return range.empty || range.front == 0 || range.front == 0x1a; -} - -// Lookup table for token string representations -immutable(string[TokenType.max + 1]) tokenValues = [ - null, - "=", - "@", - "&", - "&=", - "|", - "|=", - "~=", - ":", - ",", - "--", - "/", - "/=", - "$", - ".", - "==", - "=>", - ">", - ">=", - "#", - "++", - "{", - "[", - "<", - "<=", - "<>=", - "<>", - "&&", - "||", - "(", - "-", - "-=", - "%", - "%=", - "*=", - "!", - "!=", - "!>", - "!>=", - "!<", - "!<=", - "!<>", - "+", - "+=", - "^^", - "^^=", - "}", - "]", - ")", - ";", - "<<", - "<<=", - ">>", - ">>=", - "..", - "*", - "?", - "~", - "!<>=", - ">>>", - ">>>=", - "...", - "^", - "^=", - "bool", - "byte", - "cdouble", - "cent", - "cfloat", - "char", - "creal", - "dchar", - "double", - "float", - "idouble", - "ifloat", - "int", - "ireal", - "long", - "real", - "short", - "ubyte", - "ucent", - "uint", - "ulong", - "ushort", - "void", - "wchar", - "align", - "deprecated", - "extern", - "pragma", - "export", - "package", - "private", - "protected", - "public", - "abstract", - "auto", - "const", - "final", - "__gshared", - "immutable", - "inout", - "scope", - "shared", - "static", - "synchronized", - "alias", - "asm", - "assert", - "body", - "break", - "case", - "cast", - "catch", - "class", - "continue", - "debug", - "default", - "delegate", - "function", - "delete", - "do", - "else", - "enum", - "false", - "finally", - "foreach", - "foreach_reverse", - "for", - "goto", - "if", - "import", - "in", - "interface", - "invariant", - "is", - "lazy", - "macro", - "mixin", - "module", - "new", - "nothrow", - "null", - "out", - "override", - "pure", - "ref", - "return", - "struct", - "super", - "switch", - "template", - "this", - "throw", - "true", - "try", - "typedef", - "typeid", - "typeof", - "union", - "unittest", - "version", - "volatile", - "while", - "with", - "__DATE__", - "__EOF__", - "__TIME__", - "__TIMESTAMP__", - "__VENDOR__", - "__VERSION__", - "__FILE__", - "__LINE__", - "__MODULE__", - "__FUNCTION__", - "__PRETTY_FUNCTION__", - null, - null, - null, - null, - "__traits", - "__parameters", - "__vector", - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, +import stdx.lexer; + +private enum staticTokens = [ + ",", ".", "..", "...", "/", "/=", "!", "!<", "!<=", "!<>", "!<>=", "!=", + "!>", "!>=", "$", "%", "%=", "&", "&&", "&=", "(", ")", "*", "*=", "+", "++", + "+=", "-", "--", "-=", ":", ";", "<", "<<", "<<=", "<=", "<>", "<>=", "=", + "==", "=>", ">", ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[", "]", "^", + "^=", "^^", "^^=", "{", "|", "|=", "||", "}", "~", "~=" ]; -template tokenValue(TokenType val) -{ - enum tokenValue = getTokenValue(val); -} - -private pure bool isNewline(ubyte ch) -{ - return ch == '\n' || ch == '\r'; -} - -pure TokenType lookupTokenType(R)(R input) -{ - switch(input.length) - { - case 2: - switch (input[0]) - { - case 'd': if (input[1] == 'o') return TokenType.do_; else break; - case 'i': - if (input[1] == 'f') return TokenType.if_; - else if (input[1] == 'n') return TokenType.in_; - else if (input[1] == 's') return TokenType.is_; - else break; - default: break; - } - break; - case 3: - switch (input[0]) - { - case 'a': if (input[1..$].equal("sm")) return TokenType.asm_; else break; - case 'f': if (input[1..$].equal("or")) return TokenType.for_; else break; - case 'i': if (input[1..$].equal("nt")) return TokenType.int_; else break; - case 'n': if (input[1..$].equal("ew")) return TokenType.new_; else break; - case 'o': if (input[1..$].equal("ut")) return TokenType.out_; else break; - case 'r': if (input[1..$].equal("ef")) return TokenType.ref_; else break; - case 't': if (input[1..$].equal("ry")) return TokenType.try_; else break; - default: break; - } - break; - case 4: - switch (input[0]) - { - case 'a': if (input[1..$].equal("uto")) return TokenType.auto_; else break; - case 'b': if (input[1..$].equal("ody")) return TokenType.body_; - else if (input[1..$].equal("ool")) return TokenType.bool_; - else if (input[1..$].equal("yte")) return TokenType.byte_; - else break; - case 'c': if (input[1..$].equal("ase")) return TokenType.case_; - else if (input[1..$].equal("ast")) return TokenType.cast_; - else if (input[1..$].equal("ent")) return TokenType.cent_; - else if (input[1..$].equal("har")) return TokenType.char_; - else break; - case 'e': if (input[1..$].equal("lse")) return TokenType.else_; - else if (input[1..$].equal("num")) return TokenType.enum_; - else break; - case 'g': if (input[1..$].equal("oto")) return TokenType.goto_; else break; - case 'l': if (input[1..$].equal("azy")) return TokenType.lazy_; - else if (input[1..$].equal("ong")) return TokenType.long_; - else break; - case 'n': if (input[1..$].equal("ull")) return TokenType.null_; else break; - case 'p': if (input[1..$].equal("ure")) return TokenType.pure_; else break; - case 'r': if (input[1..$].equal("eal")) return TokenType.real_; else break; - case 't': if (input[1..$].equal("his")) return TokenType.this_; - else if (input[1..$].equal("rue")) return TokenType.true_; - else break; - case 'u': if (input[1..$].equal("int")) return TokenType.uint_; else break; - case 'v': if (input[1..$].equal("oid")) return TokenType.void_; else break; - case 'w': if (input[1..$].equal("ith")) return TokenType.with_; else break; - default: break; - } - break; - case 5: - switch (input[0]) - { - case 'a': if (input[1..$].equal("lias")) return TokenType.alias_; - else if (input[1..$].equal("lign")) return TokenType.align_; else break; - case 'b': if (input[1..$].equal("reak")) return TokenType.break_; else break; - case 'c': if (input[1..$].equal("atch")) return TokenType.catch_; - else if (input[1..$].equal("lass")) return TokenType.class_; - else if (input[1..$].equal("onst")) return TokenType.const_; - else if (input[1..$].equal("real")) return TokenType.creal_; - else break; - case 'd': if (input[1..$].equal("char")) return TokenType.dchar_; - else if (input[1..$].equal("ebug")) return TokenType.debug_; else break; - case 'f': if (input[1..$].equal("alse")) return TokenType.false_; - else if (input[1..$].equal("inal")) return TokenType.final_; - else if (input[1..$].equal("loat")) return TokenType.float_; - else break; - case 'i': if (input[1..$].equal("nout")) return TokenType.inout_; - else if (input[1..$].equal("real")) return TokenType.ireal_; else break; - case 'm': if (input[1..$].equal("acro")) return TokenType.macro_; - else if (input[1..$].equal("ixin")) return TokenType.mixin_; else break; - case 's': if (input[1..$].equal("cope")) return TokenType.scope_; - else if (input[1..$].equal("hort")) return TokenType.short_; - else if (input[1..$].equal("uper")) return TokenType.super_; else break; - case 't': if (input[1..$].equal("hrow")) return TokenType.throw_; else break; - case 'u': if (input[1..$].equal("byte")) return TokenType.ubyte_; - else if (input[1..$].equal("cent")) return TokenType.ucent_; - else if (input[1..$].equal("long")) return TokenType.ulong_; - else if (input[1..$].equal("nion")) return TokenType.union_; - else break; - case 'w': if (input[1..$].equal("char")) return TokenType.wchar_; - else if (input[1..$].equal("hile")) return TokenType.while_; - else break; - default: break; - } - break; - case 6: - switch (input[0]) - { - case 'a': if (input[1..$].equal("ssert")) return TokenType.assert_; else break; - case 'c': if (input[1..$].equal("float")) return TokenType.cfloat_; else break; - case 'd': if (input[1..$].equal("elete")) return TokenType.delete_; - else if (input[1..$].equal("ouble")) return TokenType.double_; else break; - case 'e': if (input[1..$].equal("xport")) return TokenType.export_; - else if (input[1..$].equal("xtern")) return TokenType.extern_; else break; - case 'i': if (input[1..$].equal("float")) return TokenType.ifloat_; - else if (input[1..$].equal("mport")) return TokenType.import_; else break; - case 'm': if (input[1..$].equal("odule")) return TokenType.module_; else break; - case 'p': if (input[1..$].equal("ragma")) return TokenType.pragma_; - else if (input[1..$].equal("ublic")) return TokenType.public_; else break; - case 'r': if (input[1..$].equal("eturn")) return TokenType.return_; else break; - case 's': if (input[1..$].equal("hared")) return TokenType.shared_; - else if (input[1..$].equal("tatic")) return TokenType.static_; - else if (input[1..$].equal("truct")) return TokenType.struct_; - else if (input[1..$].equal("witch")) return TokenType.switch_; else break; - case 't': if (input[1..$].equal("ypeid")) return TokenType.typeid_; - else if (input[1..$].equal("ypeof")) return TokenType.typeof_; else break; - case 'u': if (input[1..$].equal("short")) return TokenType.ushort_; else break; - default: break; - } - break; - case 7: - switch (input[0]) - { - case '_': if (input[1..$].equal("_EOF__")) return TokenType.specialEof; else break; - case 'c': if (input[1..$].equal("double")) return TokenType.cdouble_; else break; - case 'd': if (input[1..$].equal("efault")) return TokenType.default_; else break; - case 'f': if (input[1..$].equal("inally")) return TokenType.finally_; - else if (input[1..$].equal("oreach")) return TokenType.foreach_; else break; - case 'i': if (input[1..$].equal("double")) return TokenType.idouble_; else break; - case 'n': if (input[1..$].equal("othrow")) return TokenType.nothrow_; else break; - case 'p': if (input[1..$].equal("ackage")) return TokenType.package_; - else if (input[1..$].equal("rivate")) return TokenType.private_; else break; - case 't': if (input[1..$].equal("ypedef")) return TokenType.typedef_; else break; - case 'v': if (input[1..$].equal("ersion")) return TokenType.version_; else break; - default: break; - } - break; - case 8: - switch (input[0]) - { - case '_': if (input[1..$].equal("_DATE__")) return TokenType.specialDate; - else if (input[1..$].equal("_FILE__")) return TokenType.specialFile; - else if (input[1..$].equal("_LINE__")) return TokenType.specialLine; - else if (input[1..$].equal("_vector")) return TokenType.vector; - else if (input[1..$].equal("_TIME__")) return TokenType.specialTime; - else if (input[1..$].equal("_traits")) return TokenType.traits; else break; - case 'a': if (input[1..$].equal("bstract")) return TokenType.abstract_; else break; - case 'c': if (input[1..$].equal("ontinue")) return TokenType.continue_; else break; - case 'd': if (input[1..$].equal("elegate")) return TokenType.delegate_; else break; - case 'f': if (input[1..$].equal("unction")) return TokenType.function_; else break; - case 'o': if (input[1..$].equal("verride")) return TokenType.override_; else break; - case 't': if (input[1..$].equal("emplate")) return TokenType.template_; else break; - case 'u': if (input[1..$].equal("nittest")) return TokenType.unittest_; else break; - case 'v': if (input[1..$].equal("olatile")) return TokenType.volatile_; else break; - default: break; - } - break; - case 9: - switch (input[0]) - { - case '_': if (input[1..$].equal("_gshared")) return TokenType.gshared; else break; - case 'i': if (input[1..$].equal("mmutable")) return TokenType.immutable_; - else if (input[1..$].equal("nterface")) return TokenType.interface_; - else if (input[1..$].equal("nvariant")) return TokenType.invariant_; else break; - case 'p': if (input[1..$].equal("rotected")) return TokenType.protected_; else break; - default: break; - } - break; - case 10: - switch (input[0]) - { - case 'd': if (input[1..$].equal("eprecated")) return TokenType.deprecated_; else break; - case '_': - if (input[1..$].equal("_VENDOR__")) return TokenType.specialVendor; - else if (input[1..$].equal("_MODULE__")) return TokenType.specialModule; else break; - default: break; - } - break; - case 11: - if (input.equal("__VERSION__")) return TokenType.specialVersion; - break; - case 12: - switch (input[0]) - { - case 's': if (input[1..$].equal("ynchronized")) return TokenType.synchronized_; else break; - case '_': if (input[1..$].equal("_FUNCTION__")) return TokenType.specialFunction; - else if (input[1..$].equal("_parameters")) return TokenType.parameters; else break; - default: break; - } - break; - case 13: - if (input.equal("__TIMESTAMP__")) return TokenType.specialTimestamp; - break; - case 15: - if (input.equal("foreach_reverse")) return TokenType.foreach_reverse_; - break; - case 19: - if (input.equal("__PRETTY_FUNCTION__")) return TokenType.specialPrettyFunction; - break; - default: break; - } - return TokenType.identifier; -} - -class Trie(K, V) if (isInputRange!K): TrieNode!(K, V) -{ - /** - * Adds the given value to the trie with the given key - */ - void add(K key, V value) pure - { - TrieNode!(K,V) current = this; - foreach(keyPart; key) - { - if ((keyPart in current.children) is null) - { - auto node = new TrieNode!(K, V); - current.children[keyPart] = node; - current = node; - } - else - current = current.children[keyPart]; - } - current.value = value; - } -} - -class TrieNode(K, V) if (isInputRange!K) -{ - V value; - TrieNode!(K,V)[ElementType!K] children; -} - -string printCaseStatements(K, V)(TrieNode!(K,V) node, string indentString) -{ - string caseStatement = ""; - foreach(dchar k, TrieNode!(K,V) v; node.children) - { - caseStatement ~= indentString; - caseStatement ~= "case '"; - caseStatement ~= k; - caseStatement ~= "':\n"; - caseStatement ~= indentString; - caseStatement ~= "\tnextCharNonLF();\n"; - if (v.children.length > 0) - { - caseStatement ~= indentString; - caseStatement ~= "\tif (isEoF())\n"; - caseStatement ~= indentString; - caseStatement ~= "\t{\n"; - caseStatement ~= indentString; - caseStatement ~= "\t\tcurrent.value = tokenValue!("~node.children[k].value~");\n"; - caseStatement ~= indentString; - caseStatement ~= "\t\tcurrent.type = " ~ node.children[k].value; - caseStatement ~= ";\n"; - caseStatement ~= indentString; - caseStatement ~= "\t\treturn;\n"; - caseStatement ~= indentString; - caseStatement ~= "\t}\n"; - caseStatement ~= indentString; - caseStatement ~= "\tswitch (src.front)\n"; - caseStatement ~= indentString; - caseStatement ~= "\t{\n"; - caseStatement ~= printCaseStatements(v, indentString ~ "\t"); - caseStatement ~= indentString; - caseStatement ~= "\tdefault:\n"; - caseStatement ~= indentString; - caseStatement ~= "\t\tcurrent.type = "; - caseStatement ~= v.value; - caseStatement ~= ";\n"; - caseStatement ~= indentString; - caseStatement ~= "\t\tcurrent.value = tokenValue!("~v.value~");\n"; - caseStatement ~= indentString; - caseStatement ~= "\t\treturn;\n"; - caseStatement ~= indentString; - caseStatement ~= "\t}\n"; - } - else - { - caseStatement ~= indentString; - caseStatement ~= "\tcurrent.type = "; - caseStatement ~= v.value; - caseStatement ~= ";\n"; - caseStatement ~= indentString; - caseStatement ~= "\tcurrent.value = tokenValue!("~v.value~");\n"; - caseStatement ~= indentString; - caseStatement ~= "\treturn;\n"; - } - } - return caseStatement; -} - -string generateCaseTrie(string[] args ...) -{ - auto t = new Trie!(string, string); - for(int i = 0; i < args.length; i+=2) - { - t.add(args[i], args[i+1]); - } - return printCaseStatements(t, ""); -} - -struct StringCache -{ - this(size_t startSize) - { - assert((startSize & (startSize-1)) == 0); - index = new Slot*[startSize]; - } - - string get(R)(R range) if (isRandomAccessRange!R - && is(Unqual!(ElementType!R) : const(ubyte))) - { - uint h = hash(range); - uint bucket = h & (index.length-1); - Slot *s = index[bucket]; - if (s == null) - { - string str = putIntoCache(range); - index[bucket] = allocateSlot(str, h); - uniqueSlots++; - return str; - } - while (true) - { - if(s.hash == h && s.value.equal(range)) - return s.value; - if(s.next == null) break; - s = s.next; - } - string str = putIntoCache(range); - s.next = allocateSlot(str, h); - uniqueSlots++; - // had at least 1 item in this bucket - // and inserted another one - check load factor - if (uniqueSlots * loadDenom > index.length * loadQuot) - rehash(); - return str; - } - -private: - - static uint hash(R)(R data) - { - uint hash = 0; - foreach (b; data) - { - hash ^= sbox[b]; - hash *= 3; - } - return hash; - } - - struct Slot - { - string value; - Slot* next; - uint hash; - } - - void printLoadFactor() - { - size_t cnt = 0, maxChain = 0; - foreach(Slot* s; index) - { - size_t chain = 0; - for(Slot* p = s; p; p = p.next) - { - chain++; - } - maxChain = max(chain, maxChain); - cnt += chain; - } - import std.stdio; - assert(cnt == uniqueSlots); - writefln("Load factor: %.3f; max bucket %d", - cast(double)cnt/index.length, - maxChain); - } - - void rehash() - { - //writefln("BEFORE (size = %d):", index.length); - //printLoadFactor(); - size_t oldLen = index.length; - index.length *= 2; - for (size_t i = 0; i < oldLen; i++) - { - Slot* cur = index[i], prev; - while(cur) - { - //has extra bit set - move it out - if(cur.hash & oldLen) - { - if(prev == null) - { - Slot* r = cur; - index[i] = cur.next; - cur = cur.next; - insertIntoBucket(r, i + oldLen); - } - else - { - Slot* r = removeLink(cur, prev); - insertIntoBucket(r, i + oldLen); - } - } - else - { - prev = cur; - cur = cur.next; - } - } - } - //writefln("AFTER (size = %d):", index.length); - //printLoadFactor(); - } - - static Slot* removeLink(ref Slot* cur, Slot* prev) - { - prev.next = cur.next; - Slot* r = cur; - cur = cur.next; - return r; - } - - //insert at front of bucket - void insertIntoBucket(Slot* what, size_t bucket) - { - what.next = null; - Slot* p = index[bucket]; - what.next = p; - index[bucket] = what; - } - - Slot* allocateSlot(string val, uint hash) - { - auto slice = allocateInCache(Slot.sizeof); - auto newSlot = cast(Slot*)slice.ptr; - *newSlot = Slot(val, null, hash); - return newSlot; - } - - Slot*[] index; - size_t uniqueSlots; - enum loadQuot = 2, loadDenom = 3; - - // leave some slack for allocators/GC meta-data - enum chunkSize = 16*1024 - size_t.sizeof*8; - ubyte*[] chunkS; - size_t next = chunkSize; - //TODO: add aligned variant that allocates at word boundary - ubyte[] allocateInCache(size_t size) - { - import core.memory; - if(next + size > chunkSize) - { - // avoid huge allocations - if(size> chunkSize/4) - { - ubyte* p = cast(ubyte*)GC.malloc(size, - GC.BlkAttr.NO_SCAN); - return p[0..size]; - } - chunkS ~= cast(ubyte*)GC.malloc(chunkSize, - GC.BlkAttr.NO_SCAN); - next = 0; - } - auto slice = chunkS[$-1][next..next+size]; - next += size; - return slice; - } - - string putIntoCache(R)(R data) - { - auto slice = allocateInCache(data.length); - slice[] = data[]; - return cast(string)slice; - } - -} - -immutable uint[] sbox = [ - 0xF53E1837, 0x5F14C86B, 0x9EE3964C, 0xFA796D53, - 0x32223FC3, 0x4D82BC98, 0xA0C7FA62, 0x63E2C982, - 0x24994A5B, 0x1ECE7BEE, 0x292B38EF, 0xD5CD4E56, - 0x514F4303, 0x7BE12B83, 0x7192F195, 0x82DC7300, - 0x084380B4, 0x480B55D3, 0x5F430471, 0x13F75991, - 0x3F9CF22C, 0x2FE0907A, 0xFD8E1E69, 0x7B1D5DE8, - 0xD575A85C, 0xAD01C50A, 0x7EE00737, 0x3CE981E8, - 0x0E447EFA, 0x23089DD6, 0xB59F149F, 0x13600EC7, - 0xE802C8E6, 0x670921E4, 0x7207EFF0, 0xE74761B0, - 0x69035234, 0xBFA40F19, 0xF63651A0, 0x29E64C26, - 0x1F98CCA7, 0xD957007E, 0xE71DDC75, 0x3E729595, - 0x7580B7CC, 0xD7FAF60B, 0x92484323, 0xA44113EB, - 0xE4CBDE08, 0x346827C9, 0x3CF32AFA, 0x0B29BCF1, - 0x6E29F7DF, 0xB01E71CB, 0x3BFBC0D1, 0x62EDC5B8, - 0xB7DE789A, 0xA4748EC9, 0xE17A4C4F, 0x67E5BD03, - 0xF3B33D1A, 0x97D8D3E9, 0x09121BC0, 0x347B2D2C, - 0x79A1913C, 0x504172DE, 0x7F1F8483, 0x13AC3CF6, - 0x7A2094DB, 0xC778FA12, 0xADF7469F, 0x21786B7B, - 0x71A445D0, 0xA8896C1B, 0x656F62FB, 0x83A059B3, - 0x972DFE6E, 0x4122000C, 0x97D9DA19, 0x17D5947B, - 0xB1AFFD0C, 0x6EF83B97, 0xAF7F780B, 0x4613138A, - 0x7C3E73A6, 0xCF15E03D, 0x41576322, 0x672DF292, - 0xB658588D, 0x33EBEFA9, 0x938CBF06, 0x06B67381, - 0x07F192C6, 0x2BDA5855, 0x348EE0E8, 0x19DBB6E3, - 0x3222184B, 0xB69D5DBA, 0x7E760B88, 0xAF4D8154, - 0x007A51AD, 0x35112500, 0xC9CD2D7D, 0x4F4FB761, - 0x694772E3, 0x694C8351, 0x4A7E3AF5, 0x67D65CE1, - 0x9287DE92, 0x2518DB3C, 0x8CB4EC06, 0xD154D38F, - 0xE19A26BB, 0x295EE439, 0xC50A1104, 0x2153C6A7, - 0x82366656, 0x0713BC2F, 0x6462215A, 0x21D9BFCE, - 0xBA8EACE6, 0xAE2DF4C1, 0x2A8D5E80, 0x3F7E52D1, - 0x29359399, 0xFEA1D19C, 0x18879313, 0x455AFA81, - 0xFADFE838, 0x62609838, 0xD1028839, 0x0736E92F, - 0x3BCA22A3, 0x1485B08A, 0x2DA7900B, 0x852C156D, - 0xE8F24803, 0x00078472, 0x13F0D332, 0x2ACFD0CF, - 0x5F747F5C, 0x87BB1E2F, 0xA7EFCB63, 0x23F432F0, - 0xE6CE7C5C, 0x1F954EF6, 0xB609C91B, 0x3B4571BF, - 0xEED17DC0, 0xE556CDA0, 0xA7846A8D, 0xFF105F94, - 0x52B7CCDE, 0x0E33E801, 0x664455EA, 0xF2C70414, - 0x73E7B486, 0x8F830661, 0x8B59E826, 0xBB8AEDCA, - 0xF3D70AB9, 0xD739F2B9, 0x4A04C34A, 0x88D0F089, - 0xE02191A2, 0xD89D9C78, 0x192C2749, 0xFC43A78F, - 0x0AAC88CB, 0x9438D42D, 0x9E280F7A, 0x36063802, - 0x38E8D018, 0x1C42A9CB, 0x92AAFF6C, 0xA24820C5, - 0x007F077F, 0xCE5BC543, 0x69668D58, 0x10D6FF74, - 0xBE00F621, 0x21300BBE, 0x2E9E8F46, 0x5ACEA629, - 0xFA1F86C7, 0x52F206B8, 0x3EDF1A75, 0x6DA8D843, - 0xCF719928, 0x73E3891F, 0xB4B95DD6, 0xB2A42D27, - 0xEDA20BBF, 0x1A58DBDF, 0xA449AD03, 0x6DDEF22B, - 0x900531E6, 0x3D3BFF35, 0x5B24ABA2, 0x472B3E4C, - 0x387F2D75, 0x4D8DBA36, 0x71CB5641, 0xE3473F3F, - 0xF6CD4B7F, 0xBF7D1428, 0x344B64D0, 0xC5CDFCB6, - 0xFE2E0182, 0x2C37A673, 0xDE4EB7A3, 0x63FDC933, - 0x01DC4063, 0x611F3571, 0xD167BFAF, 0x4496596F, - 0x3DEE0689, 0xD8704910, 0x7052A114, 0x068C9EC5, - 0x75D0E766, 0x4D54CC20, 0xB44ECDE2, 0x4ABC653E, - 0x2C550A21, 0x1A52C0DB, 0xCFED03D0, 0x119BAFE2, - 0x876A6133, 0xBC232088, 0x435BA1B2, 0xAE99BBFA, - 0xBB4F08E4, 0xA62B5F49, 0x1DA4B695, 0x336B84DE, - 0xDC813D31, 0x00C134FB, 0x397A98E6, 0x151F0E64, - 0xD9EB3E69, 0xD3C7DF60, 0xD2F2C336, 0x2DDD067B, - 0xBD122835, 0xB0B3BD3A, 0xB0D54E46, 0x8641F1E4, - 0xA0B38F96, 0x51D39199, 0x37A6AD75, 0xDF84EE41, - 0x3C034CBA, 0xACDA62FC, 0x11923B8B, 0x45EF170A, +private enum pseudoTokens = [ + "\"", "`", "//", "/*", "/+", ".", "'", "0", "1", "2", "3", "4", "5", "6", + "7", "8", "9", "#", "q\"", "q{", "r\"", "x\"", " ", "\t", "\r", "\n", "#!", + "\u2028", "\u2029" ]; -unittest +private enum possibleDefaultTokens = [ + "abstract", "alias", "align", "asm", "assert", "auto", "body", "bool", + "break", "byte", "case", "cast", "catch", "cdouble", "cent", "cfloat", + "char", "class", "const", "continue", "creal", "dchar", "debug", "default", + "delegate", "delete", "deprecated", "do", "double", "else", "enum", + "export", "extern", "false", "final", "finally", "float", "for", "foreach", + "foreach_reverse", "function", "goto", "idouble", "if", "ifloat", + "immutable", "import", "in", "inout", "int", "interface", "invariant", + "ireal", "is", "lazy", "long", "macro", "mixin", "module", "new", "nothrow", + "null", "out", "override", "package", "pragma", "private", "protected", + "public", "pure", "real", "ref", "return", "scope", "shared", "short", + "static", "struct", "super", "switch", "synchronized", "template", "this", + "throw", "true", "try", "typedef", "typeid", "typeof", "ubyte", "ucent", + "uint", "ulong", "union", "unittest", "ushort", "version", "void", + "volatile", "wchar", "while", "with", "__DATE__", "__EOF__", "__FILE__", + "__FUNCTION__", "__gshared", "__LINE__", "__MODULE__", "__parameters", + "__PRETTY_FUNCTION__", "__TIME__", "__TIMESTAMP__", "__traits", "__vector", + "__VENDOR__", "__VERSION__" +]; + +private enum dynamicTokens = [ + "specialTokenSequence", "comment", "identifier", "scriptLine", + "whitespace", "doubleLiteral", "floatLiteral", "idoubleLiteral", + "ifloatLiteral", "intLiteral", "longLiteral", "realLiteral", + "irealLiteral", "uintLiteral", "ulongLiteral", "characterLiteral", + "dstringLiteral", "stringLiteral", "wstringLiteral", "scriptLine" +]; + +public alias TokenIdType!(staticTokens, dynamicTokens, possibleDefaultTokens) IdType; +public alias TokenStringRepresentation!(IdType, staticTokens, possibleDefaultTokens) str; +public template tok(string token) { - LexerConfig cfg; - auto tkr = "void main(){ }".representation.byToken(cfg); - assert(tkr.map!"a.value".equal(["void", "main", "(", ")", "{", "}"])); - tkr = "1234 54.23232".representation.byToken(cfg); - assert(tkr.equal(["1234", "54.23232"])); - auto str = r"0 0. .0 1 0x3 0b102 007"; - cfg.iterStyle = IterationStyle.everything; - tkr = str.representation.byToken(cfg); - assert(tkr.map!"a.value".equal(["0", " ", "0.", " ", - ".0", " ", "1", " ", "0x3", " ", "0b10", - "2", " ", "007"] - ), text(tkr.map!"a.value")); + alias TokenId!(IdType, staticTokens, dynamicTokens, possibleDefaultTokens, token) tok; +} +public alias stdx.lexer.TokenStructure!(IdType) Token; + +public auto byToken(R, bool skipComments = true, bool skipWhitespace = true)(R range) +{ + pure nothrow bool isComment(const Token t) { return t.type == tok!"comment"; } + pure nothrow bool isWhitespace(const Token t) { return t.type == tok!"whitespace"; } + pure nothrow bool isEither(const Token t) { return t.type == tok!"whitespace" || t.type == tok!"comment"; } + + static if (skipComments) + { + static if (skipWhitespace) + return DLexer!(R)(range).filter!isEither; + else + return DLexer!(R)(range).filter.isComment; + } + else static if (skipWhitespace) + return DLexer!(R)(range).filter!isWhitespace; + else + return DLexer!(R)(range); } -unittest +public bool isBasicType(IdType type) nothrow pure @safe { - import std.stdio; - auto source = cast(ubyte[]) ( - " bool byte cdouble cent cfloat char creal dchar double float function" - ~ " idouble ifloat int ireal long real short ubyte ucent uint ulong" - ~ " ushort void wchar align deprecated extern pragma export package private" - ~ " protected public abstract auto const final __gshared immutable inout" - ~ " scope shared static synchronized alias asm assert body break case" - ~ " cast catch class continue debug default delegate delete do else" - ~ " enum false finally foreach foreach_reverse for goto if import in" - ~ " interface invariant is lazy macro mixin module new nothrow null" - ~ " out override pure ref return struct super switch template this" - ~ " throw true try typedef typeid typeof union unittest version volatile" - ~ " while with __traits __parameters __vector __VENDOR__ __MODULE__" - ~ " __VERSION__ __TIMESTAMP__ __PRETTY_FUNCTION__"); - auto expected = ["bool", "byte", "cdouble", - "cent", "cfloat", "char", "creal", - "dchar", "double", "float", "function", - "idouble", "ifloat", "int", "ireal", "long", - "real", "short", "ubyte", "ucent", "uint", - "ulong", "ushort", "void", "wchar", "align", - "deprecated", "extern", "pragma", "export", - "package", "private", "protected", "public", - "abstract", "auto", "const", "final", "__gshared", - "immutable", "inout", "scope", "shared", - "static", "synchronized", "alias", "asm", "assert", - "body", "break", "case", "cast", "catch", - "class", "continue", "debug", "default", "delegate", - "delete", "do", "else", "enum", "false", - "finally", "foreach", "foreach_reverse", "for", - "goto", "if", "import", "in", "interface", - "invariant", "is", "lazy","macro", "mixin", - "module", "new", "nothrow", "null", "out", - "override", "pure", "ref", "return", "struct", - "super", "switch", "template", "this", "throw", - "true", "try", "typedef", "typeid", "typeof", - "union", "unittest", "version", "volatile", - "while", "with", "__traits", "__parameters", "__vector", - "__VENDOR__", "__MODULE__", "__VERSION__", "__TIMESTAMP__", - "__PRETTY_FUNCTION__"]; - LexerConfig config; - config.tokenStyle = TokenStyle.doNotReplaceSpecial; - auto tokens = byToken(source, config); -// writeln(tokens.map!"a.value"().array()); - assert (equal(map!"a.value"(tokens), expected)); + switch (type) + { + case tok!"int": + case tok!"uint": + case tok!"double": + case tok!"idouble": + case tok!"float": + case tok!"ifloat": + case tok!"short": + case tok!"ushort": + case tok!"long": + case tok!"ulong": + case tok!"char": + case tok!"wchar": + case tok!"dchar": + case tok!"bool": + case tok!"void": + case tok!"cent": + case tok!"ucent": + case tok!"real": + case tok!"ireal": + case tok!"byte": + case tok!"ubyte": + case tok!"cdouble": + case tok!"cfloat": + case tok!"creal": + return true; + default: + return false; + } } -unittest +public bool isNumberLiteral(IdType type) nothrow pure @safe { - auto source = cast(ubyte[]) ("=@& &=| |=~=:,--/ /=$.===>> >=++{[< <=<>=<>&&||(- -=%%=*=!!=!>!>=!+ +=^^^^=}]);<< <<=>> >>=..*?~!<>=>>>>>>=...^ ^="); - auto expected = ["=", "@", "&", "&=", "|", "|=", "~=", - ":", ",", "--", "/", "/=", "$", ".", "==", - "=>", ">", ">=", "++", "{", "[", "<", - "<=", "<>=", "<>", "&&", "||", "(", "-", "-=", "%", - "%=", "*=", "!", "!=", "!>", "!>=", "!<", - "!<=", "!<>", "+", "+=", "^^", "^^=", - "}", "]", ")", ";", "<<", "<<=", ">>", - ">>=", "..", "*", "?", "~", "!<>=", - ">>>", ">>>=", "...", "^", "^="]; - LexerConfig config; - auto tokens = byToken(source, config); - //writeln(tokens.map!"a.value"().array()); - assert (equal(map!"a.value"(tokens), expected), map!"a.value"(tokens).text()); + switch (type) + { + case tok!"doubleLiteral": + case tok!"floatLiteral": + case tok!"idoubleLiteral": + case tok!"ifloatLiteral": + case tok!"intLiteral": + case tok!"longLiteral": + case tok!"realLiteral": + case tok!"irealLiteral": + case tok!"uintLiteral": + case tok!"ulongLiteral": + return true; + default: + return false; + } } -unittest +public bool isOperator(IdType type) nothrow pure @safe { - auto source = cast(ubyte[]) (` - 1 1.2 //comment - 1.2f 1u 1uL 0b011 0b1uu 0b1 /+abc/+def+/+/0x11001uL - 123e1L 123e+1f 123e-1i 15e++ 4ea 1.2u 4i 1337L 4.2L 1..2 4.3.5.8 - 0xabc 0xabcp4 0x1P-10 0x40u 0x29L 0x4Lu 0xdeadbeef - `); - auto expected = ["1", "1.2", "1.2f", "1u", "1uL", "0b011", "0b1u", "u", "0b1", - "0x11001uL", "123e1L", "123e+1f", "123e-1i", "15e+", "+", "4e", "a", - "1.2", "u", "4i", "1337L", "4.2L", "1", "..", "2", "4.3", ".5", ".8", - "0xabc", "0xabcp4", "0x1P-10", "0x40u", "0x29L", "0x4Lu", "0xdeadbeef"]; - int errCount = 0; - void errorFunction(string file, size_t index, uint line, ushort col, string msg) - { - ++errCount; - } - LexerConfig config; - config.errorFunc = &errorFunction; - auto tokens = byToken(source, config); - //writeln(tokens.map!"a.value"()); - assert (equal(map!"a.value"(tokens), expected), map!"a.value"(tokens).text()); - assert (errCount == 2); + switch (type) + { + case tok!",": + case tok!".": + case tok!"..": + case tok!"...": + case tok!"/": + case tok!"/=": + case tok!"!": + case tok!"!<": + case tok!"!<=": + case tok!"!<>": + case tok!"!<>=": + case tok!"!=": + case tok!"!>": + case tok!"!>=": + case tok!"$": + case tok!"%": + case tok!"%=": + case tok!"&": + case tok!"&&": + case tok!"&=": + case tok!"(": + case tok!")": + case tok!"*": + case tok!"*=": + case tok!"+": + case tok!"++": + case tok!"+=": + case tok!"-": + case tok!"--": + case tok!"-=": + case tok!":": + case tok!";": + case tok!"<": + case tok!"<<": + case tok!"<<=": + case tok!"<=": + case tok!"<>": + case tok!"<>=": + case tok!"=": + case tok!"==": + case tok!"=>": + case tok!">": + case tok!">=": + case tok!">>": + case tok!">>=": + case tok!">>>": + case tok!">>>=": + case tok!"?": + case tok!"@": + case tok!"[": + case tok!"]": + case tok!"^": + case tok!"^=": + case tok!"^^": + case tok!"^^=": + case tok!"{": + case tok!"|": + case tok!"|=": + case tok!"||": + case tok!"}": + case tok!"~": + case tok!"~=": + return true; + default: + return false; + } } -unittest +public bool isKeyword(IdType type) pure nothrow @safe { - auto source = cast(ubyte[]) ("int #line 4\n double q{abcde (a + b) == 0} '\\u0020' q\"HEREDOC\r\nabcde\r\nHEREDOC\""); - LexerConfig config; - auto tokens = byToken(source, config); - assert (tokens.front.line == 1); - assert (tokens.moveFront() == TokenType.int_); - assert (tokens.front.line == 4); - assert (isBasicType(tokens.front)); - assert (tokens.front.value == "double"); - tokens.popFront(); - assert (tokens.front.value == "abcde (a + b) == 0", tokens.front.value); - assert (isStringLiteral(tokens.front), tokens.front.type.text()); - tokens.popFront(); - assert (tokens.front.value == " "); - assert (tokens.front.type == TokenType.characterLiteral); - tokens.popFront(); - assert (tokens.front.value == "abcde\r\n", "[%s]".format(tokens.front.value)); + switch (type) + { + case tok!"abstract": + case tok!"alias": + case tok!"align": + case tok!"asm": + case tok!"assert": + case tok!"auto": + case tok!"body": + case tok!"break": + case tok!"case": + case tok!"cast": + case tok!"catch": + case tok!"class": + case tok!"const": + case tok!"continue": + case tok!"debug": + case tok!"default": + case tok!"delegate": + case tok!"delete": + case tok!"deprecated": + case tok!"do": + case tok!"else": + case tok!"enum": + case tok!"export": + case tok!"extern": + case tok!"false": + case tok!"final": + case tok!"finally": + case tok!"for": + case tok!"foreach": + case tok!"foreach_reverse": + case tok!"function": + case tok!"goto": + case tok!"if": + case tok!"immutable": + case tok!"import": + case tok!"in": + case tok!"inout": + case tok!"interface": + case tok!"invariant": + case tok!"is": + case tok!"lazy": + case tok!"macro": + case tok!"mixin": + case tok!"module": + case tok!"new": + case tok!"nothrow": + case tok!"null": + case tok!"out": + case tok!"override": + case tok!"package": + case tok!"pragma": + case tok!"private": + case tok!"protected": + case tok!"public": + case tok!"pure": + case tok!"ref": + case tok!"return": + case tok!"scope": + case tok!"shared": + case tok!"static": + case tok!"struct": + case tok!"super": + case tok!"switch": + case tok!"synchronized": + case tok!"template": + case tok!"this": + case tok!"throw": + case tok!"true": + case tok!"try": + case tok!"typedef": + case tok!"typeid": + case tok!"typeof": + case tok!"union": + case tok!"unittest": + case tok!"version": + case tok!"volatile": + case tok!"while": + case tok!"with": + case tok!"__DATE__": + case tok!"__EOF__": + case tok!"__FILE__": + case tok!"__FUNCTION__": + case tok!"__gshared": + case tok!"__LINE__": + case tok!"__MODULE__": + case tok!"__parameters": + case tok!"__PRETTY_FUNCTION__": + case tok!"__TIME__": + case tok!"__TIMESTAMP__": + case tok!"__traits": + case tok!"__vector": + case tok!"__VENDOR__": + case tok!"__VERSION__": + return true; + default: + return false; + } } -unittest +public bool isStringLiteral(IdType type) pure nothrow @safe { - auto source = cast(ubyte[]) "q{(a & 1) == 0} q\"/foo]/\" q\"HEREDOC\r\nabcde\r\nHEREDOC\""; - LexerConfig config; - config.tokenStyle = TokenStyle.includeQuotes; - auto tokens = byToken(source, config); - assert (tokens.front.value == "q{(a & 1) == 0}", tokens.front.value); - tokens.popFront(); - assert (tokens.front.value == "q\"/foo]/\"", tokens.front.value); - tokens.popFront(); - assert (tokens.front.value == "q\"HEREDOC\r\nabcde\r\nHEREDOC\"", tokens.front.value); + switch (type) + { + case tok!"dstringLiteral": + case tok!"stringLiteral": + case tok!"wstringLiteral": + return true; + default: + return false; + } } -unittest +public struct DLexer(R) { - auto source = cast(ubyte[]) (`"string`); - int errCount = 0; - void errorFunction(string file, size_t index, uint line, ushort col, string msg) - { - ++errCount; - } - LexerConfig config; - config.errorFunc = &errorFunction; - auto tokens = byToken(source, config); - assert (errCount == 1); -} + import std.conv; + + mixin Lexer!(R, IdType, Token, isSeparating, lexIdentifier, staticTokens, dynamicTokens, + pseudoTokens, possibleDefaultTokens); + + this(R range) + { + registerPostProcess!"\""(&lexStringLiteral!RangeType); + registerPostProcess!"`"(&lexWysiwygString!RangeType); + registerPostProcess!"//"(&lexSlashSlashComment!RangeType); + registerPostProcess!"/*"(&lexSlashStarComment!RangeType); + registerPostProcess!"/+"(&lexSlashPlusComment!RangeType); + registerPostProcess!"."(&lexDot!RangeType); + registerPostProcess!"'"(&lexCharacterLiteral!RangeType); + registerPostProcess!"0"(&lexNumber!RangeType); + registerPostProcess!"1"(&lexNumber!RangeType); + registerPostProcess!"2"(&lexNumber!RangeType); + registerPostProcess!"3"(&lexNumber!RangeType); + registerPostProcess!"4"(&lexNumber!RangeType); + registerPostProcess!"5"(&lexNumber!RangeType); + registerPostProcess!"6"(&lexNumber!RangeType); + registerPostProcess!"7"(&lexNumber!RangeType); + registerPostProcess!"8"(&lexNumber!RangeType); + registerPostProcess!"9"(&lexNumber!RangeType); + registerPostProcess!"#"(&lexNumber!RangeType); + registerPostProcess!"q\""(&lexDelimitedString!RangeType); + registerPostProcess!"q{"(&lexTokenString!RangeType); + registerPostProcess!"r\""(&lexWysiwygString!RangeType); + registerPostProcess!"x\""(&lexHexString!RangeType); + registerPostProcess!" "(&lexWhitespace!RangeType); + registerPostProcess!"\t"(&lexWhitespace!RangeType); + registerPostProcess!"\r"(&lexWhitespace!RangeType); + registerPostProcess!"\n"(&lexWhitespace!RangeType); + registerPostProcess!"\u2028"(&lexLongNewline!RangeType); + registerPostProcess!"\u2029"(&lexLongNewline!RangeType); + this.range = RangeType(range); + popFront(); + } -unittest -{ - auto source = cast(ubyte[]) ("import foo"); - LexerConfig config; - auto tokens = byToken(source, config); - Token a = tokens.moveFront(); - assert (a.type == TokenType.import_); - Token b = tokens.moveFront(); - assert (b.type == TokenType.identifier); - assert (a != b); - assert (a != "foo"); - assert (a < b); - assert (b == "foo"); - assert (b > a); - assert (!(a > a)); - assert (tokens.empty); -} + static bool isWhitespace(LR)(LR range) + { + switch (range.front) + { + case ' ': + case '\r': + case '\n': + case '\t': + return true; + case 0xe2: + if (!range.canPeek(2)) + return false; + return range.peek() == 0x80 + && (range.peek(2) == 0xa8 || range.peek(2) == 0xa9); + default: + return false; + } + } -unittest -{ - auto source = cast(ubyte[]) ("import std.stdio; void main(){writeln(\"hello world\");}"); - LexerConfig config; - auto tokens = byToken(source, config); - int tokenCount = 0; - foreach (t; tokens) - { - ++tokenCount; - } - assert (tokenCount == 16); + static void popFrontWhitespaceAware(LR)(ref LR range) + { + switch (range.front) + { + case '\r': + range.popFront(); + if (!range.empty && range.front == '\n') + { + range.popFront(); + range.incrementLine(); + } + else + range.incrementLine(); + return; + case '\n': + range.popFront(); + range.incrementLine(); + return; + case 0xe2: + if (range.canPeek(2) && range.peek() == 0x80 + && (range.peek(2) == 0xa8 || range.peek(2) == 0xa9)) + { + range.popFront(); + range.popFront(); + range.popFront(); + range.incrementLine(); + return; + } + else + { + range.popFront(); + return; + } + default: + range.popFront(); + return; + } + } + + Token lexWhitespace(LR)(ref LR range) + { + range.mark(); + loop: while (!range.empty) + { + switch (range.front) + { + case '\r': + range.popFront(); + if (!range.empty && range.front == '\n') + range.popFront(); + range.incrementLine(); + break; + case '\n': + range.popFront(); + range.incrementLine(); + break; + case ' ': + case '\t': + range.popFront(); + break; + case 0xe2: + if (!range.canPeek(2)) + break loop; + if (range.peek() != 0x80) + break loop; + if (range.peek(2) == 0xa8 || range.peek(2) == 0xa9) + { + range.popFront(); + range.popFront(); + range.popFront(); + range.incrementLine(); + break; + } + break loop; + default: + break loop; + } + } + return Token(tok!"whitespace", cast(string) range.getMarked(), range.line, + range.column, range.index); + } + + Token lexNumber(LR)(ref LR range) + { + range.mark(); + if (range.front == '0') + { + switch (range.peek()) + { + case 'x': + case 'X': + range.popFront(); + range.popFront(); + return lexHex(range); + case 'b': + case 'B': + range.popFront(); + range.popFront(); + return lexBinary(range); + default: + return lexDecimal(range); + } + } + else + return lexDecimal(range); + } + + Token lexHex(LR)(ref LR range) + { + IdType type = tok!"intLiteral"; + bool foundDot; + hexLoop: while (!range.empty) + { + switch (range.front) + { + case 'a': .. case 'f': + case 'A': .. case 'F': + case '0': .. case '9': + case '_': + range.popFront(); + break; + case 'u': + case 'U': + lexIntSuffix(range, type); + break hexLoop; + case 'i': + if (foundDot) + lexFloatSuffix(range, type); + break hexLoop; + case 'L': + if (foundDot) + { + lexFloatSuffix(range, type); + break hexLoop; + } + else + { + lexIntSuffix(range, type); + break hexLoop; + } + case 'p': + case 'P': + lexExponent(range, type); + break hexLoop; + case '.': + if (foundDot) + break hexLoop; + if (range.canPeek() && range.peek() == '.') + break hexLoop; + range.popFront(); + foundDot = true; + type = tok!"doubleLiteral"; + break; + default: + break hexLoop; + } + } + return Token(type, cast(string) range.getMarked(), range.line, range.column, + range.index); + } + + Token lexBinary(LR)(ref LR range) + { + IdType type = tok!"intLiteral"; + binaryLoop: while (!range.empty) + { + switch (range.front) + { + case '0': + case '1': + case '_': + range.popFront(); + break; + case 'u': + case 'U': + case 'L': + lexIntSuffix(range, type); + break binaryLoop; + default: + break binaryLoop; + } + } + return Token(type, cast(string) range.getMarked(), range.line, range.column, + range.index); + } + + Token lexDecimal(LR)(ref LR range) + { + bool foundDot = range.front == '.'; + auto type = tok!"intLiteral"; + if (foundDot) + { + range.popFront(); + type = tok!"doubleLiteral"; + } + + decimalLoop: while (!range.empty) + { + switch (range.front) + { + case '0': .. case '9': + case '_': + range.popFront(); + break; + case 'u': + case 'U': + if (!foundDot) + lexIntSuffix(range, type); + break decimalLoop; + case 'i': + lexFloatSuffix(range, type); + break decimalLoop; + case 'L': + if (foundDot) + lexFloatSuffix(range, type); + else + lexIntSuffix(range, type); + break decimalLoop; + case 'f': + case 'F': + lexFloatSuffix(range, type); + break decimalLoop; + case 'e': + case 'E': + lexExponent(range, type); + break decimalLoop; + case '.': + if (foundDot) + break decimalLoop; + if (range.canPeek() && range.peek() == '.') + break decimalLoop; + else + { + // The following bit of silliness tries to tell the + // difference between "int dot identifier" and + // "double identifier". + if (range.canPeek()) + { + switch (range.peek()) + { + case '0': .. case '9': + goto doubleLiteral; + default: + break decimalLoop; + } + } + else + { + doubleLiteral: + range.popFront(); + foundDot = true; + type = tok!"doubleLiteral"; + } + } + break; + default: + break decimalLoop; + } + } + return Token(type, cast(string) range.getMarked(), range.line, range.column, + range.index); + } + + static void lexIntSuffix(R)(ref R range, ref IdType type) + { + bool secondPass; + if (range.front == 'u' || range.front == 'U') + { + U: + if (type == tok!"intLiteral") + type = tok!"uintLiteral"; + else + type = tok!"ulongLiteral"; + range.popFront(); + if (secondPass) + return; + if (range.front == 'L' || range.front == 'l') + goto L; + return; + } + if (range.front == 'L' || range.front == 'l') + { + L: + if (type == tok!"uintLiteral") + type = tok!"ulongLiteral"; + else + type = tok!"longLiteral"; + range.popFront(); + if (range.front == 'U' || range.front == 'u') + { + secondPass = true; + goto U; + } + return; + } + } + + static void lexFloatSuffix(R)(ref R range, ref IdType type) + { + switch (range.front) + { + case 'L': + range.popFront(); + type = tok!"doubleLiteral"; + break; + case 'f': + case 'F': + range.popFront(); + type = tok!"floatLiteral"; + break; + default: + break; + } + if (!range.empty && range.front == 'i') + { + range.popFront(); + if (type == tok!"floatLiteral") + type = tok!"ifloatLiteral"; + else + type = tok!"idoubleLiteral"; + } + } + + static void lexExponent(R)(ref R range, ref IdType type) + { + range.popFront(); + bool foundSign = false; + bool foundDigit = false; + while (!range.empty) + { + switch (range.front) + { + case '-': + case '+': + if (foundSign) + { + if (!foundDigit) + writeln("Expected an exponent"); + return; + } + foundSign = true; + range.popFront(); + break; + case '0': .. case '9': + case '_': + foundDigit = true; + range.popFront(); + break; + case 'L': + case 'f': + case 'F': + case 'i': + lexFloatSuffix(range, type); + return; + default: + if (!foundDigit) + writeln("Expected an exponent"); + return; + } + } + } + + + Token lexSpecialTokenSequence(LR)(ref LR range) + { + assert (false, "Not implemented"); + } + + Token lexSlashStarComment(LR)(ref LR range) + { + range.mark(); + IdType type = tok!"comment"; + range.popFront(); + range.popFront(); + while (!range.empty) + { + if (range.front == '*') + { + range.popFront(); + if (!range.empty && range.front == '/') + { + range.popFront(); + break; + } + } + else + popFrontWhitespaceAware(range); + } + return Token(type, cast(string) range.getMarked(), range.line, range.column, + range.index); + } + + Token lexSlashSlashComment(LR)(ref LR range) + { + range.mark(); + IdType type = tok!"comment"; + range.popFront(); + range.popFront(); + while (!range.empty) + { + if (range.front == '\r' || range.front == '\n') + break; + range.popFront(); + } + return Token(type, cast(string) range.getMarked(), range.line, range.column, + range.index); + } + + Token lexSlashPlusComment(LR)(ref LR range) + { + range.mark(); + IdType type = tok!"comment"; + range.popFront(); + range.popFront(); + int depth = 1; + while (depth > 0 && !range.empty) + { + if (range.front == '+') + { + range.popFront(); + if (!range.empty && range.front == '/') + { + range.popFront(); + depth--; + } + } + else if (range.front == '/') + { + range.popFront(); + if (!range.empty && range.front == '+') + { + range.popFront(); + depth++; + } + } + else + popFrontWhitespaceAware(range); + } + return Token(type, cast(string) range.getMarked(), range.line, range.column, + range.index); + } + + Token lexStringLiteral(LR)(ref LR range) + { + range.mark(); + range.popFront(); + while (true) + { + if (range.empty) + { + writeln("Error: unterminated string literal"); + return Token(); + } + else if (range.front == '"') + { + range.popFront(); + break; + } + else if (range.front == '\\') + { + lexEscapeSequence(range); + } + else + range.popFront(); + } + IdType type = tok!"stringLiteral"; + lexStringSuffix(range, type); + return Token(type, cast(string) range.getMarked(), range.line, range.column, + range.index); + } + + Token lexWysiwygString(LR)(ref LR range) + { + range.mark(); + IdType type = tok!"stringLiteral"; + bool backtick = range.front == '`'; + if (backtick) + { + range.popFront(); + while (true) + { + if (range.empty) + goto error; + else if (range.front == '`') + { + range.popFront(); + break; + } + else + popFrontWhitespaceAware(range); + } + } + else + { + range.popFront(); + if (range.empty) + goto error; + range.popFront(); + while (true) + { + if (range.empty) + goto error; + else if (range.front == '"') + { + range.popFront(); + break; + } + else + popFrontWhitespaceAware(range); + } + } + lexStringSuffix(range, type); + return Token(type, cast(string) range.getMarked(), range.line, range.column, + range.index); + error: + writeln("Error: unterminated string literal"); + return Token(); + } + + static void lexStringSuffix(R)(ref R range, ref IdType type) + { + if (range.empty) + type = tok!"stringLiteral"; + else + { + switch (range.front) + { + case 'w': range.popFront(); type = tok!"wstringLiteral"; break; + case 'd': range.popFront(); type = tok!"dstringLiteral"; break; + case 'c': range.popFront(); type = tok!"stringLiteral"; break; + default: type = tok!"stringLiteral"; break; + } + } + } + + Token lexDelimitedString(LR)(ref LR range) + { + range.mark(); + range.popFront(); + range.popFront(); + ElementEncodingType!R open; + ElementEncodingType!R close; + switch (range.front) + { + case '<': + open = '<'; + close = '>'; + range.popFront(); + return lexNormalDelimitedString!LR(range, open, close); + case '{': + open = '{'; + close = '}'; + range.popFront(); + return lexNormalDelimitedString!LR(range, open, close); + case '[': + open = '['; + close = ']'; + range.popFront(); + return lexNormalDelimitedString!LR(range, open, close); + case '(': + open = '('; + close = ')'; + range.popFront(); + return lexNormalDelimitedString!LR(range, open, close); + default: + return lexHeredocString(range); + } + } + + Token lexNormalDelimitedString(LR)(ref LR range, + ElementEncodingType!LR open, + ElementEncodingType!LR close) + { + int depth = 1; + while (!range.empty && depth > 0) + { + if (range.front == open) + { + depth++; + range.popFront(); + } + else if (range.front == close) + { + depth--; + range.popFront(); + if (depth <= 0) + { + if (range.front == '"') + range.popFront(); + else + { + writeln("Error: \" expected to end delimited string literal"); + return Token(tok!""); + } + } + } + else + popFrontWhitespaceAware(range); + } + IdType type = tok!"stringLiteral"; + lexStringSuffix(range, type); + return Token(type, cast(string) range.getMarked(), range.line, range.column, range.index); + } + + Token lexHeredocString(LR)(ref LR range) + { + assert (false, "unimplemented"); + } + + Token lexTokenString(LR)(ref LR range) + { + range.popFront(); + range.popFront(); + auto app = appender!string(); + app.put("q{"); + int depth = 1; + while (depth > 0 && !empty) + { + popFront(); + auto t = front(); + if (t.text is null) + app.put(str(t.type)); + else + app.put(t.text); + if (t.type == tok!"}") + depth--; + else if (t.type == tok!"{") + depth++; + } + IdType type = tok!"stringLiteral"; + lexStringSuffix(range, type); + return Token(type, app.data, range.line, range.column, range.index); + } + + Token lexHexString(LR)(ref LR range) + { + range.mark(); + range.popFront(); + range.popFront(); + + loop: while (true) + { + if (range.empty) + { + writeln("Error: unterminated hex string literal"); + return Token(); + } + else if (isWhitespace(range)) + popFrontWhitespaceAware(range); + else switch (range.front) + { + case '0': .. case '9': + case 'F': .. case 'F': + case 'a': .. case 'f': + range.popFront(); + break; + case '"': + range.popFront(); + break loop; + default: + writeln("Error: invalid character in hex string"); + return Token(); + } + } + + IdType type = tok!"stringLiteral"; + lexStringSuffix(range, type); + return Token(type, cast(string) range.getMarked(), range.line, range.column, + range.index); + } + + static bool lexEscapeSequence(LR)(ref LR range) + { + range.popFront(); + if (range.empty) + { + writeln("Error: non-terminated character escape sequence."); + return false; + } + switch (range.front) + { + case '\'': + case '"': + case '?': + case '\\': + case '0': + case 'a': + case 'b': + case 'f': + case 'n': + case 'r': + case 't': + case 'v': + range.popFront(); + break; + case 'x': + // TODO + range.popFront(); + break; + case '1': .. case '7': + for (size_t i = 0; i < 3 && !range.empty && range.front >= '0' && range.front <= '7'; i++) + range.popFront(); + break; + case 'u': + range.popFront(); + foreach (i; 0 .. 4) + { + if (range.empty) + { + writeln("Error: at least 4 hex digits expected."); + return false; + } + switch (range.front) + { + case '0': .. case '9': + case 'a': .. case 'f': + case 'A': .. case 'F': + range.popFront(); + break; + default: + writeln("Error: at least 4 hex digits expected."); + return false; + } + } + break; + case 'U': + range.popFront(); + foreach (i; 0 .. 8) + { + if (range.empty) + { + writeln("Error: at least 8 hex digits expected."); + return false; + } + switch (range.front) + { + case '0': .. case '9': + case 'a': .. case 'f': + case 'A': .. case 'F': + range.popFront(); + break; + default: + writeln("Error: at least 8 hex digits expected."); + return false; + } + } + break; + default: + while (true) + { + if (range.empty) + { + writeln("Error: non-terminated character escape sequence."); + return false; + } + if (range.front == ';') + break; + else + range.popFront(); + } + } + return true; + } + + Token lexCharacterLiteral(LR)(ref LR range) + { + range.mark(); + range.popFront(); + if (range.front == '\\') + { + lexEscapeSequence(range); + goto close; + } + else if (range.front == '\'') + { + range.popFront(); + return Token(tok!"characterLiteral", cast(string) range.getMarked(), + range.line, range.column, range.index); + } + else if (range.front & 0x80) + { + while (range.front & 0x80) + range.popFront(); + goto close; + } + else + { + popFrontWhitespaceAware(range); + goto close; + } + close: + if (range.front == '\'') + { + range.popFront(); + return Token(tok!"characterLiteral", cast(string) range.getMarked(), + range.line, range.column, range.index); + } + else + { + writeln("Error: Expected ' to end character literal ", cast(char) range.front); + return Token(); + } + } + + Token lexIdentifier(LR)(ref LR range) + { + range.mark(); + while (!range.empty && !isSeparating(range.front)) + { + range.popFront(); + } + return Token(tok!"identifier", cast(string) range.getMarked(), range.index, + range.line, range.column); + } + + Token lexDot(LR)(ref LR range) + { + if (!range.canPeek) + { + range.popFront(); + return Token(tok!".", null, range.line, range.column, range.index); + } + switch (range.peek()) + { + case '0': .. case '9': + return lexNumber(range); + case '.': + range.popFront(); + range.popFront(); + if (range.front == '.') + { + range.popFront(); + return Token(tok!"...", null, range.line, range.column, range.index); + } + else + return Token(tok!"..", null, range.line, range.column, range.index); + default: + range.popFront(); + return Token(tok!".", null, range.line, range.column, range.index); + } + } + + Token lexLongNewline(LR)(ref LR range) + { + range.mark(); + range.popFront(); + range.popFront(); + range.popFront(); + range.incrementLine(); + return Token(tok!"whitespace", cast(string) range.getMarked(), range.line, + range.column, range.index); + } + + static bool isSeparating(C)(C c) + { + if (c <= 0x2f) return true; + if (c >= ':' && c <= '@') return true; + if (c >= '[' && c <= '^') return true; + if (c >= '{' && c <= '~') return true; + if (c == '`') return true; + return false; + } } diff --git a/stdx/d/parser.d b/stdx/d/parser.d index d484d57..f47b6be 100644 --- a/stdx/d/parser.d +++ b/stdx/d/parser.d @@ -80,12 +80,12 @@ import std.string : format; * Returns: the parsed module */ Module parseModule(const(Token)[] tokens, string fileName, - void function(string, int, int, string) messageFunction = null) + void function(string, int, int, string) messageFunction = null) { auto parser = new Parser(); parser.fileName = fileName; parser.tokens = tokens; - parser.messageFunction = messageFunction; + parser.messageFunction = messageFunction; auto mod = parser.parseModule(); // writefln("Parsing finished with %d errors and %d warnings.", // parser.errorCount, parser.warningCount); @@ -109,7 +109,7 @@ class Parser { mixin(traceEnterAndExit!(__FUNCTION__)); return parseLeftAssocBinaryExpression!(AddExpression, MulExpression, - TokenType.plus, TokenType.minus, TokenType.tilde)(); + tok!"+", tok!"-", tok!"~")(); } /** @@ -124,15 +124,15 @@ class Parser { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new AliasDeclaration; - if (expect(TokenType.alias_) is null) return null; - if (startsWith(TokenType.identifier, TokenType.assign)) + if (expect(tok!"alias") is null) return null; + if (startsWith(tok!"identifier", tok!"=")) { do { auto initializer = parseAliasInitializer(); if (initializer is null) return null; node.initializers ~= initializer; - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) advance(); else break; @@ -142,12 +142,12 @@ class Parser else { if ((node.type = parseType()) is null) return null; - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.name = *ident; } - if (expect(TokenType.semicolon) is null) return null; + if (expect(tok!";") is null) return null; return node; } @@ -177,10 +177,10 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new AliasInitializer; - auto i = expect(TokenType.identifier); + auto i = expect(tok!"identifier"); if (i is null) return null; node.name = *i; - if (expect(TokenType.assign) is null) return null; + if (expect(tok!"=") is null) return null; node.type = parseType(); return node; } @@ -195,11 +195,11 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new AliasThisDeclaration; - if (expect(TokenType.alias_) is null) return null; - auto ident = expect(TokenType.identifier); + if (expect(tok!"alias") is null) return null; + auto ident = expect(tok!"identifier"); if (ident is null) return null; - if (expect(TokenType.this_) is null) return null; - if (expect(TokenType.semicolon) is null) return null; + if (expect(tok!"this") is null) return null; + if (expect(tok!";") is null) return null; return node; } @@ -213,14 +213,14 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new AlignAttribute; - expect(TokenType.align_); - if (currentIs(TokenType.lParen)) + expect(tok!"align"); + if (currentIs(tok!"(")) { - if (expect(TokenType.lParen) is null) return null; - auto intLit = expect(TokenType.intLiteral); + if (expect(tok!"(") is null) return null; + auto intLit = expect(tok!"intLiteral"); if (intLit is null) return null; node.intLiteral = *intLit; - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; } return node; } @@ -236,7 +236,7 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); return parseLeftAssocBinaryExpression!(AndAndExpression, OrExpression, - TokenType.logicAnd)(); + tok!"&&")(); } /** @@ -251,7 +251,7 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); return parseLeftAssocBinaryExpression!(AndExpression, CmpExpression, - TokenType.amp)(); + tok!"&")(); } /** @@ -278,10 +278,10 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new Arguments; - if (expect(TokenType.lParen) is null) return null; - if (!currentIs(TokenType.rParen)) + if (expect(tok!"(") is null) return null; + if (!currentIs(tok!")")) node.argumentList = parseArgumentList(); - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; return node; } @@ -297,18 +297,18 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new ArrayInitializer; - if (expect(TokenType.lBracket) is null) return null; + if (expect(tok!"[") is null) return null; while (moreTokens()) { - if (currentIs(TokenType.rBracket)) + if (currentIs(tok!"]")) break; node.arrayMemberInitializations ~= parseArrayMemberInitialization(); - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) advance(); else break; } - if (expect(TokenType.rBracket) is null) return null; + if (expect(tok!"]") is null) return null; return node; } @@ -323,10 +323,10 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new ArrayLiteral; - if (expect(TokenType.lBracket) is null) return null; - if (!currentIs(TokenType.rBracket)) + if (expect(tok!"[") is null) return null; + if (!currentIs(tok!"]")) node.argumentList = parseArgumentList(); - if (expect(TokenType.rBracket) is null) return null; + if (expect(tok!"]") is null) return null; return node; } @@ -341,17 +341,17 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new ArrayMemberInitialization; - with (TokenType) switch (current.type) + switch (current.type) { - case lBrace: - case lBracket: + case tok!"{": + case tok!"}": node.nonVoidInitializer = parseNonVoidInitializer(); if (node.nonVoidInitializer is null) return null; break; default: auto assignExpression = parseAssignExpression(); if (assignExpression is null) return null; - if (currentIs(colon)) + if (currentIs(tok!":")) { node.assignExpression = assignExpression; advance(); @@ -378,7 +378,7 @@ alias core.sys.posix.stdio.fileno fileno; ExpressionNode parseAsmAddExp() { return parseLeftAssocBinaryExpression!(AsmAddExp, AsmMulExp, - TokenType.plus, TokenType.minus)(); + tok!"+", tok!"-")(); } /** @@ -392,7 +392,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmAndExp; assert (false, "asm"); // TODO asm - return node; } /** @@ -407,7 +406,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmBrExp; assert (false, "asm"); // TODO asm - return node; } /** @@ -421,7 +419,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmEqualExp; assert (false, "asm"); // TODO asm - return node; } /** @@ -435,7 +432,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmExp; assert (false, "asm"); // TODO asm - return node; } /** @@ -454,7 +450,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmInstruction; assert (false, "asm"); // TODO asm - return node; } /** @@ -468,7 +463,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmLogAndExp; assert (false, "asm"); // TODO asm - return node; } /** @@ -482,7 +476,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmLogOrExp; assert (false, "asm"); // TODO asm - return node; } /** @@ -496,7 +489,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmMulExp; assert (false, "asm"); // TODO asm - return node; } /** @@ -510,7 +502,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmOrExp; assert (false, "asm"); // TODO asm - return node; } /** @@ -528,7 +519,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmPrimaryExp; assert (false, "asm"); // TODO asm - return node; } /** @@ -542,7 +532,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmRelExp; assert (false, "asm"); // TODO asm - return node; } /** @@ -556,7 +545,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmShiftExp; assert (false, "asm"); // TODO asm - return node; } /** @@ -593,7 +581,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmTypePrefix; assert (false, "asm"); // TODO asm - return node; } /** @@ -613,7 +600,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmUnaExp; assert (false, "asm"); // TODO asm - return node; } /** @@ -627,7 +613,6 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AsmXorExp; assert (false, "asm"); // TODO asm - return node; } /** @@ -641,15 +626,15 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new AssertExpression; - expect(TokenType.assert_); - if (expect(TokenType.lParen) is null) return null; + expect(tok!"assert"); + if (expect(tok!"(") is null) return null; node.assertion = parseAssignExpression(); - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) { advance(); node.message = parseAssignExpression(); } - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; return node; } @@ -681,12 +666,12 @@ alias core.sys.posix.stdio.fileno fileno; mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new AssignExpression; node.ternaryExpression = parseTernaryExpression(); - if (currentIsOneOf(TokenType.assign, TokenType.unsignedShiftRightAssign, - TokenType.shiftRightAssign, TokenType.shiftLeftAssign, - TokenType.plusAssign, TokenType.minusAssign, TokenType.mulAssign, - TokenType.modAssign, TokenType.bitAndAssign, TokenType.divAssign, - TokenType.bitOrAssign, TokenType.powAssign, TokenType.xorAssign, - TokenType.catAssign)) + if (currentIsOneOf(tok!"=", tok!">>>=", + tok!">>=", tok!"<<=", + tok!"+=", tok!"-=", tok!"*=", + tok!"%=", tok!"&=", tok!"/=", + tok!"|=", tok!"^^=", tok!"^=", + tok!"~=")) { node.operator = advance().type; node.assignExpression = parseAssignExpression(); @@ -705,9 +690,9 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new AssocArrayLiteral; - if (expect(TokenType.lBracket) is null) return null; + if (expect(tok!"[") is null) return null; node.keyValuePairs = parseKeyValuePairs(); - if (expect(TokenType.rBracket) is null) return null; + if (expect(tok!"]") is null) return null; return node; } @@ -722,19 +707,19 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new AtAttribute; - if (expect(TokenType.at) is null) return null; - with (TokenType) switch (current.type) + if (expect(tok!"@") is null) return null; + switch (current.type) { - case identifier: - if (peekIsOneOf(lParen, dot, not)) + case tok!"identifier": + if (peekIsOneOf(tok!"(", tok!".", tok!"!")) node.functionCallExpression = parseFunctionCallExpression(); else node.identifier = advance(); break; - case lParen: + case tok!"(": advance(); node.argumentList = parseArgumentList(); - expect(rParen); + expect(tok!")"); break; default: error(`"(", or identifier expected`); @@ -764,23 +749,23 @@ alias core.sys.posix.stdio.fileno fileno; auto node = new Attribute; switch (current.type) { - case TokenType.extern_: - if (peekIs(TokenType.lParen)) + case tok!"extern": + if (peekIs(tok!"(")) node.linkageAttribute = parseLinkageAttribute(); else goto default; break; - case TokenType.align_: + case tok!"align": node.alignAttribute = parseAlignAttribute(); break; - case TokenType.pragma_: + case tok!"pragma": node.pragmaExpression = parsePragmaExpression(); break; - case TokenType.private_: - case TokenType.package_: - case TokenType.protected_: - case TokenType.public_: - case TokenType.export_: + case tok!"private": + case tok!"package": + case tok!"protected": + case tok!"public": + case tok!"export": node.attribute = advance().type; break; default: @@ -801,7 +786,7 @@ alias core.sys.posix.stdio.fileno fileno; { auto node = new AttributeDeclaration; node.attribute = attribute is null ? parseAttribute() : attribute; - expect(TokenType.colon); + expect(tok!":"); return node; } @@ -818,19 +803,19 @@ alias core.sys.posix.stdio.fileno fileno; auto node = new AutoDeclaration; do { - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifiers ~= *ident; - if (expect(TokenType.assign) is null) return null; + if (expect(tok!"=") is null) return null; auto init = parseInitializer(); if (init is null) return null; node.initializers ~= init; - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) advance(); else break; } while (moreTokens()); - if (expect(TokenType.semicolon) is null) return null; + if (expect(tok!";") is null) return null; return node; } @@ -845,14 +830,14 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new BlockStatement(); - auto openBrace = expect(TokenType.lBrace); + auto openBrace = expect(tok!"{"); if (openBrace is null) return null; - node.startLocation = openBrace.startIndex; - if (!currentIs(TokenType.rBrace)) + node.startLocation = openBrace.index; + if (!currentIs(tok!"}")) node.declarationsAndStatements = parseDeclarationsAndStatements(); - auto closeBrace = expect(TokenType.rBrace); + auto closeBrace = expect(tok!"}"); if (closeBrace !is null) - node.endLocation = closeBrace.startIndex; + node.endLocation = closeBrace.index; else node.endLocation = size_t.max; return node; @@ -869,7 +854,7 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new BodyStatement; - expect(TokenType.body_); + expect(tok!"body"); node.blockStatement = parseBlockStatement(); return node; } @@ -884,15 +869,15 @@ alias core.sys.posix.stdio.fileno fileno; BreakStatement parseBreakStatement() { mixin(traceEnterAndExit!(__FUNCTION__)); - expect(TokenType.break_); + expect(tok!"break"); auto node = new BreakStatement; switch (current.type) { - case TokenType.identifier: + case tok!"identifier": node.label = advance(); - if (expect(TokenType.semicolon) is null) return null; + if (expect(tok!";") is null) return null; break; - case TokenType.semicolon: + case tok!";": advance(); break; default: @@ -913,10 +898,10 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new BaseClass; - if (currentIs(TokenType.typeof_)) + if (currentIs(tok!"typeof")) { node.typeofExpression = parseTypeofExpression(); - if (expect(TokenType.dot) is null) return null; + if (expect(tok!".") is null) return null; } node.identifierOrTemplateChain = parseIdentifierOrTemplateChain(); return node; @@ -963,13 +948,13 @@ alias core.sys.posix.stdio.fileno fileno; * | $(LITERAL 'void') * ;) */ - TokenType parseBasicType() + IdType parseBasicType() { mixin(traceEnterAndExit!(__FUNCTION__)); if (isBasicType(current.type)) return advance().type; error("Basic type expected"); - return TokenType.invalid; + return tok!""; } /** @@ -985,14 +970,14 @@ alias core.sys.posix.stdio.fileno fileno; auto node = new CaseRangeStatement; if (low is null) { - expect(TokenType.case_); + expect(tok!"case"); node.low = parseAssignExpression(); } - if (expect(TokenType.colon) is null) return null; - if (expect(TokenType.dotdot) is null) return null; - expect(TokenType.case_); + if (expect(tok!":") is null) return null; + if (expect(tok!"..") is null) return null; + expect(tok!"case"); node.high = parseAssignExpression(); - if (expect(TokenType.colon) is null) return null; + if (expect(tok!":") is null) return null; node.declarationsAndStatements = parseDeclarationsAndStatements(); return node; } @@ -1010,12 +995,12 @@ alias core.sys.posix.stdio.fileno fileno; auto node = new CaseStatement; if (argumentList is null) { - expect(TokenType.case_); + expect(tok!"case"); node.argumentList = parseArgumentList(); } else node.argumentList = argumentList; - if (expect(TokenType.colon) is null) return null; + if (expect(tok!":") is null) return null; node.declarationsAndStatements = parseDeclarationsAndStatements(); return node; } @@ -1031,16 +1016,16 @@ alias core.sys.posix.stdio.fileno fileno; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new CastExpression; - expect(TokenType.cast_); - if (expect(TokenType.lParen) is null) return null; - if (!currentIs(TokenType.rParen)) + expect(tok!"cast"); + if (expect(tok!"(") is null) return null; + if (!currentIs(tok!")")) { if (isCastQualifier()) node.castQualifier = parseCastQualifier(); else node.type = parseType(); } - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; node.unaryExpression = parseUnaryExpression(); return node; } @@ -1065,18 +1050,18 @@ alias core.sys.posix.stdio.fileno fileno; auto node = new CastQualifier; switch (current.type) { - case TokenType.inout_: - case TokenType.const_: + case tok!"inout": + case tok!"const": node.first = advance(); - if (currentIs(TokenType.shared_)) + if (currentIs(tok!"shared")) node.second = advance(); break; - case TokenType.shared_: + case tok!"shared": node.first = advance(); - if (currentIsOneOf(TokenType.const_, TokenType.inout_)) + if (currentIsOneOf(tok!"const", tok!"inout")) node.second = advance(); break; - case TokenType.immutable_: + case tok!"immutable": node.first = advance(); break; default: @@ -1103,48 +1088,48 @@ incorrect; Parser p = getParserForUnittest(sourceCode, "parseCastQualifier"); CastQualifier one = p.parseCastQualifier(); - assert (one.first == TokenType.const_); + assert (one.first == tok!"const"); assert (!one.hasSecond); - p.expect(TokenType.semicolon); + p.expect(tok!";"); CastQualifier two = p.parseCastQualifier(); - assert (two.first == TokenType.const_); + assert (two.first == tok!"const"); assert (two.hasSecond); - assert (two.second == TokenType.shared_); - p.expect(TokenType.semicolon); + assert (two.second == tok!"shared"); + p.expect(tok!";"); CastQualifier three = p.parseCastQualifier(); - assert (three.first == TokenType.immutable_); + assert (three.first == tok!"immutable"); assert (!three.hasSecond); - p.expect(TokenType.semicolon); + p.expect(tok!";"); CastQualifier four = p.parseCastQualifier(); - assert (four.first == TokenType.inout_); + assert (four.first == tok!"inout"); assert (!four.hasSecond); - p.expect(TokenType.semicolon); + p.expect(tok!";"); CastQualifier five = p.parseCastQualifier(); - assert (five.first == TokenType.inout_); + assert (five.first == tok!"inout"); assert (five.hasSecond); - assert (five.second == TokenType.shared_); - p.expect(TokenType.semicolon); + assert (five.second == tok!"shared"); + p.expect(tok!";"); CastQualifier six = p.parseCastQualifier(); - assert (six.first == TokenType.shared_); + assert (six.first == tok!"shared"); assert (!six.hasSecond); - p.expect(TokenType.semicolon); + p.expect(tok!";"); CastQualifier seven = p.parseCastQualifier(); - assert (seven.first == TokenType.shared_); + assert (seven.first == tok!"shared"); assert (seven.hasSecond); - assert (seven.second == TokenType.const_); - p.expect(TokenType.semicolon); + assert (seven.second == tok!"const"); + p.expect(tok!";"); CastQualifier eight = p.parseCastQualifier(); - assert (eight.first == TokenType.shared_); + assert (eight.first == tok!"shared"); assert (eight.hasSecond); - assert (eight.second == TokenType.inout_); - p.expect(TokenType.semicolon); + assert (eight.second == tok!"inout"); + p.expect(tok!";"); CastQualifier nine = p.parseCastQualifier(); assert (nine is null); @@ -1164,12 +1149,12 @@ incorrect; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new Catch; - expect(TokenType.catch_); - if (expect(TokenType.lParen) is null) return null; + expect(tok!"catch"); + if (expect(tok!"(") is null) return null; node.type = parseType(); - if (currentIs(TokenType.identifier)) + if (currentIs(tok!"identifier")) node.identifier = advance(); - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; node.declarationOrStatement = parseDeclarationOrStatement(); return node; } @@ -1188,9 +1173,9 @@ incorrect; auto node = new Catches; while (moreTokens()) { - if (!currentIs(TokenType.catch_)) + if (!currentIs(tok!"catch")) break; - if (peekIs(TokenType.lParen)) + if (peekIs(tok!"(")) { node.catches ~= parseCatch(); } @@ -1214,19 +1199,19 @@ incorrect; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new ClassDeclaration; - expect(TokenType.class_); - auto ident = expect(TokenType.identifier); + expect(tok!"class"); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.name = *ident; - if (currentIs(TokenType.lParen)) + if (currentIs(tok!"(")) { node.templateParameters = parseTemplateParameters(); - if (currentIs(TokenType.if_)) + if (currentIs(tok!"if")) { node.constraint = parseConstraint(); } } - if (currentIs(TokenType.colon)) + if (currentIs(tok!":")) { advance(); node.baseClassList = parseBaseClassList(); @@ -1299,36 +1284,36 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; auto shift = parseShiftExpression(); if (!moreTokens()) return shift; - with (TokenType) switch (current.type) + switch (current.type) { - case is_: + case tok!"is": node.identityExpression = parseIdentityExpression(shift); break; - case in_: + case tok!"in": node.inExpression = parseInExpression(shift); break; - case not: - if (peekIs(is_)) + case tok!"!": + if (peekIs(tok!"is")) node.identityExpression = parseIdentityExpression(shift); - else if (peekIs(in_)) + else if (peekIs(tok!"in")) node.inExpression = parseInExpression(shift); break; - case less: - case lessEqual: - case greater: - case greaterEqual: - case unordered: - case notLessEqualGreater: - case lessOrGreater: - case lessEqualGreater: - case notGreater: - case notGreaterEqual: - case notLess: - case notLessEqual: + case tok!"<": + case tok!"<=": + case tok!">": + case tok!">=": + case tok!"!<>=": + case tok!"!<>": + case tok!"<>": + case tok!"<>=": + case tok!"!>": + case tok!"!>=": + case tok!"!<": + case tok!"!<=": node.relExpression = parseRelExpression(shift); break; - case equal: - case notEqual: + case tok!"=": + case tok!"!=": node.equalExpression = parseEqualExpression(shift); break; default: @@ -1353,13 +1338,13 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; auto node = new CompileCondition; switch (current.type) { - case TokenType.version_: + case tok!"version": node.versionCondition = parseVersionCondition(); break; - case TokenType.debug_: + case tok!"debug": node.debugCondition = parseDebugCondition(); break; - case TokenType.static_: + case tok!"static": node.staticIfCondition = parseStaticIfCondition(); break; default: @@ -1384,7 +1369,7 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; auto node = new ConditionalDeclaration; node.compileCondition = parseCompileCondition(); - if (currentIs(TokenType.colon)) + if (currentIs(tok!":")) { advance(); while (isDeclaration()) @@ -1396,7 +1381,7 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; if (dec is null) return null; node.trueDeclarations ~= dec; - if(currentIs(TokenType.else_)) + if(currentIs(tok!"else")) advance(); else return node; @@ -1420,7 +1405,7 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; auto node = new ConditionalStatement; node.compileCondition = parseCompileCondition(); node.trueStatement = parseDeclarationOrStatement(); - if (currentIs(TokenType.else_)) + if (currentIs(tok!"else")) { advance(); node.falseStatement = parseDeclarationOrStatement(); @@ -1439,10 +1424,10 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new Constraint; - if (expect(TokenType.if_) is null) return null; - if (expect(TokenType.lParen) is null) return null; + if (expect(tok!"if") is null) return null; + if (expect(tok!"(") is null) return null; node.expression = parseExpression(); - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; return node; } @@ -1457,12 +1442,12 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); Constructor node = new Constructor; - auto t = expect(TokenType.this_); + auto t = expect(tok!"this"); if (t is null) return null; - node.location = t.startIndex; + node.location = t.index; auto p = peekPastParens(); bool isTemplate = false; - if (p !is null && p.type == TokenType.lParen) + if (p !is null && p.type == tok!"(") { isTemplate = true; node.templateParameters = parseTemplateParameters(); @@ -1473,10 +1458,10 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; while(moreTokens() && currentIsMemberFunctionAttribute()) node.memberFunctionAttributes ~= parseMemberFunctionAttribute(); - if (isTemplate && currentIs(TokenType.if_)) + if (isTemplate && currentIs(tok!"if")) node.constraint = parseConstraint(); - if (currentIs(TokenType.semicolon)) + if (currentIs(tok!";")) advance(); else { @@ -1497,15 +1482,15 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; ContinueStatement parseContinueStatement() { mixin(traceEnterAndExit!(__FUNCTION__)); - if (expect(TokenType.continue_) is null) return null; + if (expect(tok!"continue") is null) return null; auto node = new ContinueStatement; switch (current.type) { - case TokenType.identifier: + case tok!"identifier": node.label = advance(); - if (expect(TokenType.semicolon) is null) return null; + if (expect(tok!";") is null) return null; break; - case TokenType.semicolon: + case tok!";": advance(); break; default: @@ -1526,18 +1511,18 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new DebugCondition; - if (expect(TokenType.debug_) is null) return null; - if (currentIs(TokenType.lParen)) + if (expect(tok!"debug") is null) return null; + if (currentIs(tok!"(")) { advance(); - if (currentIsOneOf(TokenType.intLiteral, TokenType.identifier)) + if (currentIsOneOf(tok!"intLiteral", tok!"identifier")) node.identifierOrInteger = advance(); else { error(`Integer literal or identifier expected`); return null; } - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; } return node; } @@ -1553,16 +1538,16 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new DebugSpecification; - if (expect(TokenType.debug_) is null) return null; - if (expect(TokenType.assign) is null) return null; - if (currentIsOneOf(TokenType.identifier, TokenType.intLiteral)) + if (expect(tok!"debug") is null) return null; + if (expect(tok!"=") is null) return null; + if (currentIsOneOf(tok!"identifier", tok!"intLiteral")) node.identifierOrInteger = advance(); else { error("Integer literal or identifier expected"); return null; } - if (expect(TokenType.semicolon) is null) return null; + if (expect(tok!";") is null) return null; return node; } @@ -1616,43 +1601,43 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; error("attribute is null"); break; } - if (currentIs(TokenType.colon)) - { + if (currentIs(tok!":")) + { node.attributeDeclaration = parseAttributeDeclaration(attr); - return node; - } + return node; + } else node.attributes ~= attr; } while (moreTokens()); - with (TokenType) switch (current.type) + switch (current.type) { - case semicolon: + case tok!":": // http://d.puremagic.com/issues/show_bug.cgi?id=4559 warn("Empty declaration"); advance(); break; - case lBrace: + case tok!"{": advance(); - while (moreTokens() && !currentIs(rBrace)) + while (moreTokens() && !currentIs(tok!"}")) { auto declaration = parseDeclaration(); if (declaration !is null) node.declarations ~= declaration; } - if (expect(TokenType.rBrace) is null) return null; + if (expect(tok!"}") is null) return null; break; - case alias_: - if (startsWith(alias_, identifier, this_)) + case tok!"alias": + if (startsWith(tok!"alias", tok!"identifier", tok!"this")) node.aliasThisDeclaration = parseAliasThisDeclaration(); else node.aliasDeclaration = parseAliasDeclaration(); break; - case class_: + case tok!"class": node.classDeclaration = parseClassDeclaration(); break; - case this_: - if (startsWith(this_, lParen, this_)) + case tok!"this": + if (startsWith(tok!"this", tok!"(", tok!"this")) { node.postblit = parsePostblit(); if (node.postblit is null) return null; @@ -1663,35 +1648,35 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; if (node.constructor is null) return null; } break; - case tilde: + case tok!"~": node.destructor = parseDestructor(); if (node.destructor is null) return null; break; - case enum_: - if (startsWith(TokenType.enum_, TokenType.identifier, TokenType.lParen)) - goto case template_; + case tok!"enum": + if (startsWith(tok!"enum", tok!"identifier", tok!"(")) + goto _template; node.enumDeclaration = parseEnumDeclaration(); if (node.enumDeclaration is null) return null; break; - case import_: + case tok!"import": node.importDeclaration = parseImportDeclaration(); if (node.importDeclaration is null) return null; break; - case interface_: + case tok!"interface": node.interfaceDeclaration = parseInterfaceDeclaration(); if (node.interfaceDeclaration is null) return null; break; - case mixin_: - if (peekIs(TokenType.template_)) + case tok!"mixin": + if (peekIs(tok!"template")) node.mixinTemplateDeclaration = parseMixinTemplateDeclaration(); else { auto b = setBookmark(); advance(); - if (currentIs(TokenType.lParen)) + if (currentIs(tok!"(")) { auto t = peekPastParens(); - if (t !is null && t.type == TokenType.semicolon) + if (t !is null && t.type == tok!";") { goToBookmark(b); node.mixinDeclaration = parseMixinDeclaration(); @@ -1711,51 +1696,52 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; } } break; - case pragma_: + case tok!"pragma": node.pragmaDeclaration = parsePragmaDeclaration(); break; - case shared_: - if (startsWith(shared_, static_, this_)) + case tok!"shared": + if (startsWith(tok!"shared", tok!"static", tok!"this")) node.sharedStaticConstructor = parseSharedStaticConstructor(); - else if (startsWith(shared_, static_, tilde)) + else if (startsWith(tok!"shared", tok!"static", tok!"~")) node.sharedStaticDestructor = parseSharedStaticDestructor(); else goto type; break; - case static_: - if (peekIs(this_)) + case tok!"static": + if (peekIs(tok!"this")) node.staticConstructor = parseStaticConstructor(); - else if (peekIs(tilde)) + else if (peekIs(tok!"~")) node.staticDestructor = parseStaticDestructor(); - else if (peekIs(if_)) + else if (peekIs(tok!"if")) node.conditionalDeclaration = parseConditionalDeclaration(); - else if (peekIs(assert_)) + else if (peekIs(tok!"assert")) node.staticAssertDeclaration = parseStaticAssertDeclaration(); else goto type; break; - case struct_: + case tok!"struct": node.structDeclaration = parseStructDeclaration(); break; - case template_: + _template: + case tok!"template": node.templateDeclaration = parseTemplateDeclaration(); break; - case union_: + case tok!"union": node.unionDeclaration = parseUnionDeclaration(); break; - case invariant_: + case tok!"invariant": node.invariant_ = parseInvariant(); break; - case unittest_: + case tok!"unittest": node.unittest_ = parseUnittest(); break; - case identifier: + case tok!"identifier": if (node.attributes.length > 0 && node.attributes[$ - 1].storageClass !is null) { - if (peekIs(assign)) + if (peekIs(tok!"=")) node.variableDeclaration = parseVariableDeclaration(null, true); - else if (peekIs(lParen)) + else if (peekIs(tok!"(")) node.functionDeclaration = parseFunctionDeclaration(null, true); else goto type; @@ -1763,28 +1749,28 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; else goto type; break; - case const_: - case immutable_: - case inout_: - case scope_: - case typeof_: - mixin (BASIC_TYPE_CASE_RANGE); + case tok!"const": + case tok!"immutable": + case tok!"inout": + case tok!"scope": + case tok!"typeof": + mixin (BASIC_TYPE_CASES); type: Type type = parseType(); - if (!currentIs(identifier)) + if (!currentIs(tok!"identifier")) { error("Identifier expected"); return null; } - if (peekIs(lParen)) + if (peekIs(tok!"(")) node.functionDeclaration = parseFunctionDeclaration(type); else node.variableDeclaration = parseVariableDeclaration(type); break; - case version_: - if (peekIs(lParen)) + case tok!"version": + if (peekIs(tok!"(")) node.conditionalDeclaration = parseConditionalDeclaration(); - else if (peekIs(assign)) + else if (peekIs(tok!"=")) node.versionSpecification = parseVersionSpecification(); else { @@ -1792,7 +1778,7 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; return null; } break; - case debug_: + case tok!"debug": node.conditionalDeclaration = parseConditionalDeclaration(); if (node.conditionalDeclaration is null) return null; break; @@ -1816,7 +1802,7 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new DeclarationsAndStatements; - while (!currentIsOneOf(TokenType.rBrace) && moreTokens()) + while (!currentIsOneOf(tok!"}") && moreTokens()) { auto dos = parseDeclarationOrStatement(); if (dos !is null) @@ -1871,15 +1857,15 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new Declarator; - auto id = expect(TokenType.identifier); + auto id = expect(tok!"identifier"); if (id is null) return null; node.name = *id; - if (currentIsOneOf(TokenType.lBracket, TokenType.star)) + if (currentIsOneOf(tok!"[", tok!"*")) { error("C-style variable declarations are not supported."); return null; } - if (currentIs(TokenType.assign)) + if (currentIs(tok!"=")) { advance(); node.initializer = parseInitializer(); @@ -1898,8 +1884,8 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new DefaultStatement; - if (expect(TokenType.default_) is null) return null; - if (expect(TokenType.colon) is null) return null; + if (expect(tok!"default") is null) return null; + if (expect(tok!":") is null) return null; node.declarationsAndStatements = parseDeclarationsAndStatements(); return node; } @@ -1915,7 +1901,7 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new DeleteExpression; - if (expect(TokenType.delete_) is null) return null; + if (expect(tok!"delete") is null) return null; node.unaryExpression = parseUnaryExpression(); return node; } @@ -1931,12 +1917,12 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new Deprecated; - if (expect(TokenType.deprecated_) is null) return null; - if (currentIs(TokenType.lParen)) + if (expect(tok!"deprecated") is null) return null; + if (currentIs(tok!"(")) { advance(); node.assignExpression = parseAssignExpression(); - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; } return node; } @@ -1952,11 +1938,11 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new Destructor; - if (expect(TokenType.tilde) is null) return null; - if (expect(TokenType.this_) is null) return null; - if (expect(TokenType.lParen) is null) return null; - if (expect(TokenType.rParen) is null) return null; - if (currentIs(TokenType.semicolon)) + if (expect(tok!"~") is null) return null; + if (expect(tok!"this") is null) return null; + if (expect(tok!"(") is null) return null; + if (expect(tok!")") is null) return null; + if (currentIs(tok!";")) advance(); else node.functionBody = parseFunctionBody(); @@ -1985,13 +1971,13 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new DoStatement; - if (expect(TokenType.do_) is null) return null; + if (expect(tok!"do") is null) return null; node.statementNoCaseNoDefault = parseStatementNoCaseNoDefault(); - if (expect(TokenType.while_) is null) return null; - if (expect(TokenType.lParen) is null) return null; + if (expect(tok!"while") is null) return null; + if (expect(tok!"(") is null) return null; node.expression = parseExpression(); - if (expect(TokenType.rParen) is null) return null; - if (expect(TokenType.semicolon) is null) return null; + if (expect(tok!")") is null) return null; + if (expect(tok!";") is null) return null; return node; } @@ -2007,21 +1993,21 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); EnumBody node = new EnumBody; - if (!currentIs(TokenType.semicolon)) + if (!currentIs(tok!";")) { - auto open = expect (TokenType.lBrace); + auto open = expect (tok!"{"); if (open is null) goto ret; - node.startLocation = open.startIndex; + node.startLocation = open.index; while (moreTokens()) { - if (!currentIsOneOf(TokenType.comma, TokenType.rBrace)) + if (!currentIsOneOf(tok!",", tok!"}")) node.enumMembers ~= parseEnumMember(); - else if (currentIs(TokenType.comma)) + else if (currentIs(tok!",")) { advance(); continue; } - else if (currentIs(TokenType.rBrace)) + else if (currentIs(tok!"}")) break; else { @@ -2029,9 +2015,9 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; goto ret; } } - auto close = expect (TokenType.rBrace); + auto close = expect (tok!"}"); if (close !is null) - node.endLocation = close.startIndex; + node.endLocation = close.index; } ret: return node; @@ -2048,12 +2034,12 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new EnumDeclaration; - if (expect(TokenType.enum_) is null) return null; - if (currentIs(TokenType.identifier)) + if (expect(tok!"enum") is null) return null; + if (currentIs(tok!"identifier")) node.name = advance(); else node.name.line = tokens[index - 1].line; // preserve line number if anonymous - if (currentIs(TokenType.colon)) + if (currentIs(tok!":")) { advance(); node.type = parseType(); @@ -2074,11 +2060,11 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new EnumMember; - if (currentIs(TokenType.identifier)) + if (currentIs(tok!"identifier")) { - if (peekIsOneOf(TokenType.comma, TokenType.rBrace)) + if (peekIsOneOf(tok!",", tok!"}")) node.name = advance(); - else if (peekIs(TokenType.assign)) + else if (peekIs(tok!"=")) { node.name = advance(); goto assign; @@ -2091,7 +2077,7 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; type: node.type = parseType(); assign: - expect(TokenType.assign); + expect(tok!"="); node.assignExpression = parseAssignExpression(); } return node; @@ -2109,7 +2095,7 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new EqualExpression; node.left = shift is null ? parseShiftExpression() : shift; - if (currentIsOneOf(TokenType.equal, TokenType.notEqual)) + if (currentIsOneOf(tok!"==", tok!"!=")) node.operator = advance().type; node.right = parseShiftExpression(); return node; @@ -2140,7 +2126,7 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new ExpressionStatement; node.expression = expression is null ? parseExpression() : expression; - if (expect(TokenType.semicolon) is null) return null; + if (expect(tok!";") is null) return null; return node; } @@ -2155,7 +2141,7 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new FinalSwitchStatement; - if (expect(TokenType.final_) is null) return null; + if (expect(tok!"final") is null) return null; node.switchStatement = parseSwitchStatement(); if (node.switchStatement is null) return null; return node; @@ -2172,7 +2158,7 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new Finally; - if (expect(TokenType.finally_) is null) return null; + if (expect(tok!"finally") is null) return null; node.declarationOrStatement = parseDeclarationOrStatement(); return node; } @@ -2188,29 +2174,29 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new ForStatement; - if (expect(TokenType.for_) is null) return null; - node.startIndex = current().startIndex; - if (expect(TokenType.lParen) is null) return null; + if (expect(tok!"for") is null) return null; + node.startIndex = current().index; + if (expect(tok!"(") is null) return null; - if (currentIs(TokenType.semicolon)) + if (currentIs(tok!";")) advance(); else node.declarationOrStatement = parseDeclarationOrStatement(); - if (currentIs(TokenType.semicolon)) + if (currentIs(tok!";")) advance(); else node.test = parseExpressionStatement(); - if (!currentIs(TokenType.rParen)) + if (!currentIs(tok!")")) node.increment = parseExpression(); - if (expect(TokenType.rParen) is null) return null; - if (currentIs(TokenType.rBrace)) - { - error("Statement expected", false); - return node; // this line makes DCD better - } + if (expect(tok!")") is null) return null; + if (currentIs(tok!"}")) + { + error("Statement expected", false); + return node; // this line makes DCD better + } node.statementNoCaseNoDefault = parseStatementNoCaseNoDefault(); if (node.statementNoCaseNoDefault is null) return null; return node; @@ -2228,22 +2214,22 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); ForeachStatement node = new ForeachStatement; - if (currentIsOneOf(TokenType.foreach_, TokenType.foreach_reverse_)) + if (currentIsOneOf(tok!"foreach", tok!"foreach_reverse")) node.type = advance().type; else { error(`"foreach" or "foreach_reverse" expected`); return null; } - node.startIndex = current().startIndex; - if (expect(TokenType.lParen) is null) return null; + node.startIndex = current().index; + if (expect(tok!"(") is null) return null; ForeachTypeList feType = parseForeachTypeList(); bool canBeRange = feType.items.length == 1; - if (expect(TokenType.semicolon) is null) return null; + if (expect(tok!";") is null) return null; node.low = parseExpression(); if (node.low is null) return null; - if (currentIs(TokenType.dotdot)) + if (currentIs(tok!"..")) { if (!canBeRange) { @@ -2259,8 +2245,8 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { node.foreachTypeList = feType; } - if (expect(TokenType.rParen) is null) return null; - if (currentIs(TokenType.rBrace)) + if (expect(tok!")") is null) return null; + if (currentIs(tok!"}")) { error("Statement expected", false); return node; // this line makes DCD better @@ -2281,20 +2267,20 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new ForeachType; - if (currentIsOneOf(TokenType.ref_, TokenType.const_, TokenType.immutable_, - TokenType.shared_, TokenType.inout_)) + if (currentIsOneOf(tok!"ref", tok!"const", tok!"immutable", + tok!"shared", tok!"inout")) { trace("\033[01;36mType constructor"); if ((node.typeConstructors = parseTypeConstructors()) is null) return null; } - if (currentIs(TokenType.identifier) && peekIsOneOf(TokenType.comma, TokenType.semicolon)) + if (currentIs(tok!"identifier") && peekIsOneOf(tok!",", tok!";")) { node.identifier = advance(); return node; } if ((node.type = parseType()) is null) return null; - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifier = *ident; return node; @@ -2325,13 +2311,13 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; FunctionAttribute parseFunctionAttribute(bool validate = true) { auto node = new FunctionAttribute; - with (TokenType) switch (current.type) + switch (current.type) { - case at: + case tok!"@": node.atAttribute = parseAtAttribute(); break; - case pure_: - case nothrow_: + case tok!"pure": + case tok!"nothrow": node.token = advance(); break; default: @@ -2353,25 +2339,25 @@ class ClassFour(A, B) if (someTest()) : Super {}}c; FunctionBody parseFunctionBody() { auto node = new FunctionBody; - if (currentIs(TokenType.semicolon)) + if (currentIs(tok!";")) { advance(); return node; } - else if (currentIs(TokenType.lBrace)) + else if (currentIs(tok!"{")) node.blockStatement = parseBlockStatement(); else { - if (currentIs(TokenType.in_)) + if (currentIs(tok!"in")) { node.inStatement = parseInStatement(); - if (currentIs(TokenType.out_)) + if (currentIs(tok!"out")) node.outStatement = parseOutStatement(); } - else if (currentIs(TokenType.out_)) + else if (currentIs(tok!"out")) { node.outStatement = parseOutStatement(); - if (currentIs(TokenType.in_)) + if (currentIs(tok!"in")) node.inStatement = parseInStatement(); } node.bodyStatement = parseBodyStatement(); @@ -2440,7 +2426,7 @@ body {} // six mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new FunctionCallExpression; node.unaryExpression = unary is null ? parseUnaryExpression() : unary; - if (currentIs(TokenType.not)) + if (currentIs(tok!"!")) node.templateArguments = parseTemplateArguments(); node.arguments = parseArguments(); return node; @@ -2458,7 +2444,7 @@ body {} // six mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new FunctionCallStatement; node.functionCallExpression = parseFunctionCallExpression(); - if (expect(TokenType.semicolon) is null) return null; + if (expect(tok!";") is null) return null; return node; } @@ -2483,34 +2469,34 @@ body {} // six node.returnType = type is null ? parseType() : type; functionName: - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.name = *ident; - if (!currentIs(TokenType.lParen)) + if (!currentIs(tok!"(")) { error(`"(" expected`); return null; } - assert (currentIs(TokenType.lParen)); + assert (currentIs(tok!"(")); auto p = peekPastParens(); - bool isTemplate = p !is null && p.type == TokenType.lParen; + bool isTemplate = p !is null && p.type == tok!"("; if (isTemplate) node.templateParameters = parseTemplateParameters(); node.parameters = parseParameters(); - if (node.parameters is null) return null; + if (node.parameters is null) return null; while(moreTokens() && currentIsMemberFunctionAttribute()) node.memberFunctionAttributes ~= parseMemberFunctionAttribute(); - if (isTemplate && currentIs(TokenType.if_)) + if (isTemplate && currentIs(tok!"if")) node.constraint = parseConstraint(); - if (currentIs(TokenType.semicolon)) + if (currentIs(tok!";")) advance(); else node.functionBody = parseFunctionBody(); @@ -2528,17 +2514,17 @@ body {} // six FunctionLiteralExpression parseFunctionLiteralExpression() { auto node = new FunctionLiteralExpression; - if (currentIsOneOf(TokenType.function_, TokenType.delegate_)) + if (currentIsOneOf(tok!"function", tok!"delegate")) { node.functionOrDelegate = advance().type; - if (!currentIsOneOf(TokenType.lParen, TokenType.in_, TokenType.body_, - TokenType.out_, TokenType.rBrace)) + if (!currentIsOneOf(tok!"(", tok!"in", tok!"body", + tok!"out", tok!"}")) { node.type = parseType(); if (node.type is null) return null; } } - if (currentIs(TokenType.lParen)) + if (currentIs(tok!"(")) { node.parameters = parseParameters(); if (node.parameters is null) return null; @@ -2566,23 +2552,23 @@ body {} // six GotoStatement parseGotoStatement() { auto node = new GotoStatement; - if (expect(TokenType.goto_) is null) return null; - with (TokenType) switch (current.type) + if (expect(tok!"goto") is null) return null; + switch (current.type) { - case identifier: - case default_: + case tok!"identifier": + case tok!"default": node.label = advance(); break; - case case_: + case tok!"case": node.label = advance(); - if (!currentIs(semicolon)) + if (!currentIs(tok!";")) node.expression = parseExpression(); break; default: error(`Identifier, "default", or "case" expected`); return null; } - if (expect(TokenType.semicolon) is null) return null; + if (expect(tok!";") is null) return null; return node; } @@ -2598,10 +2584,10 @@ body {} // six auto node = new IdentifierChain; while (moreTokens()) { - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifiers ~= *ident; - if (currentIs(TokenType.dot)) + if (currentIs(tok!".")) { advance(); continue; @@ -2624,10 +2610,10 @@ body {} // six auto node = new IdentifierList; do { - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifiers ~= *ident; - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) { advance(); continue; @@ -2651,7 +2637,7 @@ body {} // six while (moreTokens()) { node.identifiersOrTemplateInstances ~= parseIdentifierOrTemplateInstance(); - if (!currentIs(TokenType.dot)) + if (!currentIs(tok!".")) break; else advance(); @@ -2671,15 +2657,15 @@ body {} // six { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new IdentifierOrTemplateInstance; - if (peekIs(TokenType.not) && !startsWith(TokenType.identifier, - TokenType.not, TokenType.is_) - && !startsWith(TokenType.identifier, TokenType.not, TokenType.in_)) + if (peekIs(tok!".") && !startsWith(tok!"identifier", + tok!".", tok!"is") + && !startsWith(tok!"identifier", tok!"!", tok!"in")) { node.templateInstance = parseTemplateInstance(); } else { - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifier = *ident; } @@ -2698,12 +2684,12 @@ body {} // six mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new IdentityExpression; node.left = shift is null ? parseShiftExpression() : shift; - if (currentIs(TokenType.not)) + if (currentIs(tok!"!")) { advance(); node.negated = true; } - if (expect(TokenType.is_) is null) return null; + if (expect(tok!"is") is null) return null; node.right = parseShiftExpression(); return node; } @@ -2723,25 +2709,25 @@ body {} // six { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new IfStatement; - if (expect(TokenType.if_) is null) return null; - node.startIndex = current().startIndex; - if (expect(TokenType.lParen) is null) return null; + if (expect(tok!"if") is null) return null; + node.startIndex = current().index; + if (expect(tok!"(") is null) return null; - if (currentIs(TokenType.auto_)) + if (currentIs(tok!"auto")) { advance(); - auto i = expect(TokenType.identifier); + auto i = expect(tok!"identifier"); if (i !is null) node.identifier = *i; - expect(TokenType.assign); + expect(tok!"="); node.expression = parseExpression(); } else { auto b = setBookmark(); auto t = parseType(); - if (t is null || !currentIs(TokenType.identifier) - || !peekIs(TokenType.assign)) + if (t is null || !currentIs(tok!"identifier") + || !peekIs(tok!"=")) { goToBookmark(b); node.expression = parseExpression(); @@ -2750,22 +2736,22 @@ body {} // six { goToBookmark(b); node.type = parseType(); - auto i = expect(TokenType.identifier); + auto i = expect(tok!"identifier"); if (i !is null) node.identifier = *i; - expect(TokenType.assign); + expect(tok!"="); node.expression = parseExpression(); } } - if (expect(TokenType.rParen) is null) return null; - if (currentIs(TokenType.rBrace)) + if (expect(tok!")") is null) return null; + if (currentIs(tok!"}")) { error("Statement expected", false); return node; // this line makes DCD better } node.thenStatement = parseDeclarationOrStatement(); - if (currentIs(TokenType.else_)) + if (currentIs(tok!"else")) { advance(); node.elseStatement = parseDeclarationOrStatement(); @@ -2783,13 +2769,13 @@ body {} // six ImportBind parseImportBind() { auto node = new ImportBind; - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.left = *ident; - if (currentIs(TokenType.assign)) + if (currentIs(tok!"=")) { advance(); - auto id = expect(TokenType.identifier); + auto id = expect(tok!"identifier"); if (id is null) return null; node.right = *id; } @@ -2807,11 +2793,11 @@ body {} // six { auto node = new ImportBindings; node.singleImport = singleImport is null ? parseSingleImport() : singleImport; - if (expect(TokenType.colon) is null) return null; + if (expect(tok!":") is null) return null; while (moreTokens()) { node.importBinds ~= parseImportBind(); - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) advance(); else break; @@ -2830,14 +2816,14 @@ body {} // six ImportDeclaration parseImportDeclaration() { auto node = new ImportDeclaration; - if (expect(TokenType.import_) is null) return null; + if (expect(tok!"import") is null) return null; SingleImport si = parseSingleImport(); - if (currentIs(TokenType.colon)) + if (currentIs(tok!":")) node.importBindings = parseImportBindings(si); else { node.singleImports ~= si; - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) { advance(); while (moreTokens()) @@ -2845,7 +2831,7 @@ body {} // six auto single = parseSingleImport(); if (single is null) return null; - if (currentIs(TokenType.colon)) + if (currentIs(tok!":")) { node.importBindings = parseImportBindings(single); break; @@ -2853,7 +2839,7 @@ body {} // six else { node.singleImports ~= single; - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) advance(); else break; @@ -2861,7 +2847,7 @@ body {} // six } } } - if (expect(TokenType.semicolon) is null) return null; + if (expect(tok!";") is null) return null; return node; } @@ -2928,10 +2914,10 @@ import core.stdc.stdio, std.string : KeepTerminator; ImportExpression parseImportExpression() { auto node = new ImportExpression; - if (expect(TokenType.import_) is null) return null; - if (expect(TokenType.lParen) is null) return null; + if (expect(tok!"import") is null) return null; + if (expect(tok!"(") is null) return null; node.assignExpression = parseAssignExpression(); - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; return node; } @@ -2947,9 +2933,9 @@ import core.stdc.stdio, std.string : KeepTerminator; mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new IndexExpression; node.unaryExpression = unaryExpression is null ? parseUnaryExpression() : unaryExpression; - if (expect(TokenType.lBracket) is null) return null; + if (expect(tok!"[") is null) return null; node.argumentList = parseArgumentList(); - if (expect(TokenType.rBracket) is null) return null; + if (expect(tok!"]") is null) return null; return node; } @@ -2964,12 +2950,12 @@ import core.stdc.stdio, std.string : KeepTerminator; { auto node = new InExpression; node.left = shift is null ? parseShiftExpression() : shift; - if (currentIs(TokenType.not)) - { - node.negated = true; - advance(); - } - if (expect(TokenType.in_) is null) return null; + if (currentIs(tok!"!")) + { + node.negated = true; + advance(); + } + if (expect(tok!"in") is null) return null; node.right = parseShiftExpression(); return node; } @@ -2984,7 +2970,7 @@ import core.stdc.stdio, std.string : KeepTerminator; InStatement parseInStatement() { auto node = new InStatement; - if (expect(TokenType.in_) is null) return null; + if (expect(tok!"in") is null) return null; node.blockStatement = parseBlockStatement(); return node; } @@ -3000,12 +2986,12 @@ import core.stdc.stdio, std.string : KeepTerminator; Initialize parseInitialize() { auto node = new Initialize; - if (!currentIs(TokenType.semicolon)) + if (!currentIs(tok!";")) { node.statementNoCaseNoDefault = parseStatementNoCaseNoDefault(); if (node.statementNoCaseNoDefault is null) return null; } - else if (expect(TokenType.semicolon) is null) + else if (expect(tok!";") is null) return null; return node; } @@ -3021,7 +3007,7 @@ import core.stdc.stdio, std.string : KeepTerminator; Initializer parseInitializer() { auto node = new Initializer; - if (currentIs(TokenType.void_)) + if (currentIs(tok!"void")) advance(); else node.nonVoidInitializer = parseNonVoidInitializer(); @@ -3038,17 +3024,17 @@ import core.stdc.stdio, std.string : KeepTerminator; InterfaceDeclaration parseInterfaceDeclaration() { auto node = new InterfaceDeclaration; - if (expect(TokenType.interface_) is null) return null; - auto ident = expect(TokenType.identifier); + if (expect(tok!"interface") is null) return null; + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.name = *ident; - if (currentIs(TokenType.lParen)) + if (currentIs(tok!"(")) { node.templateParameters = parseTemplateParameters(); - if (currentIs(TokenType.if_)) + if (currentIs(tok!"if")) node.constraint = parseConstraint(); } - if (currentIs(TokenType.colon)) + if (currentIs(tok!":")) { advance(); node.baseClassList = parseBaseClassList(); @@ -3112,11 +3098,11 @@ interface "Four" Invariant parseInvariant() { auto node = new Invariant; - if (expect(TokenType.invariant_) is null) return null; - if (currentIs(TokenType.lParen)) + if (expect(tok!"invariant") is null) return null; + if (currentIs(tok!"(")) { advance(); - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; } if ((node.blockStatement = parseBlockStatement()) is null) return null; return node; @@ -3158,23 +3144,23 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new IsExpression; - if (expect(TokenType.is_) is null) return null; - if (expect(TokenType.lParen) is null) return null; + if (expect(tok!"is") is null) return null; + if (expect(tok!"(") is null) return null; node.type = parseType(); if (node.type is null) return null; - if (currentIs(TokenType.identifier)) + if (currentIs(tok!"identifier")) node.identifier = advance(); - if (currentIsOneOf(TokenType.equal, TokenType.colon)) + if (currentIsOneOf(tok!"==", tok!":")) { node.equalsOrColon = advance().type; node.typeSpecialization = parseTypeSpecialization(); - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) { advance(); node.templateParameterList = parseTemplateParameterList(); } } - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; return node; } @@ -3190,7 +3176,7 @@ invariant() foo(); mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new KeyValuePair; node.key = parseAssignExpression(); - if (expect(TokenType.colon) is null) return null; + if (expect(tok!":") is null) return null; node.value = parseAssignExpression(); return node; } @@ -3211,10 +3197,10 @@ invariant() foo(); auto kvPair = parseKeyValuePair(); if (kvPair !is null) node.keyValuePairs ~= kvPair; - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) { advance(); - if (currentIs(TokenType.rBracket)) + if (currentIs(tok!"]")) break; } else @@ -3234,10 +3220,10 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new LabeledStatement; - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifier = *ident; - expect(TokenType.colon); + expect(tok!":"); node.declarationOrStatement = parseDeclarationOrStatement(); return node; } @@ -3256,14 +3242,14 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new LambdaExpression; - if (currentIsOneOf(TokenType.function_, TokenType.delegate_)) + if (currentIsOneOf(tok!"function", tok!"delegate")) { node.functionType = advance().type; goto lParen; } - else if (currentIs(TokenType.identifier)) + else if (currentIs(tok!"identifier")) node.identifier = advance(); - else if (currentIs(TokenType.lParen)) + else if (currentIs(tok!"(")) { lParen: node.parameters = parseParameters(); @@ -3282,7 +3268,7 @@ invariant() foo(); return null; } - if (expect(TokenType.goesTo) is null) return null; + if (expect(tok!"=>") is null) return null; if ((node.assignExpression = parseAssignExpression()) is null) return null; @@ -3301,7 +3287,7 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new LastCatch; - if (expect(TokenType.catch_) is null) return null; + if (expect(tok!"catch") is null) return null; if ((node.statementNoCaseNoDefault = parseStatementNoCaseNoDefault()) is null) return null; return node; @@ -3318,17 +3304,17 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new LinkageAttribute; - expect(TokenType.extern_); - expect(TokenType.lParen); - auto ident = expect(TokenType.identifier); + expect(tok!"extern"); + expect(tok!"("); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifier = *ident; - if (currentIs(TokenType.increment)) + if (currentIs(tok!"++")) { advance(); node.hasPlusPlus = true; } - expect(TokenType.rParen); + expect(tok!")"); return node; } @@ -3347,17 +3333,17 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new MemberFunctionAttribute; - with (TokenType) switch (current.type) + switch (current.type) { - case at: + case tok!"@": node.atAttribute = parseAtAttribute(); break; - case immutable_: - case inout_: - case shared_: - case const_: - case pure_: - case nothrow_: + case tok!"immutable": + case tok!"inout": + case tok!"shared": + case tok!"const": + case tok!"pure": + case tok!"nothrow": node.tokenType = advance().type; break; default: @@ -3378,16 +3364,16 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new MixinDeclaration; - if (peekIs(TokenType.identifier)) + if (peekIs(tok!"identifier")) node.templateMixinExpression = parseTemplateMixinExpression(); - else if (peekIs(TokenType.lParen)) + else if (peekIs(tok!"(")) node.mixinExpression = parseMixinExpression(); else { error(`"(" or identifier expected`); return null; } - expect(TokenType.semicolon); + expect(tok!";"); return node; } @@ -3402,10 +3388,10 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new MixinExpression; - expect(TokenType.mixin_); - expect(TokenType.lParen); + expect(tok!"mixin"); + expect(tok!"("); node.assignExpression = parseAssignExpression(); - expect(TokenType.rParen); + expect(tok!")"); return node; } @@ -3420,7 +3406,7 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new MixinTemplateDeclaration; - if (expect(TokenType.mixin_) is null) return null; + if (expect(tok!"mixin") is null) return null; node.templateDeclaration = parseTemplateDeclaration(); if (node.templateDeclaration is null) return null; return node; @@ -3438,10 +3424,10 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new MixinTemplateName; - if (currentIs(TokenType.typeof_)) + if (currentIs(tok!"typeof")) { node.typeofExpression = parseTypeofExpression(); - expect(TokenType.dot); + expect(tok!"."); node.identifierOrTemplateChain = parseIdentifierOrTemplateChain(); } else @@ -3459,9 +3445,9 @@ invariant() foo(); Module parseModule() { Module m = new Module; - if (currentIs(TokenType.scriptLine)) + if (currentIs(tok!"scriptLine")) advance(); - if (currentIs(TokenType.module_)) + if (currentIs(tok!"module")) m.moduleDeclaration = parseModuleDeclaration(); while (moreTokens()) { @@ -3482,9 +3468,9 @@ invariant() foo(); ModuleDeclaration parseModuleDeclaration() { auto node = new ModuleDeclaration; - expect(TokenType.module_); + expect(tok!"module"); node.moduleName = parseIdentifierChain(); - expect(TokenType.semicolon); + expect(tok!";"); return node; } @@ -3499,7 +3485,7 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); return parseLeftAssocBinaryExpression!(MulExpression, PowExpression, - TokenType.star, TokenType.div, TokenType.mod)(); + tok!"*", tok!"/", tok!"%")(); } /** @@ -3512,11 +3498,11 @@ invariant() foo(); NewAnonClassExpression parseNewAnonClassExpression() { auto node = new NewAnonClassExpression; - expect(TokenType.new_); - if (currentIs(TokenType.lParen)) + expect(tok!"new"); + if (currentIs(tok!"(")) node.allocatorArguments = parseArguments(); - expect(TokenType.class_); - if (!currentIs(TokenType.lBrace)) + expect(tok!"class"); + if (!currentIs(tok!"{")) node.baseClassList = parseBaseClassList(); node.structBody = parseStructBody(); return node; @@ -3533,19 +3519,19 @@ invariant() foo(); NewExpression parseNewExpression() { auto node = new NewExpression; - if (peekIsOneOf(TokenType.class_, TokenType.lParen)) + if (peekIsOneOf(tok!"class", tok!"(")) node.newAnonClassExpression = parseNewAnonClassExpression(); else { - expect(TokenType.new_); + expect(tok!"new"); node.type = parseType(); - if (currentIs(TokenType.lBracket)) + if (currentIs(tok!"[")) { advance(); node.assignExpression = parseAssignExpression(); - expect(TokenType.rBracket); + expect(tok!"]"); } - else if (currentIs(TokenType.lParen)) + else if (currentIs(tok!"(")) node.arguments = parseArguments(); } return node; @@ -3584,62 +3570,62 @@ invariant() foo(); StatementNoCaseNoDefault parseStatementNoCaseNoDefault() { auto node = new StatementNoCaseNoDefault; - with (TokenType) switch (current.type) + switch (current.type) { - case lBrace: + case tok!"{": node.blockStatement = parseBlockStatement(); break; - case if_: + case tok!"if": node.ifStatement = parseIfStatement(); break; - case while_: + case tok!"while": node.whileStatement = parseWhileStatement(); break; - case do_: + case tok!"do": node.doStatement = parseDoStatement(); break; - case for_: + case tok!"for": node.forStatement = parseForStatement(); break; - case foreach_: - case foreach_reverse_: + case tok!"foreach": + case tok!"foreach_reverse": node.foreachStatement = parseForeachStatement(); break; - case switch_: + case tok!"switch": node.switchStatement = parseSwitchStatement(); break; - case continue_: + case tok!"continue": node.continueStatement = parseContinueStatement(); break; - case break_: + case tok!"break": node.breakStatement = parseBreakStatement(); break; - case return_: + case tok!"return": node.returnStatement = parseReturnStatement(); break; - case goto_: + case tok!"goto": node.gotoStatement = parseGotoStatement(); break; - case with_: + case tok!"with": node.withStatement = parseWithStatement(); break; - case synchronized_: + case tok!"synchronized": node.synchronizedStatement = parseSynchronizedStatement(); break; - case try_: + case tok!"try": node.tryStatement = parseTryStatement(); break; - case throw_: + case tok!"throw": node.throwStatement = parseThrowStatement(); break; - case scope_: + case tok!"scope": node.scopeGuardStatement = parseScopeGuardStatement(); break; - case asm_: + case tok!"asm": node.asmStatement = parseAsmStatement(); break; - case final_: - if (peekIs(switch_)) + case tok!"final": + if (peekIs(tok!"switch")) { node.finalSwitchStatement = parseFinalSwitchStatement(); break; @@ -3649,33 +3635,33 @@ invariant() foo(); error(`"switch" expected`); return null; } - case debug_: - if (peekIs(TokenType.assign)) + case tok!"debug": + if (peekIs(tok!"=")) node.debugSpecification = parseDebugSpecification(); else node.conditionalStatement = parseConditionalStatement(); break; - case version_: - if (peekIs(TokenType.assign)) + case tok!"version": + if (peekIs(tok!"=")) node.versionSpecification = parseVersionSpecification(); else node.conditionalStatement = parseConditionalStatement(); break; - case static_: - if (peekIs(TokenType.if_)) + case tok!"static": + if (peekIs(tok!"if")) node.conditionalStatement = parseConditionalStatement(); - else if (peekIs(TokenType.assert_)) + else if (peekIs(tok!"assert")) node.staticAssertStatement = parseStaticAssertStatement(); break; - case identifier: - if (peekIs(TokenType.colon)) + case tok!"identifier": + if (peekIs(tok!":")) { node.labeledStatement = parseLabeledStatement(); break; } goto default; - case delete_: - case assert_: + case tok!"delete": + case tok!"assert": default: node.expressionStatement = parseExpressionStatement(); break; @@ -3696,16 +3682,16 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new NonVoidInitializer; - if (currentIs(TokenType.lBrace)) + if (currentIs(tok!"{")) node.structInitializer = parseStructInitializer(); - else if (currentIs(TokenType.lBracket)) + else if (currentIs(tok!"[")) { auto b = peekPastBrackets(); - if (b !is null && (b.type == TokenType.comma - || b.type == TokenType.rParen - || b.type == TokenType.rBracket - || b.type == TokenType.rBrace - || b.type == TokenType.semicolon)) + if (b !is null && (b.type == tok!"," + || b.type == tok!")" + || b.type == tok!"]" + || b.type == tok!"}" + || b.type == tok!";")) { node.arrayInitializer = parseArrayInitializer(); } @@ -3728,7 +3714,6 @@ invariant() foo(); { auto node = new Operands; assert (false, "asm"); // TODO asm - return node; } /** @@ -3743,7 +3728,7 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); return parseLeftAssocBinaryExpression!(OrExpression, XorExpression, - TokenType.bitOr)(); + tok!"|")(); } /** @@ -3758,7 +3743,7 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); return parseLeftAssocBinaryExpression!(OrOrExpression, AndAndExpression, - TokenType.logicOr)(); + tok!"||")(); } /** @@ -3771,14 +3756,14 @@ invariant() foo(); OutStatement parseOutStatement() { auto node = new OutStatement; - expect(TokenType.out_); - if (currentIs(TokenType.lParen)) + expect(tok!"out"); + if (currentIs(tok!"(")) { advance(); - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.parameter = *ident; - expect(TokenType.rParen); + expect(tok!")"); } node.blockStatement = parseBlockStatement(); return node; @@ -3797,34 +3782,34 @@ invariant() foo(); auto node = new Parameter; while (moreTokens()) { - TokenType type = parseParameterAttribute(false); - if (type == TokenType.invalid) + IdType type = parseParameterAttribute(false); + if (type == tok!"") break; else node.parameterAttributes ~= type; } node.type = parseType(); if (node.type is null) return null; - if (currentIs(TokenType.identifier)) + if (currentIs(tok!"identifier")) { node.name = advance(); - if (currentIs(TokenType.vararg)) + if (currentIs(tok!"...")) { advance(); node.vararg = true; } - else if (currentIs(TokenType.assign)) + else if (currentIs(tok!"=")) { advance(); node.default_ = parseAssignExpression(); } } - else if (currentIs(TokenType.vararg)) + else if (currentIs(tok!"...")) { node.vararg = true; advance(); } - else if (currentIs(TokenType.assign)) + else if (currentIs(tok!"=")) { advance(); node.default_ = parseAssignExpression(); @@ -3846,30 +3831,32 @@ invariant() foo(); * | $(LITERAL 'auto') * ;) */ - TokenType parseParameterAttribute(bool validate = false) + IdType parseParameterAttribute(bool validate = false) { mixin(traceEnterAndExit!(__FUNCTION__)); - with (TokenType) switch (current.type) + switch (current.type) { - case immutable_: - case shared_: - case const_: - case inout_: - if (peekIs(TokenType.lParen)) - return invalid; + case tok!"immutable": + case tok!"shared": + case tok!"const": + case tok!"inout": + if (peekIs(tok!"(")) + return tok!""; else - goto case auto_; - case final_: - case in_: - case lazy_: - case out_: - case ref_: - case scope_: - case auto_: + goto _auto; + case tok!"final": + case tok!"in": + case tok!"lazy": + case tok!"out": + case tok!"ref": + case tok!"scope": + _auto: + case tok!"auto": return advance().type; default: - if (validate) error("Parameter attribute expected"); - return invalid; + if (validate) + error("Parameter attribute expected"); + return tok!""; } } @@ -3886,10 +3873,10 @@ invariant() foo(); { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new Parameters; - if (expect(TokenType.lParen) is null) return null; - if (currentIs(TokenType.rParen)) + if (expect(tok!"(") is null) return null; + if (currentIs(tok!")")) goto end; - if (currentIs(TokenType.vararg)) + if (currentIs(tok!"...")) { advance(); node.hasVarargs = true; @@ -3897,25 +3884,26 @@ invariant() foo(); } while (moreTokens()) { - if (currentIs(TokenType.vararg)) + if (currentIs(tok!"...")) { advance(); node.hasVarargs = true; break; } - if (currentIs(TokenType.rParen)) + if (currentIs(tok!")")) break; auto param = parseParameter(); if (param is null) return null; node.parameters ~= param; - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) advance(); else break; } end: - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) + return null; return node; } @@ -3956,11 +3944,11 @@ q{(int a, ...) Postblit parsePostblit() { auto node = new Postblit; - expect(TokenType.this_); - expect(TokenType.lParen); - expect(TokenType.this_); - expect(TokenType.rParen); - if (currentIs(TokenType.semicolon)) + expect(tok!"this"); + expect(tok!"("); + expect(tok!"this"); + expect(tok!")"); + if (currentIs(tok!";")) advance(); else node.functionBody = parseFunctionBody(); @@ -3993,7 +3981,7 @@ q{(int a, ...) ExpressionNode parsePowExpression() { return parseLeftAssocBinaryExpression!(PowExpression, UnaryExpression, - TokenType.pow)(); + tok!"^^")(); } /** @@ -4007,7 +3995,7 @@ q{(int a, ...) { auto node = new PragmaDeclaration; node.pragmaExpression = parsePragmaExpression(); - expect(TokenType.semicolon); + expect(tok!";"); return node; } @@ -4021,17 +4009,17 @@ q{(int a, ...) PragmaExpression parsePragmaExpression() { auto node = new PragmaExpression; - expect(TokenType.pragma_); - expect(TokenType.lParen); - auto ident = expect(TokenType.identifier); + expect(tok!"pragma"); + expect(tok!"("); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifier = *ident; - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) { advance(); node.argumentList = parseArgumentList(); } - expect(TokenType.rParen); + expect(tok!")"); return node; } @@ -4046,7 +4034,7 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new PreIncDecExpression; - if (currentIsOneOf(TokenType.increment, TokenType.decrement)) + if (currentIsOneOf(tok!"++", tok!"--")) advance(); else { @@ -4102,32 +4090,32 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new PrimaryExpression; - with (TokenType) switch (current.type) + switch (current.type) { - case dot: + case tok!".": node.dot = advance(); goto case; - case identifier: - if (peekIs(TokenType.goesTo)) + case tok!"identifier": + if (peekIs(tok!"=>")) node.lambdaExpression = parseLambdaExpression(); else node.identifierOrTemplateInstance = parseIdentifierOrTemplateInstance(); break; - mixin (BASIC_TYPE_CASE_RANGE); + mixin (BASIC_TYPE_CASES); node.basicType = advance(); - expect(dot); - auto t = expect(identifier); + expect(tok!"."); + auto t = expect(tok!"identifier"); if (t !is null) node.primary = *t; break; - case function_: - case delegate_: - if (peekIs(lParen)) + case tok!"function": + case tok!"delegate": + if (peekIs(tok!"(")) { auto b = setBookmark(); advance(); // function | delegate skipParens(); - if (currentIs(goesTo)) + if (currentIs(tok!"=>")) { goToBookmark(b); goto lambda; @@ -4136,39 +4124,39 @@ q{(int a, ...) goToBookmark(b); } goto case; - case lBrace: - case in_: - case out_: - case body_: + case tok!"{": + case tok!"in": + case tok!"out": + case tok!"body": node.functionLiteralExpression = parseFunctionLiteralExpression(); break; - case typeof_: + case tok!"typeof": node.typeofExpression = parseTypeofExpression(); break; - case typeid_: + case tok!"typeid": node.typeidExpression = parseTypeidExpression(); break; - case vector: + case tok!"__vector": node.vector = parseVector(); break; - case lBracket: + case tok!"[": if (isAssociativeArrayLiteral()) node.assocArrayLiteral = parseAssocArrayLiteral(); else node.arrayLiteral = parseArrayLiteral(); break; - case lParen: + case tok!"(": auto b = setBookmark(); skipParens(); while (isAttribute()) parseAttribute(); - if (currentIs(goesTo)) + if (currentIs(tok!"=>")) { goToBookmark(b); lambda: node.lambdaExpression = parseLambdaExpression(); } - else if (currentIs(lBrace)) + else if (currentIs(tok!"{")) { goToBookmark(b); node.functionLiteralExpression = parseFunctionLiteralExpression(); @@ -4178,42 +4166,42 @@ q{(int a, ...) goToBookmark(b); advance(); node.expression = parseExpression(); - expect(TokenType.rParen); + expect(tok!")"); } break; - case is_: + case tok!"is": node.isExpression = parseIsExpression(); break; - case traits: + case tok!"__traits": node.traitsExpression = parseTraitsExpression(); break; - case mixin_: + case tok!"mixin": node.mixinExpression = parseMixinExpression(); break; - case import_: + case tok!"import": node.importExpression = parseImportExpression(); break; - case dollar: - case this_: - case super_: - case null_: - case true_: - case false_: - mixin (SPECIAL_CASE_RANGE); - mixin (LITERAL_CASE_RANGE); - if (currentIsOneOf(stringLiteral, wstringLiteral, dstringLiteral)) + case tok!"$": + case tok!"this": + case tok!"super": + case tok!"null": + case tok!"true": + case tok!"false": + mixin (SPECIAL_CASES); + mixin (LITERAL_CASES); + if (currentIsOneOf(tok!"stringLiteral", tok!"wstringLiteral", tok!"dstringLiteral")) { node.primary = advance(); bool alreadyWarned = false; - while (currentIsOneOf(stringLiteral, wstringLiteral, - dstringLiteral)) + while (currentIsOneOf(tok!"stringLiteral", tok!"wstringLiteral", + tok!"dstringLiteral")) { if (!alreadyWarned) { warn("Implicit concatenation of string literals"); alreadyWarned = true; } - node.primary.value ~= advance().value; + node.primary.text~= advance().text; } } else @@ -4238,16 +4226,16 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new Register; - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifier = *ident; - if (currentIs(TokenType.lParen)) + if (currentIs(tok!"(")) { advance(); - auto intLit = expect(TokenType.intLiteral); + auto intLit = expect(tok!"intLiteral"); if (intLit is null) return null; node.intLiteral = *intLit; - expect(TokenType.rParen); + expect(tok!")"); } return node; } @@ -4277,12 +4265,9 @@ q{(int a, ...) ExpressionNode parseRelExpression(ExpressionNode shift = null) { return parseLeftAssocBinaryExpression!(RelExpression, ShiftExpression, - TokenType.less, TokenType.lessEqual, TokenType.greater, - TokenType.greaterEqual, TokenType.unordered, - TokenType.notLessEqualGreater, TokenType.lessOrGreater, - TokenType.lessEqualGreater, TokenType.notGreater, - TokenType.notGreaterEqual, TokenType.notLess, - TokenType.notLessEqual)(shift); + tok!"<", tok!"<=", tok!">", tok!">=", tok!"!<>=", tok!"!<>", + tok!"<>", tok!"<>=", tok!"!>", tok!"!>=", tok!"!>=", tok!"!<", + tok!"!<=")(shift); } /** @@ -4296,10 +4281,10 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new ReturnStatement; - if (expect(TokenType.return_) is null) return null; - if (!currentIs(TokenType.semicolon)) + if (expect(tok!"return") is null) return null; + if (!currentIs(tok!";")) node.expression = parseExpression(); - if (expect(TokenType.semicolon) is null) return null; + if (expect(tok!";") is null) return null; return node; } @@ -4314,12 +4299,12 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new ScopeGuardStatement; - expect(TokenType.scope_); - expect(TokenType.lParen); - auto ident = expect(TokenType.identifier); + expect(tok!"scope"); + expect(tok!"("); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifier = *ident; - expect(TokenType.rParen); + expect(tok!")"); node.statementNoCaseNoDefault = parseStatementNoCaseNoDefault(); return node; } @@ -4335,13 +4320,13 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new SharedStaticConstructor; - if (expect(TokenType.shared_) is null) return null; - if (expect(TokenType.static_) is null) return null; - if (expect(TokenType.this_) is null) return null; - if (expect(TokenType.lParen) is null) return null; - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!"shared") is null) return null; + if (expect(tok!"static") is null) return null; + if (expect(tok!"this") is null) return null; + if (expect(tok!"(") is null) return null; + if (expect(tok!")") is null) return null; node.functionBody = parseFunctionBody(); - if (node.functionBody is null) return null; + if (node.functionBody is null) return null; return node; } @@ -4356,12 +4341,12 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new SharedStaticDestructor; - expect(TokenType.shared_); - expect(TokenType.static_); - expect(TokenType.tilde); - expect(TokenType.this_); - expect(TokenType.lParen); - expect(TokenType.rParen); + expect(tok!"shared"); + expect(tok!"static"); + expect(tok!"~"); + expect(tok!"this"); + expect(tok!"("); + expect(tok!")"); node.functionBody = parseFunctionBody(); return node; } @@ -4378,8 +4363,7 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); return parseLeftAssocBinaryExpression!(ShiftExpression, AddExpression, - TokenType.shiftLeft, TokenType.shiftRight, - TokenType.unsignedShiftRight)(); + tok!"<<", tok!">>", tok!">>>")(); } /** @@ -4393,14 +4377,14 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new SingleImport; - if (startsWith(TokenType.identifier, TokenType.assign)) + if (startsWith(tok!"identifier", tok!"=")) { node.rename = advance(); advance(); // = } node.identifierChain = parseIdentifierChain(); - if (node.identifierChain is null) - return null; + if (node.identifierChain is null) + return null; return node; } @@ -4417,14 +4401,14 @@ q{(int a, ...) mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new SliceExpression; node.unaryExpression = unary is null ? parseUnaryExpression() : unary; - if (expect(TokenType.lBracket) is null) return null; - if (!currentIs(TokenType.rBracket)) + if (expect(tok!"[") is null) return null; + if (!currentIs(tok!"]")) { node.lower = parseAssignExpression(); - expect(TokenType.dotdot); + expect(tok!".."); node.upper = parseAssignExpression(); } - if (expect(TokenType.rBracket) is null) return null; + if (expect(tok!"]") is null) return null; return node; } @@ -4444,15 +4428,15 @@ q{(int a, ...) auto node = new Statement; switch (current.type) { - case TokenType.case_: + case tok!"case": advance(); auto argumentList = parseArgumentList(); - if (argumentList.items.length == 1 && startsWith(TokenType.colon, TokenType.dotdot)) + if (argumentList.items.length == 1 && startsWith(tok!":", tok!"..")) node.caseRangeStatement = parseCaseRangeStatement(argumentList.items[0]); else node.caseStatement = parseCaseStatement(argumentList); break; - case TokenType.default_: + case tok!"default": node.defaultStatement = parseDefaultStatement(); break; default: @@ -4490,10 +4474,10 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new StaticAssertStatement; - if (expect(TokenType.static_) is null) return null; + if (expect(tok!"static") is null) return null; node.assertExpression = parseAssertExpression(); if (node.assertExpression is null) return null; - if (expect(TokenType.semicolon) is null) return null; + if (expect(tok!";") is null) return null; return node; } @@ -4508,10 +4492,10 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new StaticConstructor; - expect(TokenType.static_); - expect(TokenType.this_); - expect(TokenType.lParen); - expect(TokenType.rParen); + expect(tok!"static"); + expect(tok!"this"); + expect(tok!"("); + expect(tok!")"); node.functionBody = parseFunctionBody(); return node; } @@ -4527,11 +4511,11 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new StaticDestructor; - expect(TokenType.static_); - expect(TokenType.tilde); - expect(TokenType.this_); - expect(TokenType.lParen); - expect(TokenType.rParen); + expect(tok!"static"); + expect(tok!"~"); + expect(tok!"this"); + expect(tok!"("); + expect(tok!")"); node.functionBody = parseFunctionBody(); return node; } @@ -4547,11 +4531,11 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new StaticIfCondition; - expect(TokenType.static_); - expect(TokenType.if_); - expect(TokenType.lParen); + expect(tok!"static"); + expect(tok!"if"); + expect(tok!"("); node.assignExpression = parseAssignExpression(); - expect(TokenType.rParen); + expect(tok!")"); return node; } @@ -4580,32 +4564,32 @@ q{(int a, ...) StorageClass parseStorageClass() { auto node = new StorageClass; - with (TokenType) switch (current.type) + switch (current.type) { - case at: + case tok!"@": node.atAttribute = parseAtAttribute(); if (node.atAttribute is null) return null; break; - case deprecated_: + case tok!"deprecated": node.deprecated_ = parseDeprecated(); break; - case const_: - case immutable_: - case inout_: - case shared_: - case abstract_: - case auto_: - case enum_: - case extern_: - case final_: - case nothrow_: - case override_: - case pure_: - case ref_: - case gshared: - case scope_: - case static_: - case synchronized_: + case tok!"const": + case tok!"immutable": + case tok!"inout": + case tok!"shared": + case tok!"abstract": + case tok!"auto": + case tok!"enum": + case tok!"extern": + case tok!"final": + case tok!"nothrow": + case tok!"override": + case tok!"pure": + case tok!"ref": + case tok!"__gshared": + case tok!"scope": + case tok!"static": + case tok!"synchronized": node.token = advance(); break; default: @@ -4626,16 +4610,16 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new StructBody; - auto start = expect(TokenType.lBrace); - if (start !is null) node.startLocation = start.startIndex; - while (!currentIs(TokenType.rBrace) && moreTokens()) + auto start = expect(tok!"{"); + if (start !is null) node.startLocation = start.index; + while (!currentIs(tok!"}") && moreTokens()) { auto dec = parseDeclaration(); if (dec !is null) node.declarations ~= dec; } - auto end = expect(TokenType.rBrace); - if (end !is null) node.endLocation = end.startIndex; + auto end = expect(tok!"}"); + if (end !is null) node.endLocation = end.index; return node; } @@ -4650,24 +4634,24 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new StructDeclaration; - expect(TokenType.struct_); - if (currentIs(TokenType.identifier)) + expect(tok!"struct"); + if (currentIs(tok!"identifier")) { node.name = advance(); } - if (currentIs(TokenType.lParen)) + if (currentIs(tok!"(")) { node.templateParameters = parseTemplateParameters(); - if (tokens[index] == TokenType.if_) + if (tokens[index] == tok!"if") node.constraint = parseConstraint(); node.structBody = parseStructBody(); } - else if (currentIs(TokenType.lBrace)) + else if (currentIs(tok!"{")) { node.structBody = parseStructBody(); } - else if (currentIs(TokenType.semicolon)) + else if (currentIs(tok!";")) advance(); else { @@ -4688,9 +4672,9 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new StructInitializer; - expect(TokenType.lBrace); + expect(tok!"{"); node.structMemberInitializers = parseStructMemberInitializers(); - expect(TokenType.rBrace); + expect(tok!"}"); return node; } @@ -4705,7 +4689,7 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new StructMemberInitializer; - if (startsWith(TokenType.identifier, TokenType.colon)) + if (startsWith(tok!"identifier", tok!":")) { node.identifier = tokens[index++]; index++; @@ -4728,10 +4712,10 @@ q{(int a, ...) do { auto structMemberInitializer = parseStructMemberInitializer(); - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) { advance(); - if (!currentIs(TokenType.rBrace)) + if (!currentIs(tok!"}")) continue; else break; @@ -4753,10 +4737,10 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new SwitchStatement; - expect(TokenType.switch_); - expect(TokenType.lParen); + expect(tok!"switch"); + expect(tok!"("); node.expression = parseExpression(); - expect(TokenType.rParen); + expect(tok!")"); node.statement = parseStatement(); return node; } @@ -4772,7 +4756,7 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new Symbol; - if (currentIs(TokenType.dot)) + if (currentIs(tok!".")) { node.dot = true; advance(); @@ -4792,12 +4776,12 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new SynchronizedStatement; - expect(TokenType.synchronized_); - if (currentIs(TokenType.lParen)) + expect(tok!"synchronized"); + if (currentIs(tok!"(")) { - expect(TokenType.lParen); + expect(tok!"("); node.expression = parseExpression(); - expect(TokenType.rParen); + expect(tok!")"); } node.statementNoCaseNoDefault = parseStatementNoCaseNoDefault(); return node; @@ -4814,11 +4798,11 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TemplateAliasParameter; - expect(TokenType.alias_); - if (currentIs(TokenType.identifier)) + expect(tok!"alias"); + if (currentIs(tok!"identifier")) { - if (peekIsOneOf(TokenType.comma, TokenType.rParen, TokenType.assign, - TokenType.colon)) + if (peekIsOneOf(tok!",", tok!")", tok!"=", + tok!":")) { node.identifier = advance(); } @@ -4826,12 +4810,12 @@ q{(int a, ...) else { if ((node.type = parseType()) is null) return null; - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifier = *ident; } - if (currentIs(TokenType.colon)) + if (currentIs(tok!":")) { advance(); if (isType()) @@ -4839,7 +4823,7 @@ q{(int a, ...) else node.colonExpression = parseAssignExpression(); } - if (currentIs(TokenType.assign)) + if (currentIs(tok!"=")) { advance(); if (isType()) @@ -4864,7 +4848,7 @@ q{(int a, ...) auto node = new TemplateArgument; auto b = setBookmark(); auto t = parseType(); - if (t !is null && currentIsOneOf(TokenType.comma, TokenType.rParen)) + if (t !is null && currentIsOneOf(tok!",", tok!")")) { goToBookmark(b); node.type = parseType(); @@ -4901,13 +4885,13 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TemplateArguments; - expect(TokenType.not); - if (currentIs(TokenType.lParen)) + expect(tok!"!"); + if (currentIs(tok!"(")) { advance(); - if (!currentIs(TokenType.rParen)) + if (!currentIs(tok!")")) node.templateArgumentList = parseTemplateArgumentList(); - expect(TokenType.rParen); + expect(tok!")"); } else node.templateSingleArgument = parseTemplateSingleArgument(); @@ -4926,26 +4910,26 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TemplateDeclaration; - if (currentIs(TokenType.enum_)) + if (currentIs(tok!"enum")) { node.eponymousTemplateDeclaration = parseEponymousTemplateDeclaration(); return node; } - expect(TokenType.template_); - auto ident = expect(TokenType.identifier); + expect(tok!"template"); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.name = *ident; node.templateParameters = parseTemplateParameters(); - if (currentIs(TokenType.if_)) + if (currentIs(tok!"if")) node.constraint = parseConstraint(); - if (expect(TokenType.lBrace) is null) return null; - while (moreTokens() && !currentIs(TokenType.rBrace)) + if (expect(tok!"{") is null) return null; + while (moreTokens() && !currentIs(tok!"}")) { auto decl = parseDeclaration(); if (decl !is null) node.declarations ~= decl; } - expect(TokenType.rBrace); + expect(tok!"}"); return node; } @@ -4960,14 +4944,14 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new EponymousTemplateDeclaration; - expect(TokenType.enum_); - auto ident = expect(TokenType.identifier); + expect(tok!"enum"); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.name = *ident; node.templateParameters = parseTemplateParameters(); - expect(TokenType.assign); + expect(tok!"="); node.assignExpression = parseAssignExpression(); - expect(TokenType.semicolon); + expect(tok!";"); return node; } @@ -4982,7 +4966,7 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TemplateInstance; - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifier = *ident; node.templateArguments = parseTemplateArguments(); @@ -5002,11 +4986,11 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TemplateMixinExpression; - if (expect(TokenType.mixin_) is null) return null; + if (expect(tok!"mixin") is null) return null; node.mixinTemplateName = parseMixinTemplateName(); - if (currentIs(TokenType.not)) + if (currentIs(tok!"!")) node.templateArguments = parseTemplateArguments(); - if (currentIs(TokenType.identifier)) + if (currentIs(tok!"identifier")) node.identifier = advance(); return node; } @@ -5026,20 +5010,20 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TemplateParameter; - with (TokenType) switch (current.type) + switch (current.type) { - case alias_: + case tok!"alias": node.templateAliasParameter = parseTemplateAliasParameter(); break; - case identifier: - if(peekIs(vararg)) + case tok!"identifier": + if(peekIs(tok!"...")) node.templateTupleParameter = parseTemplateTupleParameter(); - else if (peekIsOneOf(colon, assign, comma, rParen)) + else if (peekIsOneOf(tok!":", tok!"=", tok!",", tok!")")) node.templateTypeParameter = parseTemplateTypeParameter(); else node.templateValueParameter = parseTemplateValueParameter(); break; - case this_: + case tok!"this": node.templateThisParameter = parseTemplateThisParameter(); break; default: @@ -5073,10 +5057,10 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TemplateParameters; - if (expect(TokenType.lParen) is null) return null; - if (!currentIs(TokenType.rParen)) + if (expect(tok!"(") is null) return null; + if (!currentIs(tok!")")) node.templateParameterList = parseTemplateParameterList(); - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; return node; } @@ -5110,16 +5094,16 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TemplateSingleArgument; - with (TokenType) switch (current.type) + switch (current.type) { - case true_: - case false_: - case null_: - case this_: - case identifier: - mixin (SPECIAL_CASE_RANGE); - mixin (LITERAL_CASE_RANGE); - mixin (BASIC_TYPE_CASE_RANGE); + case tok!"true": + case tok!"false": + case tok!"null": + case tok!"this": + case tok!"identifier": + mixin (SPECIAL_CASES); + mixin (LITERAL_CASES); + mixin (BASIC_TYPE_CASES); node.token = advance(); break; default: @@ -5140,7 +5124,7 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TemplateThisParameter; - expect(TokenType.this_); + expect(tok!"this"); node.templateTypeParameter = parseTemplateTypeParameter(); return node; } @@ -5156,11 +5140,11 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TemplateTupleParameter; - auto i = expect(TokenType.identifier); + auto i = expect(tok!"identifier"); if (i is null) return null; node.identifier = *i; - if (expect(TokenType.vararg) is null) return null; + if (expect(tok!"...") is null) return null; return node; } @@ -5175,15 +5159,15 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TemplateTypeParameter; - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifier = *ident; - if (currentIs(TokenType.colon)) + if (currentIs(tok!":")) { advance(); node.colonType = parseType(); } - if (currentIs(TokenType.assign)) + if (currentIs(tok!"=")) { advance(); node.assignType = parseType(); @@ -5203,15 +5187,15 @@ q{(int a, ...) mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TemplateValueParameter; if ((node.type = parseType()) is null) return null; - auto ident = expect(TokenType.identifier); + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifier = *ident; - if (currentIs(TokenType.colon)) + if (currentIs(tok!":")) { advance(); if ((node.expression = parseExpression()) is null) return null; } - if (currentIs(TokenType.assign)) + if (currentIs(tok!"=")) { if ((node.templateValueParameterDefault = parseTemplateValueParameterDefault()) is null) return null; @@ -5230,14 +5214,14 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TemplateValueParameterDefault; - expect(TokenType.assign); - with (TokenType) switch (current.type) + expect(tok!"="); + switch (current.type) { - case specialFile: - case specialModule: - case specialLine: - case specialFunction: - case specialPrettyFunction: + case tok!"__FILE__": + case tok!"__MODULE__": + case tok!"__LINE__": + case tok!"__FUNCTION__": + case tok!"__PRETTY_FUNCTION__": node.token = advance(); break; default: @@ -5259,11 +5243,11 @@ q{(int a, ...) mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TernaryExpression; node.orOrExpression = parseOrOrExpression(); - if (currentIs(TokenType.ternary)) + if (currentIs(tok!"?")) { advance(); node.expression = parseExpression(); - expect(TokenType.colon); + expect(tok!":"); node.ternaryExpression = parseTernaryExpression(); } return node; @@ -5280,9 +5264,9 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new ThrowStatement; - expect(TokenType.throw_); + expect(tok!"throw"); node.expression = parseExpression(); - expect(TokenType.semicolon); + expect(tok!";"); return node; } @@ -5297,17 +5281,17 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TraitsExpression; - if (expect(TokenType.traits) is null) return null; - if (expect(TokenType.lParen) is null) return null; - auto ident = expect(TokenType.identifier); + if (expect(tok!"__traits") is null) return null; + if (expect(tok!"(") is null) return null; + auto ident = expect(tok!"identifier"); if (ident is null) return null; node.identifier = *ident; - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) { advance(); if ((node.templateArgumentList = parseTemplateArgumentList()) is null) return null; } - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; return node; } @@ -5322,11 +5306,11 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TryStatement; - expect(TokenType.try_); + expect(tok!"try"); node.declarationOrStatement = parseDeclarationOrStatement(); - if (currentIs(TokenType.catch_)) + if (currentIs(tok!"catch")) node.catches = parseCatches(); - if (currentIs(TokenType.finally_)) + if (currentIs(tok!"finally")) node.finally_ = parseFinally(); return node; } @@ -5344,14 +5328,14 @@ q{(int a, ...) auto node = new Type; switch(current.type) { - case TokenType.const_: - case TokenType.immutable_: - case TokenType.inout_: - case TokenType.shared_: - case TokenType.scope_: - case TokenType.pure_: - case TokenType.nothrow_: - if (!peekIs(TokenType.lParen)) + case tok!"const": + case tok!"immutable": + case tok!"inout": + case tok!"shared": + case tok!"scope": + case tok!"pure": + case tok!"nothrow": + if (!peekIs(tok!"(")) node.typeConstructors = parseTypeConstructors(); break; default: @@ -5360,12 +5344,12 @@ q{(int a, ...) node.type2 = parseType2(); if (node.type2 is null) return null; - loop: while (moreTokens()) with (TokenType) switch (current.type) + loop: while (moreTokens()) switch (current.type) { - case TokenType.star: - case TokenType.lBracket: - case TokenType.delegate_: - case TokenType.function_: + case tok!"*": + case tok!"[": + case tok!"delegate": + case tok!"function": auto suffix = parseTypeSuffix(); if (suffix !is null) node.typeSuffixes ~= suffix; @@ -5392,40 +5376,40 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new Type2; - with (TokenType) switch (current.type) + switch (current.type) { - case identifier: - case dot: - if ((node.symbol = parseSymbol()) is null) - return null; - break; - case bool_: .. case wchar_: - if ((node.builtinType = parseBasicType()) == TokenType.invalid) - return null; - break; - case typeof_: - if ((node.typeofExpression = parseTypeofExpression()) is null) - return null; - if (currentIs(TokenType.dot)) - { - advance(); - node.identifierOrTemplateChain = parseIdentifierOrTemplateChain(); - if (node.identifierOrTemplateChain is null) - return null; - } - break; - case const_: - case immutable_: - case inout_: - case shared_: - node.typeConstructor = advance().type; - if (expect(TokenType.lParen) is null) return null; - if ((node.type = parseType()) is null) return null; - if (expect(TokenType.rParen) is null) return null; - break; - default: - error("Basic type, type constructor, symbol, or typeof expected"); + case tok!"identifier": + case tok!".": + if ((node.symbol = parseSymbol()) is null) return null; + break; + mixin (BASIC_TYPE_CASES); + if ((node.builtinType = parseBasicType()) == tok!"") + return null; + break; + case tok!"typeof": + if ((node.typeofExpression = parseTypeofExpression()) is null) + return null; + if (currentIs(tok!".")) + { + advance(); + node.identifierOrTemplateChain = parseIdentifierOrTemplateChain(); + if (node.identifierOrTemplateChain is null) + return null; + } + break; + case tok!"const": + case tok!"immutable": + case tok!"inout": + case tok!"shared": + node.typeConstructor = advance().type; + if (expect(tok!"(") is null) return null; + if ((node.type = parseType()) is null) return null; + if (expect(tok!")") is null) return null; + break; + default: + error("Basic type, type constructor, symbol, or typeof expected"); + return null; } return node; } @@ -5441,26 +5425,26 @@ q{(int a, ...) * | $(LITERAL 'scope') * ;) */ - TokenType parseTypeConstructor(bool validate = true) + IdType parseTypeConstructor(bool validate = true) { mixin(traceEnterAndExit!(__FUNCTION__)); - with (TokenType) switch (current.type) + switch (current.type) { - case const_: - case immutable_: - case inout_: - case shared_: - case scope_: - case ref_: - case pure_: - case nothrow_: - if (!peekIs(lParen)) + case tok!"const": + case tok!"immutable": + case tok!"inout": + case tok!"shared": + case tok!"scope": + case tok!"ref": + case tok!"pure": + case tok!"nothrow": + if (!peekIs(tok!"(")) return advance().type; goto default; default: if (validate) error(`"const", "immutable", "inout", "shared", or "scope" expected`); - return invalid; + return tok!""; } } @@ -5471,14 +5455,14 @@ q{(int a, ...) * $(RULE typeConstructor)+ * ;) */ - TokenType[] parseTypeConstructors() + IdType[] parseTypeConstructors() { mixin(traceEnterAndExit!(__FUNCTION__)); - TokenType[] r; + IdType[] r; while (moreTokens()) { - TokenType type = parseTypeConstructor(false); - if (type == TokenType.invalid) + IdType type = parseTypeConstructor(false); + if (type == tok!"") break; else r ~= type; @@ -5512,24 +5496,24 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TypeSpecialization; - with (TokenType) switch (current.type) + switch (current.type) { - case struct_: - case union_: - case class_: - case interface_: - case enum_: - case function_: - case delegate_: - case super_: - case return_: - case typedef_: - case parameters: - case const_: - case immutable_: - case inout_: - case shared_: - if (peekIsOneOf(rParen, comma)) + case tok!"struct": + case tok!"union": + case tok!"class": + case tok!"interface": + case tok!"enum": + case tok!"function": + case tok!"delegate": + case tok!"super": + case tok!"return": + case tok!"typedef": + case tok!"__parameters": + case tok!"const": + case tok!"immutable": + case tok!"inout": + case tok!"shared": + if (peekIsOneOf(tok!")", tok!",")) node.token = advance(); else goto default; @@ -5556,20 +5540,20 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TypeSuffix; - with (TokenType) switch(current.type) + switch(current.type) { - case star: + case tok!"*": node.star = true; advance(); return node; - case lBracket: + case tok!"[": node.array = true; advance(); - if (currentIs(rBracket)) + if (currentIs(tok!"]")) goto end; auto bookmark = setBookmark(); auto type = parseType(); - if (type !is null && currentIs(rBracket)) + if (type !is null && currentIs(tok!"]")) { goToBookmark(bookmark); type = parseType(); @@ -5580,7 +5564,7 @@ q{(int a, ...) goToBookmark(bookmark); node.low = parseAssignExpression(); if (node.low is null) return null; - if (currentIs(dotdot)) + if (currentIs(tok!"..")) { advance(); node.high = parseAssignExpression(); @@ -5588,10 +5572,10 @@ q{(int a, ...) } } end: - if (expect(TokenType.rBracket) is null) return null; + if (expect(tok!"]") is null) return null; return node; - case delegate_: - case function_: + case tok!"delegate": + case tok!"function": node.delegateOrFunction = advance(); node.parameters = parseParameters(); while (currentIsMemberFunctionAttribute()) @@ -5614,11 +5598,11 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TypeidExpression; - expect(TokenType.typeid_); - expect(TokenType.lParen); + expect(tok!"typeid"); + expect(tok!"("); auto b = setBookmark(); auto t = parseType(); - if (t is null || !currentIs(TokenType.rParen)) + if (t is null || !currentIs(tok!")")) { goToBookmark(b); node.expression = parseExpression(); @@ -5630,7 +5614,7 @@ q{(int a, ...) node.type = parseType(); if (node.type is null) return null; } - expect(TokenType.rParen); + expect(tok!")"); return node; } @@ -5645,13 +5629,13 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new TypeofExpression; - expect(TokenType.typeof_); - expect(TokenType.lParen); - if (currentIs(TokenType.return_)) + expect(tok!"typeof"); + expect(tok!"("); + if (currentIs(tok!"return")) node.return_ = advance(); else node.expression = parseExpression(); - expect(TokenType.rParen); + expect(tok!")"); return node; } @@ -5685,42 +5669,42 @@ q{(int a, ...) { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new UnaryExpression; - with(TokenType) switch (current.type) + switch (current.type) { - case amp: - case not: - case star: - case plus: - case minus: - case tilde: - case increment: - case decrement: + case tok!"&": + case tok!"!": + case tok!"*": + case tok!"+": + case tok!"-": + case tok!"~": + case tok!"++": + case tok!"--": node.prefix = advance(); node.unaryExpression = parseUnaryExpression(); break; - case new_: + case tok!"new": node.newExpression = parseNewExpression(); break; - case delete_: + case tok!"delete": node.deleteExpression = parseDeleteExpression(); break; - case cast_: + case tok!"cast": node.castExpression = parseCastExpression(); break; - case assert_: + case tok!"assert": node.assertExpression = parseAssertExpression(); break; - case lParen: + case tok!"(": // handle (type).identifier auto b = setBookmark(); skipParens(); - if (startsWith(dot, identifier)) + if (startsWith(tok!".", tok!"identifier")) { // go back to the ( index = b; advance(); auto t = parseType(); - if (t is null || !currentIs(rParen)) + if (t is null || !currentIs(tok!")")) { goToBookmark(b); goto default; @@ -5737,38 +5721,39 @@ q{(int a, ...) goToBookmark(b); goto default; } - break; default: node.primaryExpression = parsePrimaryExpression(); break; } - loop: while (moreTokens()) with (TokenType) switch (current.type) + loop: while (moreTokens()) switch (current.type) { - case not: - if (peekIs(is_)) + case tok!"!": + if (peekIs(tok!"is")) break loop; index++; - bool jump = (currentIs(TokenType.lParen) && peekPastParens().type == TokenType.lParen) - || peekIs(TokenType.lParen); + bool jump = (currentIs(tok!"(") && peekPastParens().type == tok!"(") + || peekIs(tok!"("); index--; if (jump) - goto case lParen; + goto lParen; else break loop; - case lParen: - auto n = new UnaryExpression(); - n.functionCallExpression = parseFunctionCallExpression(node); - node = n; + + case tok!"(": + lParen: + auto newUnary = new UnaryExpression(); + newUnary.functionCallExpression = parseFunctionCallExpression(node); + node = newUnary; break; - case increment: - case decrement: + case tok!"++": + case tok!"--": auto n = new UnaryExpression(); n.unaryExpression = node; n.suffix = advance(); node = n; break; - case lBracket: + case tok!"[": auto n = new UnaryExpression; if (isSliceExpression()) n.sliceExpression = parseSliceExpression(node); @@ -5776,7 +5761,7 @@ q{(int a, ...) n.indexExpression = parseIndexExpression(node); node = n; break; - case dot: + case tok!".": advance(); auto n = new UnaryExpression(); n.unaryExpression = node; @@ -5813,17 +5798,17 @@ q{doStuff(5)}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new UnionDeclaration; - // grab line number even if it's anonymous - auto l = expect(TokenType.union_).line; + // grab line number even if it's anonymous + auto l = expect(tok!"union").line; bool templated = false; - if (currentIs(TokenType.identifier)) + if (currentIs(tok!"identifier")) { node.name = advance(); - if (currentIs(TokenType.lParen)) + if (currentIs(tok!"(")) { templated = true; node.templateParameters = parseTemplateParameters(); - if (currentIs(TokenType.if_)) + if (currentIs(tok!"if")) node.constraint = parseConstraint(); node.structBody = parseStructBody(); } @@ -5832,9 +5817,9 @@ q{doStuff(5)}c; } else { - node.name.line = l; + node.name.line = l; semiOrStructBody: - if (currentIs(TokenType.semicolon)) + if (currentIs(tok!";")) advance(); else node.structBody = parseStructBody(); @@ -5853,7 +5838,7 @@ q{doStuff(5)}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new Unittest; - expect(TokenType.unittest_); + expect(tok!"unittest"); node.blockStatement = parseBlockStatement(); return node; } @@ -5883,12 +5868,12 @@ q{doStuff(5)}c; auto declarator = parseDeclarator(); if (declarator is null) return null; node.declarators ~= declarator; - if (moreTokens() && currentIs(TokenType.comma)) + if (moreTokens() && currentIs(tok!",")) advance(); else break; } - expect(TokenType.semicolon); + expect(tok!";"); return node; } @@ -5903,10 +5888,10 @@ q{doStuff(5)}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new Vector; - if (expect(TokenType.vector) is null) return null; - if (expect(TokenType.lParen) is null) return null; + if (expect(tok!"__vector") is null) return null; + if (expect(tok!"(") is null) return null; if ((node.type = parseType()) is null) return null; - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; return node; } @@ -5921,10 +5906,10 @@ q{doStuff(5)}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new VersionCondition; - if (expect(TokenType.version_) is null) return null; - if (expect(TokenType.lParen) is null) return null; - if (currentIsOneOf(TokenType.intLiteral, TokenType.identifier, - TokenType.unittest_, TokenType.assert_)) + if (expect(tok!"version") is null) return null; + if (expect(tok!"(") is null) return null; + if (currentIsOneOf(tok!"intLiteral", tok!"identifier", + tok!"unittest", tok!"assert")) { node.token = advance(); } @@ -5933,7 +5918,7 @@ q{doStuff(5)}c; error(`Expected an integer literal, an identifier, "assert", or "unittest"`); return null; } - expect(TokenType.rParen); + expect(tok!")"); return node; } @@ -5948,15 +5933,15 @@ q{doStuff(5)}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new VersionSpecification; - expect(TokenType.version_); - expect(TokenType.assign); - if (!currentIsOneOf(TokenType.identifier, TokenType.intLiteral)) + expect(tok!"version"); + expect(tok!"="); + if (!currentIsOneOf(tok!"identifier", tok!"intLiteral")) { error("Identifier or integer literal expected"); return null; } node.token = advance(); - expect(TokenType.semicolon); + expect(tok!";"); return node; } @@ -5971,16 +5956,16 @@ q{doStuff(5)}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new WhileStatement; - expect(TokenType.while_); - node.startIndex = current().startIndex; - expect(TokenType.lParen); + expect(tok!"while"); + node.startIndex = current().index; + expect(tok!"("); node.expression = parseExpression(); - expect(TokenType.rParen); - if (currentIs(TokenType.rBrace)) - { - error("Statement expected", false); - return node; // this line makes DCD better - } + expect(tok!")"); + if (currentIs(tok!"}")) + { + error("Statement expected", false); + return node; // this line makes DCD better + } node.statementNoCaseNoDefault = parseStatementNoCaseNoDefault(); return node; } @@ -5996,10 +5981,10 @@ q{doStuff(5)}c; { mixin(traceEnterAndExit!(__FUNCTION__)); auto node = new WithStatement; - if (expect(TokenType.with_) is null) return null; - if (expect(TokenType.lParen) is null) return null; + if (expect(tok!"with") is null) return null; + if (expect(tok!"(") is null) return null; if ((node.expression = parseExpression()) is null) return null; - if (expect(TokenType.rParen) is null) return null; + if (expect(tok!")") is null) return null; node.statementNoCaseNoDefault = parseStatementNoCaseNoDefault(); if (node.statementNoCaseNoDefault is null) return null; return node; @@ -6017,7 +6002,7 @@ q{doStuff(5)}c; { mixin(traceEnterAndExit!(__FUNCTION__)); return parseLeftAssocBinaryExpression!(XorExpression, AndExpression, - TokenType.xor)(); + tok!"^")(); } /** @@ -6045,9 +6030,9 @@ q{doStuff(5)}c; bool isSliceExpression() { mixin(traceEnterAndExit!(__FUNCTION__)); - if (startsWith(TokenType.lBracket, TokenType.rBracket)) + if (startsWith(tok!"[", tok!"]")) return true; - return hasMagicDelimiter!(TokenType.dotdot)(); + return hasMagicDelimiter!(tok!"..")(); } void setTokens(const(Token)[] tokens) @@ -6061,14 +6046,14 @@ protected: { switch (current.type) { - case TokenType.const_: - return peekIsOneOf(TokenType.shared_, TokenType.rParen); - case TokenType.immutable_: - return peekIs(TokenType.rParen); - case TokenType.inout_: - return peekIsOneOf(TokenType.shared_, TokenType.rParen); - case TokenType.shared_: - return peekIsOneOf(TokenType.const_, TokenType.inout_, TokenType.rParen); + case tok!"const": + return peekIsOneOf(tok!"shared", tok!")"); + case tok!"immutable": + return peekIs(tok!")"); + case tok!"inout": + return peekIsOneOf(tok!"shared", tok!")"); + case tok!"shared": + return peekIsOneOf(tok!"const", tok!"inout", tok!")"); default: return false; } @@ -6076,7 +6061,7 @@ protected: bool isAssociativeArrayLiteral() { - return hasMagicDelimiter!(TokenType.colon)(); + return hasMagicDelimiter!(tok!":")(); } @@ -6086,14 +6071,14 @@ protected: mixin(traceEnterAndExit!(__FUNCTION__)); auto i = index; scope(exit) index = i; - assert(currentIs(TokenType.lBracket)); + assert(currentIs(tok!"[")); advance(); - while (moreTokens()) with (TokenType) switch (current.type) + while (moreTokens()) switch (current.type) { - case lBrace: skipBraces(); break; - case lParen: skipParens(); break; - case lBracket: skipBrackets(); break; - case rBracket: return false; + case tok!"{": skipBraces(); break; + case tok!"(": skipParens(); break; + case tok!"[": skipBrackets(); break; + case tok!"]": return false; case T: return true; default: advance(); break; } @@ -6104,15 +6089,15 @@ protected: { mixin(traceEnterAndExit!(__FUNCTION__)); if (!moreTokens()) return false; - with (TokenType) switch (current.type) + switch (current.type) { - case final_: - return !peekIs(switch_); - case debug_: - case version_: - return peekIs(assign); - case synchronized_: - if (peekIs(lParen)) + case tok!"final": + return !peekIs(tok!"switch"); + case tok!"debug": + case tok!"version": + return peekIs(tok!"="); + case tok!"synchronized": + if (peekIs(tok!"(")) return false; else { @@ -6121,61 +6106,61 @@ protected: advance(); return isDeclaration(); } - case static_: - if (peekIs(if_)) + case tok!"static": + if (peekIs(tok!"if")) return false; goto case; - case scope_: - if (peekIs(lParen)) + case tok!"scope": + if (peekIs(tok!"(")) return false; goto case; - case const_: - case immutable_: - case inout_: - case shared_: - case gshared: - case alias_: - case class_: - case enum_: - case interface_: - case struct_: - case union_: - case unittest_: - case auto_: - case ref_: - case at: - case align_: - case deprecated_: - case private_: - case package_: - case protected_: - case public_: - case export_: - case extern_: - case override_: - case abstract_: - case pure_: - case nothrow_: - mixin(BASIC_TYPE_CASE_RANGE); + case tok!"const": + case tok!"immutable": + case tok!"inout": + case tok!"shared": + case tok!"__gshared": + case tok!"alias": + case tok!"class": + case tok!"enum": + case tok!"interface": + case tok!"struct": + case tok!"union": + case tok!"unittest": + case tok!"auto": + case tok!"ref": + case tok!"@": + case tok!"align": + case tok!"deprecated": + case tok!"private": + case tok!"package": + case tok!"protected": + case tok!"public": + case tok!"export": + case tok!"extern": + case tok!"override": + case tok!"abstract": + case tok!"pure": + case tok!"nothrow": + mixin(BASIC_TYPE_CASES); return true; - case case_: - case default_: - case return_: - case if_: - case while_: - case do_: - case for_: - case foreach_: - case switch_: - case continue_: - case break_: - case goto_: - case try_: - case throw_: - case asm_: - case foreach_reverse_: - case lBrace: - case assert_: + case tok!"case": + case tok!"default": + case tok!"return": + case tok!"if": + case tok!"while": + case tok!"do": + case tok!"for": + case tok!"foreach": + case tok!"switch": + case tok!"continue": + case tok!"break": + case tok!"goto": + case tok!"try": + case tok!"throw": + case tok!"asm": + case tok!"foreach_reverse": + case tok!"{": + case tok!"assert": return false; default: break; @@ -6208,59 +6193,59 @@ protected: auto b = setBookmark(); scope (exit) goToBookmark(b); if (parseType() is null) return false; - if (currentIsOneOf(TokenType.comma, TokenType.rParen)) return true; + if (currentIsOneOf(tok!",", tok!")")) return true; return false; } bool isAttribute() { if (!moreTokens()) return false; - with (TokenType) switch (current.type) + switch (current.type) { - case const_: - case immutable_: - case inout_: - case scope_: - return !peekIs(TokenType.lParen); - case static_: - return !peekIsOneOf(assert_, this_, if_, tilde); - case shared_: - return !(startsWith(shared_, static_, this_) - || startsWith(shared_, static_, tilde) - || peekIs(TokenType.lParen)); - case enum_: - if (peekIsOneOf(lBrace, colon, semicolon)) + case tok!"const": + case tok!"immutable": + case tok!"inout": + case tok!"scope": + return !peekIs(tok!"("); + case tok!"static": + return !peekIsOneOf(tok!"assert", tok!"this", tok!"if", tok!"~"); + case tok!"shared": + return !(startsWith(tok!"shared", tok!"static", tok!"this") + || startsWith(tok!"shared", tok!"static", tok!"~") + || peekIs(tok!"(")); + case tok!"enum": + if (peekIsOneOf(tok!"{", tok!":", tok!";")) return false; - else if (peekIs(TokenType.identifier)) + else if (peekIs(tok!"identifier")) { - if (startsWith(TokenType.enum_, TokenType.identifier, TokenType.lParen)) + if (startsWith(tok!"enum", tok!"identifier", tok!"(")) return false; auto b = setBookmark(); scope(exit) goToBookmark(b); advance(); - if (peekIsOneOf(lBrace, colon, semicolon)) + if (peekIsOneOf(tok!"{", tok!":", tok!";")) return false; return true; } return true; - case deprecated_: - case private_: - case package_: - case protected_: - case public_: - case export_: - case final_: - case synchronized_: - case override_: - case abstract_: - case auto_: - case gshared: - case pure_: - case nothrow_: - case at: - case ref_: - case extern_: - case align_: + case tok!"deprecated": + case tok!"private": + case tok!"package": + case tok!"protected": + case tok!"public": + case tok!"export": + case tok!"final": + case tok!"synchronized": + case tok!"override": + case tok!"abstract": + case tok!"auto": + case tok!"__gshared": + case tok!"pure": + case tok!"nothrow": + case tok!"@": + case tok!"ref": + case tok!"extern": + case tok!"align": return true; default: return false; @@ -6271,13 +6256,13 @@ protected: { switch (current.type) { - case TokenType.const_: - case TokenType.immutable_: - case TokenType.inout_: - case TokenType.shared_: - case TokenType.at: - case TokenType.pure_: - case TokenType.nothrow_: + case tok!"const": + case tok!"immutable": + case tok!"inout": + case tok!"shared": + case tok!"@": + case tok!"pure": + case tok!"nothrow": return true; default: return false; @@ -6309,11 +6294,11 @@ protected: while (moreTokens()) { mixin ("node.items ~= parse" ~ ItemType.stringof ~ "();"); - if (currentIs(TokenType.comma)) + if (currentIs(tok!",")) { advance(); - if (allowTrailingComma && currentIsOneOf(TokenType.rParen, - TokenType.rBrace, TokenType.rBracket)) + if (allowTrailingComma && currentIsOneOf(tok!")", + tok!"}", tok!"]")) { break; } @@ -6348,18 +6333,18 @@ protected: auto column = index < tokens.length ? tokens[index].column : tokens[$ - 1].column; auto line = index < tokens.length ? tokens[index].line : tokens[$ - 1].line; if (messageFunction is null) - { + { stderr.writefln("%s(%d:%d)[error]: %s", fileName, line, column, message); - } + } else messageFunction(fileName, line, column, message); } while (shouldAdvance && moreTokens()) { - if (currentIsOneOf(TokenType.semicolon, TokenType.rBrace, - TokenType.rParen, TokenType.rBracket)) + if (currentIsOneOf(tok!";", tok!"}", + tok!")", tok!"]")) { - advance(); + advance(); break; } else @@ -6369,7 +6354,7 @@ protected: void skip(alias O, alias C)() { - assert(currentIs(O), current().value); + assert(currentIs(O), current().text); advance(); int depth = 1; while (moreTokens()) @@ -6395,17 +6380,17 @@ protected: void skipBraces() { - skip!(TokenType.lBrace, TokenType.rBrace)(); + skip!(tok!"{", tok!"}")(); } void skipParens() { - skip!(TokenType.lParen, TokenType.rParen)(); + skip!(tok!"(", tok!")")(); } void skipBrackets() { - skip!(TokenType.lBracket, TokenType.rBracket)(); + skip!(tok!"[", tok!"]")(); } const(Token)* peek() const @@ -6442,25 +6427,25 @@ protected: const(Token)* peekPastParens() const nothrow { - return peekPast!(TokenType.lParen, TokenType.rParen)(); + return peekPast!(tok!"(", tok!")")(); } const(Token)* peekPastBrackets() const nothrow { - return peekPast!(TokenType.lBracket, TokenType.rBracket)(); + return peekPast!(tok!"[", tok!"]")(); } const(Token)* peekPastBraces() const nothrow { - return peekPast!(TokenType.lBrace, TokenType.rBrace)(); + return peekPast!(tok!"{", tok!"}")(); } - bool peekIs(TokenType t) const nothrow + bool peekIs(IdType t) const nothrow { return index + 1 < tokens.length && tokens[index + 1].type == t; } - bool peekIsOneOf(TokenType[] types...) const nothrow + bool peekIsOneOf(IdType[] types...) const nothrow { if (index + 1 >= tokens.length) return false; return canFind(types, tokens[index + 1].type); @@ -6470,20 +6455,20 @@ protected: * Returns a token of the specified type if it was the next token, otherwise * calls the error function and returns null. */ - const(Token)* expect(TokenType type) + const(Token)* expect(IdType type) { if (index < tokens.length && tokens[index].type == type) return &tokens[index++]; else { - string tokenString = getTokenValue(type) is null - ? to!string(type) : getTokenValue(type); + string tokenString = str(type) is null + ? to!string(type) : str(type); bool shouldNotAdvance = index < tokens.length - && (tokens[index].type == TokenType.rParen - || tokens[index].type == TokenType.semicolon - || tokens[index].type == TokenType.rBrace); + && (tokens[index].type == tok!")" + || tokens[index].type == tok!";" + || tokens[index].type == tok!"}"); error("Expected " ~ tokenString ~ " instead of " - ~ (index < tokens.length ? tokens[index].value : "EOF"), + ~ (index < tokens.length ? tokens[index].text: "EOF"), !shouldNotAdvance); return null; } @@ -6508,7 +6493,7 @@ protected: /** * Returns: true if the current token has the given type */ - bool currentIs(TokenType type) const + bool currentIs(IdType type) const { return index < tokens.length && tokens[index] == type; } @@ -6516,14 +6501,14 @@ protected: /** * Returns: true if the current token is one of the given types */ - bool currentIsOneOf(TokenType[] types...) const + bool currentIsOneOf(IdType[] types...) const { if (index >= tokens.length) return false; return canFind(types, current.type); } - bool startsWith(TokenType[] types...) const nothrow + bool startsWith(IdType[] types...) const nothrow { if (index + types.length >= tokens.length) return false; @@ -6597,9 +6582,57 @@ protected: void trace(lazy string message) {} } - enum string BASIC_TYPE_CASE_RANGE = q{case bool_: .. case wchar_:}; - enum string LITERAL_CASE_RANGE = q{case doubleLiteral: .. case wstringLiteral:}; - enum string SPECIAL_CASE_RANGE = q{case specialDate: .. case specialPrettyFunction:}; + enum string BASIC_TYPE_CASES = q{ + case tok!"int": + case tok!"uint": + case tok!"double": + case tok!"idouble": + case tok!"float": + case tok!"ifloat": + case tok!"short": + case tok!"ushort": + case tok!"long": + case tok!"ulong": + case tok!"char": + case tok!"wchar": + case tok!"dchar": + case tok!"bool": + case tok!"void": + case tok!"cent": + case tok!"ucent": + case tok!"real": + case tok!"ireal": + case tok!"byte": + case tok!"ubyte": + case tok!"cdouble": + case tok!"cfloat": + case tok!"creal": + }; + enum string LITERAL_CASES = q{ + case tok!"doubleLiteral": + case tok!"floatLiteral": + case tok!"idoubleLiteral": + case tok!"ifloatLiteral": + case tok!"intLiteral": + case tok!"longLiteral": + case tok!"realLiteral": + case tok!"irealLiteral": + case tok!"uintLiteral": + case tok!"ulongLiteral": + }; + enum string SPECIAL_CASES = q{ + case tok!"__DATE__": + case tok!"__EOF__": + case tok!"__FILE__": + case tok!"__FUNCTION__": + case tok!"__LINE__": + case tok!"__MODULE__": + case tok!"__PRETTY_FUNCTION__": + case tok!"__TIME__": + case tok!"__TIMESTAMP__": + case tok!"__VENDOR__": + case tok!"__VERSION__": + }; const(Token)[] tokens; int suppressMessages; size_t index; diff --git a/stdx/lexer.d b/stdx/lexer.d new file mode 100644 index 0000000..d1e38c1 --- /dev/null +++ b/stdx/lexer.d @@ -0,0 +1,457 @@ +// Written in the D programming language + +/** + * This module contains a range-based _lexer generator. + * + * Copyright: Brian Schott 2013 + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt Boost, License 1.0) + * Authors: Brian Schott, with ideas shamelessly stolen from Andrei Alexandrescu + * Source: $(PHOBOSSRC std/_lexer.d) + */ + +module stdx.lexer; +import std.typecons; +import std.algorithm; +import std.range; +import std.traits; +import std.conv; +import std.math; + +template TokenIdType(alias staticTokens, alias dynamicTokens, + alias possibleDefaultTokens) +{ + static if ((staticTokens.length + dynamicTokens.length + possibleDefaultTokens.length) <= ubyte.max) + alias TokenIdType = ubyte; + else static if ((staticTokens.length + dynamicTokens.length + possibleDefaultTokens.length) <= ushort.max) + alias TokenIdType = ushort; + else static if ((staticTokens.length + dynamicTokens.length + possibleDefaultTokens.length) <= uint.max) + alias TokenIdType = uint; + else + static assert (false); +} + +string TokenStringRepresentation(IdType, alias staticTokens, alias possibleDefaultTokens)(IdType type) @property +{ + if (type == 0) + return "!ERROR!"; + else if (type < staticTokens.length) + return staticTokens[type - 1]; + else if (type < staticTokens.length + possibleDefaultTokens.length) + return possibleDefaultTokens[type - staticTokens.length]; + else + return null; +} + +IdType TokenId(IdType, alias staticTokens, alias dynamicTokens, + alias possibleDefaultTokens, string symbol)() @property +{ + static if (symbol == "") + return 0; + else static if (symbol == "\0") + return 1 + staticTokens.length + dynamicTokens.length + possibleDefaultTokens.length; + else + { + enum i = staticTokens.countUntil(symbol); + static if (i >= 0) + enum id = i + 1; + else + { + enum ii = possibleDefaultTokens.countUntil(symbol); + static if (ii >= 0) + enum id = ii + staticTokens.length; + else + { + enum dynamicId = dynamicTokens.countUntil(symbol); + enum id = dynamicId >= 0 ? i + staticTokens.length + possibleDefaultTokens.length + dynamicId : -1; + } + } + static assert (id >= 0 && id < IdType.max, "Invalid token: " ~ symbol); + return id; + } +} + +struct TokenStructure(IDType) +{ + bool opEquals(IDType type) const pure nothrow @safe + { + return this.type == type; + } + + IDType type; + string text; + size_t line; + size_t column; + size_t index; +} + +mixin template Lexer(R, IDType, Token, alias isSeparating, alias defaultTokenFunction, + alias staticTokens, alias dynamicTokens, alias pseudoTokens, + alias possibleDefaultTokens) if (isForwardRange!R) +{ + enum size_t lookAhead = chain(staticTokens, pseudoTokens).map!"a.length".reduce!"max(a, b)"(); + alias PeekRange!(R, lookAhead) RangeType; + + static string generateCaseStatements(string[] tokens, size_t offset = 0) + { + string code; + for (size_t i = 0; i < tokens.length; i++) + { + auto indent = ""; + foreach (k; 0 .. offset) + indent ~= " "; + size_t j = i + 1; + + if (offset < tokens[i].length) + { + while (j < tokens.length && offset < tokens[j].length + && tokens[i][offset] == tokens[j][offset]) j++; + code ~= indent ~ "case " ~ text(cast(ubyte) tokens[i][offset]) ~ ":\n"; + if (i + 1 >= j) + { + if (offset + 1 == tokens[i].length) + code ~= generateLeaf(tokens[i], indent ~ " "); + else + { + code ~= indent ~ " if (!range.canPeek(" ~ text(tokens[i].length - 1) ~ "))\n"; + code ~= indent ~ " goto outer_default;\n"; + code ~= indent ~ " if (range.startsWith(\"" ~ escape(tokens[i]) ~ "\"))\n"; + code ~= indent ~ " {\n"; + code ~= generateLeaf(tokens[i], indent ~ " "); + code ~= indent ~ " }\n"; + code ~= indent ~ " else\n"; + code ~= indent ~ " goto outer_default;\n"; + } + } + else + { + code ~= indent ~ " if (!range.canPeek(" ~ text(offset + 1) ~ "))\n"; + code ~= indent ~ " {\n"; + code ~= generateLeaf(tokens[i][0 .. offset + 1], indent ~ " "); + code ~= indent ~ " }\n"; + code ~= indent ~ " switch (range.peek(" ~ text(offset + 1) ~ "))\n"; + code ~= indent ~ " {\n"; + code ~= generateCaseStatements(tokens[i .. j], offset + 1); + code ~= indent ~ " default:\n"; + code ~= generateLeaf(tokens[i][0 .. offset + 1], indent ~ " "); + code ~= indent ~ " }\n"; + } + } + i = j - 1; + } + return code; + } + + static string generateLeaf(string token, string indent) + { + string code; + if (staticTokens.countUntil(token) >= 0) + { + code ~= indent ~ "range.popFrontN(" ~ text(token.length) ~ ");\n"; + code ~= indent ~ "return Token(tok!\"" ~ escape(token) ~"\", null, range.line, range.column, range.index);\n"; + } + else if (pseudoTokens.countUntil(token) >= 0) + code ~= indent ~ "return postProcess(pseudoTok!\"" ~ escape(token) ~"\");\n"; + else if (possibleDefaultTokens.countUntil(token) >= 0) + { + code ~= indent ~ "if (!range.canPeek(" ~ text(token.length) ~ ") || isSeparating(range.peek(" ~ text(token.length) ~ ")))\n"; + code ~= indent ~ "{\n"; + code ~= indent ~ " range.popFrontN(" ~ text(token.length) ~ ");\n"; + code ~= indent ~ " return Token(tok!\"" ~ escape(token) ~"\", null, range.line, range.column, range.index);\n"; + code ~= indent ~ "}\n"; + code ~= indent ~ "else\n"; + code ~= indent ~ " goto outer_default;\n"; + } + else + code ~= indent ~ "goto outer_default;\n"; + return code; + } + + + + Token front() @property + { + return _front; + } + + void popFront() + { + _front = advance(); + } + + bool empty() const nothrow @property + { + return _front.type == tok!"\0"; + } + + void registerPostProcess(alias t)(Token delegate(ref RangeType) fun) + { + post[pseudoTok!t] = fun; + } + + static IDType pseudoTok(string symbol)() nothrow pure @property + { + static assert (pseudoTokens.countUntil(symbol) >= 0); + enum index = cast(IDType) pseudoTokens.countUntil(symbol); + return index; + } + + static string escape(string input) + { + string rVal; + foreach (ubyte c; cast(ubyte[]) input) + { + switch (c) + { + case '\\': rVal ~= `\\`; break; + case '"': rVal ~= `\"`; break; + case '\'': rVal ~= `\'`; break; + case '\t': rVal ~= `\t`; break; + case '\n': rVal ~= `\n`; break; + case '\r': rVal ~= `\r`; break; + default: rVal ~= c; break; + } + } + return rVal; + } + + Token advance() + { + if (range.empty) + return Token(tok!"\0"); + auto r = range.save; + lexerLoop: switch (range.front) + { + mixin(generateCaseStatements(stupidToArray(sort(staticTokens ~ pseudoTokens ~ possibleDefaultTokens)))); + //pragma(msg, generateCaseStatements(stupidToArray(sort(staticTokens ~ pseudoTokens ~ possibleDefaultTokens)))); + outer_default: + default: + range = r; + return defaultTokenFunction(range); + } + } + + /** + * This only exists because the real array() can't be called at compile-time + */ + static T[] stupidToArray(R, T = ElementType!R)(R range) + { + T[] rVal; + foreach (v; range) + rVal ~= v; + return rVal; + } + + Token postProcess(IDType i) + { + assert (post[i] !is null, "No post-processing function registered for " ~ pseudoTokens[i]); + return post[i](range); + } + + Token delegate(ref RangeType)[pseudoTokens.length] post; + RangeType range; + Token _front; +} + +struct PeekRange(R, size_t peekSupported = 1) if (isRandomAccessRange!R && isForwardRange!R) +{ +public: + + this(R range) + { + this.range = range; + } + + bool empty() pure nothrow const @property + { + return _index >= range.length; + } + + ElementType!R front() pure nothrow const @property + in + { + assert (!empty); + } + body + { + return range[_index]; + } + + void popFront() pure nothrow + { + _index++; + _column++; + } + + void popFrontN(size_t n) pure nothrow + { + foreach (i; 0 .. n) + popFront(); + } + + ElementType!R peek(int offset = 1) pure nothrow const + in + { + assert (canPeek(offset)); + } + body + { + return range[_index + offset]; + } + + bool canPeek(int offset = 1) pure nothrow const + { + return _index + offset >= 0 && _index + offset < range.length; + } + + typeof(this) save() @property + { + typeof(this) copy; + copy.range = range; + copy._index = _index; + copy._column = _column; + copy._line = _line; + return copy; + } + + void mark() nothrow pure + { + markBegin = index; + } + + R getMarked() nothrow pure + { + return range[markBegin .. index]; + } + + void incrementLine() pure nothrow + { + _column = 1; + _line++; + } + + size_t line() pure nothrow const @property { return _line; } + size_t column() pure nothrow const @property { return _column; } + size_t index() pure nothrow const @property { return _index; } + +private: + size_t markBegin; + size_t _column = 1; + size_t _line = 1; + size_t _index = 0; + R range; +} + +struct PeekRange(R, size_t peekSupported = 1) + if (!isRandomAccessRange!R && isForwardRange!R) +{ +public: + + this(R range) + { + this.range = range; + for (size_t i = 0; !this.range.empty && i < peekSupported; i++) + { + rangeSizeCount++; + buffer[i] = this.range.front; + range.popFront(); + } + } + + ElementType!R front() const @property + in + { + assert (!empty); + } + body + { + return buffer[bufferIndex]; + } + + void popFront() + in + { + assert (!empty); + } + body + { + index++; + column++; + count++; + bufferIndex = bufferIndex + 1 > buffer.length ? 0 : bufferIndex + 1; + if (marking) + markBuffer.put(buffer[bufferIndex]); + if (!range.empty) + { + buffer[bufferIndex + peekSupported % buffer.length] = range.front(); + range.popFront(); + rangeSizeCount++; + } + } + + bool empty() const nothrow pure @property + { + return rangeSizeCount == count; + } + + ElementType!R peek(int offset = 1) pure nothrow const + in + { + assert (canPeek(offset)); + } + body + { + return buffer[(bufferIndex + offset) % buffer.length]; + } + + bool canPeek(int offset = 1) pure nothrow const + { + return offset >= 0 + ? offset <= peekSupported && count + offset <= rangeSizeCount + : abs(offset) <= peekSupported && (count - abs(offset)) >= 0; + } + + typeof(this) save() @property + { + typeof(this) newRange; + newRange.count = count; + newRange.rangeSizeCount = count; + newRange.buffer = buffer.dup; + newRange.bufferIndex = bufferIndex; + newRange.range = range.save; + return newRange; + } + + void mark() + { + marking = true; + markBuffer.clear(); + } + + ElementEncodingType!R[] getMarked() + { + marking = false; + return markBuffer.data; + } + + void incrementLine() pure nothrow + { + _column = 1; + _line++; + } + + size_t line() pure nothrow const @property { return _line; } + size_t column() pure nothrow const @property { return _column; } + size_t index() pure nothrow const @property { return _index; } + +private: + auto markBuffer = appender!(ElementType!R[])(); + bool marking; + size_t count; + size_t rangeSizeCount; + ElementType!(R)[(peekSupported * 2) + 1] buffer; + size_t bufferIndex; + size_t _column = 1; + size_t _line = 1; + size_t _index = 0; + R range; +}