Grammar progress

This commit is contained in:
Hackerpilot 2013-04-15 00:49:53 -07:00
parent 68abc32b69
commit efe475e18d
1 changed files with 59 additions and 7 deletions

66
d.grm
View File

@ -117,7 +117,16 @@ intLiteral = {Digit}+
<Statements> ::= <Statement> <Statements> ::= <Statement>
| <Statement> <Statements> | <Statement> <Statements>
<Statement> ::= <IfStatement> <Statement> ::= ';'
| <NonEmptyStatement>
| <BlockStatement>
<NonEmptyStatement> ::= <NonEmptyStatementNoCaseNoDefault>
| <CaseStatement>
| <CaseRangeStatement>
| <DefaultStatement>
<NonEmptyStatementNoCaseNoDefault> ::= <IfStatement>
| <WhileStatement> | <WhileStatement>
| <DoStatement> | <DoStatement>
| <ScopeStatement> | <ScopeStatement>
@ -127,9 +136,6 @@ intLiteral = {Digit}+
| <ReturnStatement> | <ReturnStatement>
| <SwitchStatement> | <SwitchStatement>
| <FinalSwitchStatement> | <FinalSwitchStatement>
| <CaseStatement>
| <CaseRangeStatement>
| <DefaultStatement>
| <ContinueStatement> | <ContinueStatement>
| <BreakStatement> | <BreakStatement>
| <GotoStatement> | <GotoStatement>
@ -141,11 +147,18 @@ intLiteral = {Digit}+
<FinalSwitchStatement> ::= 'final' <SwitchStatement> <FinalSwitchStatement> ::= 'final' <SwitchStatement>
<CaseStatement> ::= 'case' <ArgumentList> ':' <ScopeStatementList> <CaseStatement> ::= 'case' <ArgumentList> ':' <StatementListNoCaseNoDefault>
<CaseRangeStatement> ::= 'case' <AssignExpression> ':' '...' 'case' <AssignExpression> ':' <ScopeStatementList> <CaseRangeStatement> ::= 'case' <AssignExpression> ':' '...' 'case' <AssignExpression> ':' <StatementListNoCaseNoDefault>
<DefaultStatement> ::= 'default' ':' <ScopeStatementList> <DefaultStatement> ::= 'default' ':' <StatementListNoCaseNoDefault>
<StatementListNoCaseNoDefault> ::= <StatementNoCaseNoDefault>
| <StatementNoCaseNoDefault> <StatementListNoCaseNoDefault>
<StatementNoCaseNoDefault> ::= ';'
| <NonEmptyStatementNoCaseNoDefault>
| <BlockStatement>
<ContinueStatement> ::= 'continue' identifier ';' <ContinueStatement> ::= 'continue' identifier ';'
| 'continue' ';' | 'continue' ';'
@ -221,6 +234,45 @@ intLiteral = {Digit}+
| 'is' '(' <Type> identifier ':' <TypeSpecialization> ',' <TemplateParameterList> ')' | 'is' '(' <Type> identifier ':' <TypeSpecialization> ',' <TemplateParameterList> ')'
| 'is' '(' <Type> identifier '==' <TypeSpecialization> ',' <TemplateParameterList> ')' | 'is' '(' <Type> identifier '==' <TypeSpecialization> ',' <TemplateParameterList> ')'
<TemplateParameterList> ::= <TemplateParameter>
| <TemplateParameter> ','
| <TemplateParameter> ',' <TemplateParameterList>
<TemplateParameter> ::= <TemplateTypeParameter>
| <TemplateValueParameter>
| <TemplateAliasParameter>
| <TemplateTupleParameter>
| <TemplateThisParameter>
<TemplateTypeParameter> ::= identifier
| identifier <TemplateTypeParameterSpecialization>
| identifier <TemplateTypeParameterDefault>
| identifier <TemplateTypeParameterSpecialization> <TemplateTypeParameterDefault>
<TemplateTypeParameterSpecialization> ::= ':' <Type>
<TemplateTypeParameterDefault> ::= '=' <Type>
<TemplateValueParameter> ::= <BasicType> <Declarator>
| <BasicType> <Declarator> <TemplateValueParameterSpecialization>
| <BasicType> <Declarator> <TemplateValueParameterDefault>
| <TemplateValueParameterDefault>
<TemplateValueParameterSpecialization> ::= ':' <ConditionalExpression>
<TemplateValueParameterDefault> ::= '=' '__FILE__'
| '=' '__MODULE__'
| '=' '__LINE__'
| '=' '__FUNCTION__'
| '=' '__PRETTY_FUNCTION__'
| '=' <AssignExpression>
<TemplateAliasParameter>::= 'alias' identifier <TemplateAliasParameterSpecializationopt>
<TemplateAliasParameterDefaultopt> alias <BasicType> <Declarator> <TemplateAliasParameterSpecializationopt> <TemplateAliasParameterDefaultopt> <TemplateAliasParameterSpecialization>::= : <Type> : <ConditionalExpression> <TemplateAliasParameterDefault>: = <Type> = <ConditionalExpression>
<TemplateThisParameter> ::= 'this' <TemplateTypeParameter>
<TypeSpecialization> ::= <Type> <TypeSpecialization> ::= <Type>
| 'struct' | 'struct'
| 'union' | 'union'