More work on the parser
This commit is contained in:
parent
3a66f01405
commit
2802eb20a9
91
std/d/ast.d
91
std/d/ast.d
|
|
@ -305,8 +305,8 @@ class AndExpression : ASTNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
/** */AndExpression andExpression;
|
/** */ AndExpression left;
|
||||||
/** */ShiftExpression shiftExpression;
|
/** */ CmpExpression right;
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
@ -355,8 +355,8 @@ class AsmAddExp : ASTNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
/** */Token operator;
|
/** */ TokenType operator;
|
||||||
/** */AsmMulExp left;
|
/** */ AsmAddExp left;
|
||||||
/** */ AsmMulExp right;
|
/** */ AsmMulExp right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -433,9 +433,10 @@ class AsmMulExp : ASTNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
/** */AsmBrExp left;
|
/** */ TokenType operator;
|
||||||
|
/** */ AsmMulExp left;
|
||||||
/** */ AsmBrExp right;
|
/** */ AsmBrExp right;
|
||||||
/** */Token operator;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
@ -991,7 +992,9 @@ class EqualExpression : ASTNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
mixin(SHIFT_SHIFT_BODY);
|
/** */ TokenType operator;
|
||||||
|
/** */ ShiftExpression left;
|
||||||
|
/** */ ShiftExpression right;
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
@ -999,7 +1002,7 @@ class Expression : ASTNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
/** */ AssignExpression[] assignExpressions;
|
/** */ AssignExpression[] items;
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
@ -1140,8 +1143,7 @@ class GotoStatement : ASTNode
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
/** */ Expression expression;
|
/** */ Expression expression;
|
||||||
/** */ Token identifier;
|
/** */ Token token;
|
||||||
/** */ bool isDefault;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
@ -1182,7 +1184,9 @@ class IdentityExpression : ASTNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
mixin(SHIFT_SHIFT_BODY);
|
/** */ bool negated;
|
||||||
|
/** */ ShiftExpression left;
|
||||||
|
/** */ ShiftExpression right;
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
@ -1320,7 +1324,8 @@ class KeyValuePair : ASTNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
/** */ KeyValuePair[] keyValuePairs;
|
/** */ AssignExpression key;
|
||||||
|
/** */ AssignExpression value;
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
@ -1328,8 +1333,7 @@ class KeyValuePairs : ASTNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
/** */ AssignExpression key;
|
/** */ KeyValuePair[] keyValuePairs;
|
||||||
/** */ AssignExpression value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
@ -1433,8 +1437,8 @@ class MulExpression : ASTNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
/** */ Token operator;
|
/** */ TokenType operator;
|
||||||
/** */ UnaryExpression left;
|
/** */ MulExpression left;
|
||||||
/** */ UnaryExpression right;
|
/** */ UnaryExpression right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1445,10 +1449,8 @@ public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
/** */ Arguments allocatorArguments;
|
/** */ Arguments allocatorArguments;
|
||||||
/** */ Arguments constructorArguments;
|
/** */ Arguments constructorArguments;
|
||||||
/** */ IdentifierList identifierList;
|
/** */ BaseClassList baseClassList;
|
||||||
/** */ ClassBody ///
|
/** */ ClassBody classBody;
|
||||||
classBody;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
@ -1541,8 +1543,8 @@ class OrExpression : ASTNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
/** */ XorExpression xorExpression;
|
/** */ OrExpression left;
|
||||||
/** */ OrExpression orExpression;
|
/** */ XorExpression right;
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
@ -1550,8 +1552,8 @@ class OrOrExpression : ASTNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
/** */ OrOrExpression orOrExpression;
|
/** */ OrOrExpression left;
|
||||||
/** */ AndAndExpression andAndExpression;
|
/** */ AndAndExpression right;
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
@ -1614,8 +1616,8 @@ class PowExpression : ASTNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
/** */ UnaryExpression unaryExpression;
|
/** */ PowExpression left;
|
||||||
/** */ PowExpression powExpression;
|
/** */ UnaryExpression right;
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
@ -1650,20 +1652,19 @@ class PrimaryExpression : ASTNode
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
/** */ Token primary;
|
/** */ Token primary;
|
||||||
/** */ bool hasDot;
|
/** */ IdentifierOrTemplateInstance identifierOrTemplateInstance;
|
||||||
IdentifierOrTemplateInstance identifierOrTemplateInstance;
|
/** */ Type type;
|
||||||
Type type;
|
/** */ TypeofExpression typeofExpression;
|
||||||
TypeofExpression typeofExpression;
|
/** */ TypeidExpression typeidExpression;
|
||||||
TypeidExpression typeidExpression;
|
/** */ ArrayLiteral arrayLiteral;
|
||||||
ArrayLiteral arrayLiteral;
|
/** */ AssocArrayLiteral assocArrayLiteral;
|
||||||
AssocArrayLiteral assocArrayLiteral;
|
/** */ Expression expression;
|
||||||
Expression expression;
|
/** */ IsExpression isExpression;
|
||||||
IsExpression isExpression;
|
/** */ LambdaExpression lambdaExpression;
|
||||||
LambdaExpression lambdaExpression;
|
/** */ FunctionLiteralExpression functionLiteralExpression;
|
||||||
FunctionLiteralExpression functionLiteralExpression;
|
/** */ TraitsExpression traitsExpression;
|
||||||
TraitsExpression traitsExpression;
|
/** */ MixinExpression mixinExpression;
|
||||||
MixinExpression mixinExpression;
|
/** */ ImportExpression importExpression;
|
||||||
ImportExpression importExpression;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
@ -1681,7 +1682,9 @@ class RelExpression : ASTNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
mixin(SHIFT_SHIFT_BODY);
|
/** */ TokenType operator;
|
||||||
|
/** */ RelExpression left;
|
||||||
|
/** */ ShiftExpression right;
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
@ -1722,9 +1725,9 @@ class ShiftExpression : ASTNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mixin(DEFAULT_ACCEPT);
|
mixin(DEFAULT_ACCEPT);
|
||||||
/** */ AddExpression addExpression;
|
/** */ TokenType operator;
|
||||||
/** */ ShiftExpression shiftExpression;
|
/** */ ShiftExpression left;
|
||||||
/** */ Token operator;
|
/** */ AddExpression right;
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
|
||||||
|
|
@ -2220,7 +2220,7 @@ private:
|
||||||
|
|
||||||
// For now a private helper that is tailored to the way lexer works
|
// For now a private helper that is tailored to the way lexer works
|
||||||
// hides away forwardness of range by buffering
|
// hides away forwardness of range by buffering
|
||||||
// RA-version is strightforward thin wrapping
|
// random-access version is a strightforward thin wrapping
|
||||||
// ATM it is byte-oriented
|
// ATM it is byte-oriented
|
||||||
private struct LexSource(R)
|
private struct LexSource(R)
|
||||||
if(isForwardRange!R && !isRandomAccessRange!R)
|
if(isForwardRange!R && !isRandomAccessRange!R)
|
||||||
|
|
@ -3038,8 +3038,7 @@ struct StringCache
|
||||||
index = new Slot*[startSize];
|
index = new Slot*[startSize];
|
||||||
}
|
}
|
||||||
|
|
||||||
string get(R)(R range)
|
string get(R)(R range) if (isRandomAccessRange!R
|
||||||
if(isRandomAccessRange!R
|
|
||||||
&& is(Unqual!(ElementType!R) : const(ubyte)))
|
&& is(Unqual!(ElementType!R) : const(ubyte)))
|
||||||
{
|
{
|
||||||
uint h = hash(range);
|
uint h = hash(range);
|
||||||
|
|
@ -3052,7 +3051,7 @@ struct StringCache
|
||||||
uniqueSlots++;
|
uniqueSlots++;
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
for(;;)
|
while (true)
|
||||||
{
|
{
|
||||||
if(s.hash == h && s.value.equal(range))
|
if(s.hash == h && s.value.equal(range))
|
||||||
return s.value;
|
return s.value;
|
||||||
|
|
|
||||||
693
std/d/parser.d
693
std/d/parser.d
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue