More progress on the AST clasess.
This commit is contained in:
parent
e5c7129803
commit
a2e0a3bfe2
|
@ -41,7 +41,7 @@ html { background-color: #fdf6e3; color: #002b36; }
|
||||||
|
|
||||||
foreach (Token t; tokens)
|
foreach (Token t; tokens)
|
||||||
{
|
{
|
||||||
if (isType(t.type))
|
if (isBasicType(t.type))
|
||||||
writeSpan("type", t.value);
|
writeSpan("type", t.value);
|
||||||
else if (isKeyword(t.type))
|
else if (isKeyword(t.type))
|
||||||
writeSpan("kwrd", t.value);
|
writeSpan("kwrd", t.value);
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
|
|
||||||
module main;
|
module main;
|
||||||
|
|
||||||
|
|
||||||
import std.algorithm;
|
import std.algorithm;
|
||||||
import std.array;
|
import std.array;
|
||||||
import std.conv;
|
import std.conv;
|
||||||
|
|
|
@ -33,8 +33,7 @@ void printTokenCount(Tokens)(File output, ref Tokens tokens, size_t fileSize)
|
||||||
tokens.popFront();
|
tokens.popFront();
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
output.writefln("%f", cast(float) fileSize / cast(float) count);
|
output.writefln("%d", count);
|
||||||
//output.writefln("%d", count);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void printLineCount(Tokens)(File output, ref Tokens tokens)
|
void printLineCount(Tokens)(File output, ref Tokens tokens)
|
||||||
|
|
324
std/d/ast.d
324
std/d/ast.d
|
@ -211,7 +211,29 @@ public:
|
||||||
mixin(OVERRIDE_DEFAULT_ACCEPT);
|
mixin(OVERRIDE_DEFAULT_ACCEPT);
|
||||||
Type type;
|
Type type;
|
||||||
Declarator declarator;
|
Declarator declarator;
|
||||||
AliasInitialization[] initializations;
|
AliasInitializer[] initializations;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AliasInitializer : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Token identifier;
|
||||||
|
Type type;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AliasThisDeclaration : Declaration
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(OVERRIDE_DEFAULT_ACCEPT);
|
||||||
|
Token identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AlignAttribute : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Token integerLiteral;
|
||||||
}
|
}
|
||||||
|
|
||||||
class StructDeclaration : Declaration
|
class StructDeclaration : Declaration
|
||||||
|
@ -482,7 +504,7 @@ class XorExpression : ASTNode
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
XorExpression xorExpression;
|
XorExpression xorExpression;
|
||||||
andExpression andExpression;
|
AndExpression andExpression;
|
||||||
}
|
}
|
||||||
|
|
||||||
class AndExpression : ASTNode
|
class AndExpression : ASTNode
|
||||||
|
@ -578,7 +600,7 @@ public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
Token operator;
|
Token operator;
|
||||||
UnaryExpression unaryExpression;
|
UnaryExpression unaryExpression;
|
||||||
PreIncDecExpression preIncDecExpression
|
PreIncDecExpression preIncDecExpression;
|
||||||
NewExpression newExpression;
|
NewExpression newExpression;
|
||||||
DeleteExpression deleteExpression;
|
DeleteExpression deleteExpression;
|
||||||
CastExpression castExpression;
|
CastExpression castExpression;
|
||||||
|
@ -588,3 +610,299 @@ public:
|
||||||
AssignExpression sliceUpper;
|
AssignExpression sliceUpper;
|
||||||
IdentifierOrTemplateInstance identifierOrTemplateInstance;
|
IdentifierOrTemplateInstance identifierOrTemplateInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ArgumentList : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
AssignExpression[] arguments;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Arguments : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
ArgumentList argumentList;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ArrayInitializer : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
ArrayMemberInitializations arrayMemberInitializations;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ArrayLiteral : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
ArgumentList argumentList;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ArrayMemberInitialization : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
AssignExpression assignExpression;
|
||||||
|
NonVoidInitializer nonVoidInitializer;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ArrayMemberInitializations : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
ArrayMemberInitialization[] arrayMemberInitializations;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AssertExpression : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
AssignExpression assertion;
|
||||||
|
AssignExpression message;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AssertStatement : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
AssertExpression assertExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AssignStatement : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
PreIncDecExpression preIncDecExpression;
|
||||||
|
PostIncDecExpression postIncDecExpression;
|
||||||
|
UnaryExpression[] unaryExpressions;
|
||||||
|
AssignExpression[] assignExpressions;
|
||||||
|
Token[] assignOperators;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AssocArrayLiteral : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
KeyValuePairs keyValuePairs;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AtAttribute : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
FunctionCallExpression functionCallExpression;
|
||||||
|
ArgumentList argumentList;
|
||||||
|
Token identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AttributedDeclaration : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Declaration[] declarations
|
||||||
|
}
|
||||||
|
|
||||||
|
class Attribute : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
LinkageAttribute linkageAttribute;
|
||||||
|
AlignAttribute alignAttribute;
|
||||||
|
PragmaExpression pragmaExpression;
|
||||||
|
Deprecated deprecated_;
|
||||||
|
ProtectionAttribute protectionAttribute;
|
||||||
|
AtAttribute atAttribute;
|
||||||
|
Token attribute;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AutoDeclaration : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
StorageClass storageClass;
|
||||||
|
Token[] identifiers;
|
||||||
|
Initializer[] initializers;
|
||||||
|
}
|
||||||
|
|
||||||
|
class BlockStatement : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
DeclarationsAndStatements declarationsAndStatements;
|
||||||
|
}
|
||||||
|
|
||||||
|
class BodyStatement : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
BlockStatements declarationsAndStatements;
|
||||||
|
}
|
||||||
|
|
||||||
|
class BreakStatement : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Token identifier;
|
||||||
|
bool hasIdentifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
class BuiltinType : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Token token;
|
||||||
|
}
|
||||||
|
|
||||||
|
class CaseRangeStatement : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
AssignExpression low;
|
||||||
|
AssignExpression high;
|
||||||
|
DeclarationsAndStatements declarationsAndStatements;
|
||||||
|
}
|
||||||
|
|
||||||
|
class CaseStatement: ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
ArgumentList argumentList;
|
||||||
|
DeclarationsAndStatements declarationsAndStatements;
|
||||||
|
}
|
||||||
|
|
||||||
|
class CastExpression: ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Type type;
|
||||||
|
CastQualifier castQualifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
class CastQualifier: ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Token first;
|
||||||
|
Token second;
|
||||||
|
bool hasSecond;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Catches: ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Catch[] catches;
|
||||||
|
LastCatch lastCatch;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Catch: ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Type type;
|
||||||
|
Token identifier;
|
||||||
|
NonEmptyStatementNoCaseNoDefault nonEmptyStatementNoCaseNoDefault;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ClassBody: ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Declaration[] declarations;
|
||||||
|
Invariant[] invariants;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ClassDeclaration: ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Token name;
|
||||||
|
TemplateParameters templateParameters;
|
||||||
|
Constraint constraint;
|
||||||
|
IdentifierList superClasses;
|
||||||
|
ClassBody classBody;
|
||||||
|
}
|
||||||
|
|
||||||
|
class CmpExpression : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
ShiftExpression shiftExpression;
|
||||||
|
EqualExpression equalExpression;
|
||||||
|
IdentityExpression identityExpression;
|
||||||
|
RelExpression relExpression;
|
||||||
|
InExpression inExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
class CompileCondition : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
VersionCondition versionCondition;
|
||||||
|
DebugCondition debugCondition;
|
||||||
|
StaticIfCondition staticIfCondition;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ConditionalDeclaration : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
CompileCondition compileCondition;
|
||||||
|
Declaration[] trueDeclarations;
|
||||||
|
Declaration[] falseDeclarations;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ConditionalStatement : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
CompileCondition compileCondition;
|
||||||
|
NonEmptyStatementNoCaseNoDefault trueStatement;
|
||||||
|
NonEmptyStatementNoCaseNoDefault falseStatement;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Constraint : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Expression expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Constructor : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Parameters parameters;
|
||||||
|
FunctionBody functionBody;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ContinueStatement : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
bool hasIdentifier;
|
||||||
|
Token identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
class DebugCondition : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Token identifierOrInteger;
|
||||||
|
bool hasIdentifierOrInteger;
|
||||||
|
}
|
||||||
|
|
||||||
|
class DebugSpecification : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
Token identifierOrInteger;
|
||||||
|
}
|
||||||
|
|
||||||
|
class : ASTNode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mixin(DEFAULT_ACCEPT);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue