a bit more parser cleanup

This commit is contained in:
Dmitry Jemerov
2008-03-12 14:02:18 +03:00
parent cb4d37c49b
commit 8c3cee07e1
2 changed files with 20 additions and 19 deletions
@@ -97,7 +97,7 @@ public class FunctionParsing extends Parsing {
builder.advanceLexer();
}
else if (builder.getTokenType() == PyTokenTypes.LPAR) {
parseParameterSubList(builder);
parseParameterSubList();
}
else {
builder.error(", or ( or ) expected");
@@ -132,27 +132,27 @@ public class FunctionParsing extends Parsing {
parameterList.done(PyElementTypes.PARAMETER_LIST);
}
private void parseParameterSubList(PsiBuilder builder) {
LOG.assertTrue(builder.getTokenType() == PyTokenTypes.LPAR);
builder.advanceLexer();
private void parseParameterSubList() {
assertCurrentToken(PyTokenTypes.LPAR);
myBuilder.advanceLexer();
while (true) {
if (builder.getTokenType() == PyTokenTypes.IDENTIFIER) {
final PsiBuilder.Marker parameter = builder.mark();
builder.advanceLexer();
if (myBuilder.getTokenType() == PyTokenTypes.IDENTIFIER) {
final PsiBuilder.Marker parameter = myBuilder.mark();
myBuilder.advanceLexer();
parameter.done(PyElementTypes.FORMAL_PARAMETER);
}
else if (builder.getTokenType() == PyTokenTypes.LPAR) {
parseParameterSubList(builder);
else if (myBuilder.getTokenType() == PyTokenTypes.LPAR) {
parseParameterSubList();
}
if (builder.getTokenType() == PyTokenTypes.RPAR) {
builder.advanceLexer();
if (myBuilder.getTokenType() == PyTokenTypes.RPAR) {
myBuilder.advanceLexer();
break;
}
if (builder.getTokenType() != PyTokenTypes.COMMA) {
builder.error(", or ( or ) expected");
if (myBuilder.getTokenType() != PyTokenTypes.COMMA) {
myBuilder.error(", or ( or ) expected");
break;
}
builder.advanceLexer();
myBuilder.advanceLexer();
}
}
}
@@ -31,10 +31,12 @@ import com.jetbrains.python.psi.PyElementType;
*/
public class Parsing {
protected ParsingContext myContext;
protected PsiBuilder myBuilder;
private static final Logger LOG = Logger.getInstance("#com.jetbrains.python.parsing.Parsing");
protected Parsing(ParsingContext context) {
myContext = context;
myBuilder = context.getBuilder();
}
public ParsingContext getParsingContext() {
@@ -54,12 +56,11 @@ public class Parsing {
}
protected void checkMatches(final IElementType token, final String message) {
PsiBuilder builder = myContext.getBuilder();
if (builder.getTokenType() == token) {
builder.advanceLexer();
if (myBuilder.getTokenType() == token) {
myBuilder.advanceLexer();
}
else {
builder.error(message);
myBuilder.error(message);
}
}
@@ -73,6 +74,6 @@ public class Parsing {
}
protected void assertCurrentToken(final PyElementType tokenType) {
LOG.assertTrue(myContext.getBuilder().getTokenType() == tokenType);
LOG.assertTrue(myBuilder.getTokenType() == tokenType);
}
}