TODO + cosmetics

This commit is contained in:
Andrey Breslav
2011-01-12 19:01:43 +03:00
parent 6bf80cc084
commit cf9187623b
4 changed files with 8 additions and 3 deletions
@@ -61,6 +61,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
RANGE(JetTokens.RANGE), RANGE(JetTokens.RANGE),
SIMPLE_NAME(IDENTIFIER), SIMPLE_NAME(IDENTIFIER),
ELVIS(JetTokens.ELVIS), ELVIS(JetTokens.ELVIS),
// TODO : make same priority
WITH_TYPE_RHS(IS_KEYWORD, NOT_IS, AS_KEYWORD, COLON) { WITH_TYPE_RHS(IS_KEYWORD, NOT_IS, AS_KEYWORD, COLON) {
@Override @Override
public void parseRightHandSide(JetExpressionParsing parsing) { public void parseRightHandSide(JetExpressionParsing parsing) {
@@ -52,7 +52,7 @@ public class JetParsing extends AbstractJetParsing {
@Override @Override
protected boolean parseCallWithClosure() { protected boolean parseCallWithClosure() {
if (builderForByClause.getStackSize() > 0) { if (builderForByClause.getStackSize() > 0) {
return super.parseCallWithClosure(); return super.parseCallWithClosure();
} }
return false; return false;
} }
@@ -252,7 +252,7 @@ public class JetParsing extends AbstractJetParsing {
extenstion = true; extenstion = true;
if (TYPE_REF_FIRST.contains(tt()) if (TYPE_REF_FIRST.contains(tt())
&& !(at(IDENTIFIER) && lookahead(1) == LPAR)) { && !(at(IDENTIFIER) && lookahead(1) == LPAR)) {
// TODO: if this type is annotated with an attribute, and it is a single identifier, it is a error (decomposer [a] foo()) // TODO: if this type is annotated with an attribute, and it is a single identifier, it is an error (decomposer [a] foo())
parseTypeRef(); parseTypeRef();
// The decomposer name may appear as the last section of the type // The decomposer name may appear as the last section of the type
if (at(DOT)) { if (at(DOT)) {
@@ -1311,6 +1311,7 @@ public class JetParsing extends AbstractJetParsing {
* ; * ;
*/ */
private void parseTupleType() { private void parseTupleType() {
// TODO : prohibit (a)
assert _at(LPAR); assert _at(LPAR);
PsiBuilder.Marker tuple = mark(); PsiBuilder.Marker tuple = mark();
@@ -20,7 +20,7 @@ public class JetExpression extends JetElement {
} }
JetExpression findExpressionUnder(JetNodeType type) { protected JetExpression findExpressionUnder(JetNodeType type) {
PsiElement containerNode = findChildByType(type); PsiElement containerNode = findChildByType(type);
if (containerNode == null) return null; if (containerNode == null) return null;
@@ -24,11 +24,13 @@ WHITE_SPACE_CHAR=[\ \n\t\f]
// TODO: prohibit '$' in identifiers? // TODO: prohibit '$' in identifiers?
PLAIN_IDENTIFIER=[:jletter:] [:jletterdigit:]* PLAIN_IDENTIFIER=[:jletter:] [:jletterdigit:]*
// TODO: this one MUST allow everything accepted by the runtime // TODO: this one MUST allow everything accepted by the runtime
// TODO: Replace backticks by one backslash in the begining
ESCAPED_IDENTIFIER = `{PLAIN_IDENTIFIER}` ESCAPED_IDENTIFIER = `{PLAIN_IDENTIFIER}`
IDENTIFIER = {PLAIN_IDENTIFIER}|{ESCAPED_IDENTIFIER} IDENTIFIER = {PLAIN_IDENTIFIER}|{ESCAPED_IDENTIFIER}
FIELD_IDENTIFIER = \${IDENTIFIER} FIELD_IDENTIFIER = \${IDENTIFIER}
BLOCK_COMMENT=("/*"[^"*"]{COMMENT_TAIL})|"/*" BLOCK_COMMENT=("/*"[^"*"]{COMMENT_TAIL})|"/*"
// TODO: Wiki markup for doc comments?
DOC_COMMENT="/*""*"+("/"|([^"/""*"]{COMMENT_TAIL}))? DOC_COMMENT="/*""*"+("/"|([^"/""*"]{COMMENT_TAIL}))?
COMMENT_TAIL=([^"*"]*("*"+[^"*""/"])?)*("*"+"/")? COMMENT_TAIL=([^"*"]*("*"+[^"*""/"])?)*("*"+"/")?
EOL_COMMENT="/""/"[^\n]* EOL_COMMENT="/""/"[^\n]*
@@ -52,6 +54,7 @@ BINARY_EXPONENT=[Pp][+-]?{DIGIT}+
HEX_SIGNIFICAND={HEX_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}.|0[Xx]{HEX_DIGIT}*.{HEX_DIGIT}+ HEX_SIGNIFICAND={HEX_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}.|0[Xx]{HEX_DIGIT}*.{HEX_DIGIT}+
CHARACTER_LITERAL="'"([^\\\'\n]|{ESCAPE_SEQUENCE})*("'"|\\)? CHARACTER_LITERAL="'"([^\\\'\n]|{ESCAPE_SEQUENCE})*("'"|\\)?
// TODO: introduce symbols (e.g. 'foo) as another way to write string literals
STRING_LITERAL=\"([^\\\"\n]|{ESCAPE_SEQUENCE})*(\"|\\)? STRING_LITERAL=\"([^\\\"\n]|{ESCAPE_SEQUENCE})*(\"|\\)?
ESCAPE_SEQUENCE=\\[^\n] ESCAPE_SEQUENCE=\\[^\n]