Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

updated statements in parser for constant declarations. #29

Merged
merged 2 commits into from
May 15, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
196 changes: 158 additions & 38 deletions lib/src/parser/parser.dart
Original file line number Diff line number Diff line change
Expand Up @@ -303,46 +303,156 @@ class Parser {
//Start of parsers for Statements==================================================
//=================================================================================
//=================================================================================


LocalVariableType parseLocalVariableType()
//
LocalVariableInitializer parseLocalVariableInitializer()
{
int startPos = _position;
LocalVariableType output = LocalVariableType(List());
output.value.add(parseType());
return output;
var tmpExp = ParseExpression();
var output = LocalVariableInitializer(List());
if (tmpExp != null)
{
output.value.add(tmpExp);
_position++;
}
}

LocalVariableDeclarator parseLocalVariableDeclarator()
{
var startPos = _position;
var output = LocalVariableDeclarator(List());
if (_tokens[_position].type == TokenType.identifier)
{
output.value.add(_tokens[_position]);
_position++;
if (_tokens[_position].value == '=')
{
output.value.add(_tokens[_position]);
_position++;
var tmpLocVarInit = parseLocalVariableInitializer();
}
else
{
return output;
}
}
_position = startPos;
return null;
}

LocalVariableDeclarators parseLocalVariableDeclarators()
{
var startPos = _position;
var output = LocalVariableDeclarators(List());
var tmpVarDec = parseLocalVariableDeclarator();
if (tmpVarDec != null)
{
output.value.add(tmpVarDec);
_position++;
if (_tokens[_position].value == ',')
{
output.value.add(_tokens[_position]);
_position++;
var moretmpVarDec = parseLocalVariableDeclarators();
if (moretmpVarDec != null)
{
output.value.add(moretmpVarDec);
_position++;
return output;
}
_position = startPos;
return null;
}
else
{
return output;
}
}
_position = startPos;
return null;
}


LocalVariableType parseLocalVariableType()
{
var startPos = _position;
var output = LocalVariableType(List());
var tmpType = parseType();
if (tmpType != null)
{
output.value.add(tmpType);
_position++;
return output;
}
_position = startPos;
return null;
}

LocalVariableDeclaration parseLocalVariableDeclaration()
{
int startPos = _position;
LocalVariableDeclaration output = LocalVariableDeclaration(List());
LocalVariableType newLocalVarType = parseLocalVariableType();
if (LocalVariableType != null)
var startPos = _position;
var output = LocalVariableDeclaration(List());
var newLocalVarType = parseLocalVariableType();
if (newLocalVarType != null)
{
output.value.add(newLocalVarType);
_position++;
LocalVariableDeclarator newLocalVarDec = parseLocalVariableDeclarator();
output.value.add(newLocalVarDec);
var newLocalVarDec = parseLocalVariableDeclarators();
if (newLocalVarDec != null)
{
output.value.add(newLocalVarDec);
_position++;
return output;
}
_position = startPos;
return null;
}
_position = startPos;
return null;
}

ConstantDeclaration parseConstantDeclaration()
{
var startPos = _position;
var output = ConstantDeclaration(List());
if (_tokens[_position].value == "const")
{
output.value.add(_tokens[_position]);
_position++;
if (_tokens[_position].type == TokenType.identifier)
{
output.value.add(_tokens[_position]);
_position++;
if (_tokens[_position].value == "=")
{
output.value.add(_tokens[_position]);
_position++;
var tmpExpr = ParseExpression();
if (tmpExpr != null)
{
output.value.add(tmpExpr);
_position++;
return output;
}
_position = startPos;
return null;
}
_position = startPos;
return null;
}
_position = startPos;
return null;
}
_position++;
_position = startPos;
return null;
}

parseConstantDeclaration

//====================================================================
//top level parsers for Statements====================================
//====================================================================

LabeledStatement parseLabeledStatement()
{
int startPos = _position;
LabeledStatement output = LabeledStatement(List());
var startPos = _position;
var output = LabeledStatement(List());
if (_tokens[_position].type == TokenType.identifier)
{
output.value.add(_tokens[_position]);
Expand All @@ -358,32 +468,41 @@ class Parser {
_position++;
return output;
}
_position = startPos;
return null;
}
_position = startPos;
return null;
}
_position = startPos;
return null;
}

DeclarationStatement parseDeclarationStatement()
{
// DeclarationStatement output;
// var tmp = parseLocalVariableDeclaration();
// if (tmp != null && _tokens[_position + 1].value == ';')
// {
// output.value.add(tmp);
// _position++;
// output.value.add(_tokens[_position]);
// _position++;
// }
// else
// {
// var tmp = parseConstantDeclaration();
// if ()
// output.value.add(parseLocalVariableDeclaration());
// _position++;
// output.value.add(_tokens[_position]);
// _position++;
// }
// return output;
var startPos = _position;
var output = DeclarationStatement(List());
var tmp = parseLocalVariableDeclaration();
if (tmp != null && _tokens[_position].value == ';')
{
output.value.add(tmp);
output.value.add(_tokens[_position]);
_position++;
return output;
}
else
{
var tmp = parseConstantDeclaration();
if (tmp != null && _tokens[_position].value == ';')
{
output.value.add(tmp);
output.value.add(_tokens[_position]);
_position++;
return output;
}
}
_position = startPos;
return null;
}

//Done
Expand Down Expand Up @@ -709,6 +828,7 @@ class Parser {
}
}
}

}

//====================================================================
Expand Down Expand Up @@ -852,7 +972,7 @@ class Parser {
NOT SUPPORTED:
alias
element access not supported because there is no array support
'base' keyword
'base' keyword
post decrement and increment
anonymous object creation
delegate
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
import '../declaration_statement.dart';
// import '../../statement.dart';

enum ConstantDeclarationTypes {
constant_declarator,
}
// enum ConstantDeclarationTypes {
// constant_declarator,
// }

class ConstantDeclaration implements DeclarationStatement {

ConstantDeclaration(
this._value,
): super();

static final DeclarationStatementType _type = DeclarationStatementType.local_constant_declaration;
static final DeclarationStatementType _type = DeclarationStatementType.constant_declaration;
final List _value;

@override
Object get type {
assert(_type == DeclarationStatementType.local_constant_declaration);
assert(_type == DeclarationStatementType.constant_declaration);
return _type;
}

Expand Down
2 changes: 1 addition & 1 deletion lib/src/statements/variants/declaration_statement.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ enum DeclarationStatementType {
constant_declaration,
}

abstract class DeclarationStatement implements Statement {
class DeclarationStatement implements Statement {

DeclarationStatement(
this._value,
Expand Down
3 changes: 3 additions & 0 deletions lib/statement.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ export 'src/statements/variants/DeclarationStatementVariants/LocalVariableDeclar
//src/statements/variants/DeclarationStatementVariants/LocalVariableDeclarationVariants/LocalVariableDeclaratorsVariants/
export 'src/statements/variants/DeclarationStatementVariants/LocalVariableDeclarationVariants/LocalVariableDeclaratorsVariants/local_variable_declarator.dart';

//src/statements/variants/DeclarationStatementVariants/LocalVariableDeclarationVariants/LocalVariableDeclaratorsVariants/LocalVariableDeclaratorVariants
export 'src/statements/variants/DeclarationStatementVariants/LocalVariableDeclarationVariants/LocalVariableDeclaratorsVariants/LocalVariableDeclaratorVariants/local_variable_initializer.dart';

/////=====================================================================================
/////======================EMBEDDEDSTATEMENTS==========================================
/// /////=====================================================================================
Expand Down