mirror of
https://github.com/ilyakooo0/intellij-haskell.git
synced 2024-09-11 14:56:19 +03:00
Improved parser.
This commit is contained in:
parent
5dab09f979
commit
990a07c112
@ -31,8 +31,6 @@ public class HaskellParser implements PsiParser, LightPsiParser {
|
||||
r = cdecls(b, 0);
|
||||
} else if (t == HS_CFILES_PRAGMA) {
|
||||
r = cfiles_pragma(b, 0);
|
||||
} else if (t == HS_CIDECL_EXPRESSION) {
|
||||
r = cidecl_expression(b, 0);
|
||||
} else if (t == HS_CIDECLS) {
|
||||
r = cidecls(b, 0);
|
||||
} else if (t == HS_CLASS_DECLARATION) {
|
||||
@ -1047,7 +1045,7 @@ public class HaskellParser implements PsiParser, LightPsiParser {
|
||||
|
||||
/* ********************************************************** */
|
||||
// inlinelike_pragma | specialize_pragma | instance_declaration | default_declaration |
|
||||
// newtype_declaration | data_declaration | minimal_pragma | type_declaration | type_family_declaration | cidecl_expression
|
||||
// newtype_declaration | data_declaration | minimal_pragma | type_declaration | type_family_declaration | line_expression
|
||||
static boolean cidecl(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "cidecl")) return false;
|
||||
boolean r;
|
||||
@ -1060,18 +1058,7 @@ public class HaskellParser implements PsiParser, LightPsiParser {
|
||||
if (!r) r = minimal_pragma(b, l + 1);
|
||||
if (!r) r = type_declaration(b, l + 1);
|
||||
if (!r) r = type_family_declaration(b, l + 1);
|
||||
if (!r) r = cidecl_expression(b, l + 1);
|
||||
return r;
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// expression
|
||||
public static boolean cidecl_expression(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "cidecl_expression")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b, l, _NONE_, HS_CIDECL_EXPRESSION, "<cidecl expression>");
|
||||
r = expression(b, l + 1);
|
||||
exit_section_(b, l, m, r, false, null);
|
||||
if (!r) r = line_expression(b, l + 1);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
@ -10,15 +10,15 @@ public interface HaskellCdecls extends HaskellCompositeElement {
|
||||
@NotNull
|
||||
List<HaskellCdeclDataDeclaration> getCdeclDataDeclarationList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellCideclExpression> getCideclExpressionList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellDataDeclaration> getDataDeclarationList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellDefaultDeclaration> getDefaultDeclarationList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellDotDot> getDotDotList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellInlinelikePragma> getInlinelikePragmaList();
|
||||
|
||||
@ -31,9 +31,21 @@ public interface HaskellCdecls extends HaskellCompositeElement {
|
||||
@NotNull
|
||||
List<HaskellNewtypeDeclaration> getNewtypeDeclarationList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellQName> getQNameList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellReservedId> getReservedIdList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellSccPragma> getSccPragmaList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellSpecializePragma> getSpecializePragmaList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellTextLiteral> getTextLiteralList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellTypeDeclaration> getTypeDeclarationList();
|
||||
|
||||
|
@ -7,15 +7,15 @@ import java.util.List;
|
||||
|
||||
public interface HaskellCidecls extends HaskellCompositeElement {
|
||||
|
||||
@NotNull
|
||||
List<HaskellCideclExpression> getCideclExpressionList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellDataDeclaration> getDataDeclarationList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellDefaultDeclaration> getDefaultDeclarationList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellDotDot> getDotDotList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellInlinelikePragma> getInlinelikePragmaList();
|
||||
|
||||
@ -28,9 +28,21 @@ public interface HaskellCidecls extends HaskellCompositeElement {
|
||||
@NotNull
|
||||
List<HaskellNewtypeDeclaration> getNewtypeDeclarationList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellQName> getQNameList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellReservedId> getReservedIdList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellSccPragma> getSccPragmaList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellSpecializePragma> getSpecializePragmaList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellTextLiteral> getTextLiteralList();
|
||||
|
||||
@NotNull
|
||||
List<HaskellTypeDeclaration> getTypeDeclarationList();
|
||||
|
||||
|
@ -13,7 +13,6 @@ public interface HaskellTypes {
|
||||
IElementType HS_CDECL_DATA_DECLARATION = new HaskellCompositeElementType("HS_CDECL_DATA_DECLARATION");
|
||||
IElementType HS_CFILES_PRAGMA = new HaskellCompositeElementType("HS_CFILES_PRAGMA");
|
||||
IElementType HS_CIDECLS = new HaskellCompositeElementType("HS_CIDECLS");
|
||||
IElementType HS_CIDECL_EXPRESSION = new HaskellCompositeElementType("HS_CIDECL_EXPRESSION");
|
||||
IElementType HS_CLASS_DECLARATION = new HaskellCompositeElementType("HS_CLASS_DECLARATION");
|
||||
IElementType HS_CLAZZ = new HaskellCompositeElementType("HS_CLAZZ");
|
||||
IElementType HS_CNAME = new HaskellCompositeElementType("HS_CNAME");
|
||||
@ -188,8 +187,6 @@ public interface HaskellTypes {
|
||||
return new HaskellCfilesPragmaImpl(node);
|
||||
} else if (type == HS_CIDECLS) {
|
||||
return new HaskellCideclsImpl(node);
|
||||
} else if (type == HS_CIDECL_EXPRESSION) {
|
||||
return new HaskellCideclExpressionImpl(node);
|
||||
} else if (type == HS_CLASS_DECLARATION) {
|
||||
return new HaskellClassDeclarationImpl(node);
|
||||
} else if (type == HS_CLAZZ) {
|
||||
|
@ -22,10 +22,6 @@ public class HaskellVisitor extends PsiElementVisitor {
|
||||
visitCompositeElement(o);
|
||||
}
|
||||
|
||||
public void visitCideclExpression(@NotNull HaskellCideclExpression o) {
|
||||
visitCompositeElement(o);
|
||||
}
|
||||
|
||||
public void visitCidecls(@NotNull HaskellCidecls o) {
|
||||
visitCompositeElement(o);
|
||||
}
|
||||
|
@ -30,12 +30,6 @@ public class HaskellCdeclsImpl extends HaskellCompositeElementImpl implements Ha
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellCdeclDataDeclaration.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellCideclExpression> getCideclExpressionList() {
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellCideclExpression.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellDataDeclaration> getDataDeclarationList() {
|
||||
@ -48,6 +42,12 @@ public class HaskellCdeclsImpl extends HaskellCompositeElementImpl implements Ha
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellDefaultDeclaration.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellDotDot> getDotDotList() {
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellDotDot.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellInlinelikePragma> getInlinelikePragmaList() {
|
||||
@ -72,12 +72,36 @@ public class HaskellCdeclsImpl extends HaskellCompositeElementImpl implements Ha
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellNewtypeDeclaration.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellQName> getQNameList() {
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellQName.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellReservedId> getReservedIdList() {
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellReservedId.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellSccPragma> getSccPragmaList() {
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellSccPragma.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellSpecializePragma> getSpecializePragmaList() {
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellSpecializePragma.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellTextLiteral> getTextLiteralList() {
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellTextLiteral.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellTypeDeclaration> getTypeDeclarationList() {
|
||||
|
@ -1,33 +0,0 @@
|
||||
// This is a generated file. Not intended for manual editing.
|
||||
package intellij.haskell.psi.impl;
|
||||
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.psi.PsiElementVisitor;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import intellij.haskell.psi.HaskellCideclExpression;
|
||||
import intellij.haskell.psi.HaskellExpression;
|
||||
import intellij.haskell.psi.HaskellVisitor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class HaskellCideclExpressionImpl extends HaskellCompositeElementImpl implements HaskellCideclExpression {
|
||||
|
||||
public HaskellCideclExpressionImpl(ASTNode node) {
|
||||
super(node);
|
||||
}
|
||||
|
||||
public void accept(@NotNull HaskellVisitor visitor) {
|
||||
visitor.visitCideclExpression(this);
|
||||
}
|
||||
|
||||
public void accept(@NotNull PsiElementVisitor visitor) {
|
||||
if (visitor instanceof HaskellVisitor) accept((HaskellVisitor) visitor);
|
||||
else super.accept(visitor);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public HaskellExpression getExpression() {
|
||||
return notNullChild(PsiTreeUtil.getChildOfType(this, HaskellExpression.class));
|
||||
}
|
||||
|
||||
}
|
@ -24,12 +24,6 @@ public class HaskellCideclsImpl extends HaskellCompositeElementImpl implements H
|
||||
else super.accept(visitor);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellCideclExpression> getCideclExpressionList() {
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellCideclExpression.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellDataDeclaration> getDataDeclarationList() {
|
||||
@ -42,6 +36,12 @@ public class HaskellCideclsImpl extends HaskellCompositeElementImpl implements H
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellDefaultDeclaration.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellDotDot> getDotDotList() {
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellDotDot.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellInlinelikePragma> getInlinelikePragmaList() {
|
||||
@ -66,12 +66,36 @@ public class HaskellCideclsImpl extends HaskellCompositeElementImpl implements H
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellNewtypeDeclaration.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellQName> getQNameList() {
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellQName.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellReservedId> getReservedIdList() {
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellReservedId.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellSccPragma> getSccPragmaList() {
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellSccPragma.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellSpecializePragma> getSpecializePragmaList() {
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellSpecializePragma.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellTextLiteral> getTextLiteralList() {
|
||||
return PsiTreeUtil.getChildrenOfTypeAsList(this, HaskellTextLiteral.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<HaskellTypeDeclaration> getTypeDeclarationList() {
|
||||
|
@ -264,8 +264,7 @@ cdecl_data_declaration ::= DATA (onls ctype_pragma)? onls (LEFT_PAREN onls
|
||||
private cdecl ::= type_signature | cdecl_data_declaration | cidecl
|
||||
|
||||
private cidecl ::= inlinelike_pragma | specialize_pragma | instance_declaration | default_declaration |
|
||||
newtype_declaration | data_declaration | minimal_pragma | type_declaration | type_family_declaration | cidecl_expression
|
||||
cidecl_expression ::= expression
|
||||
newtype_declaration | data_declaration | minimal_pragma | type_declaration | type_family_declaration | line_expression
|
||||
|
||||
expression ::= line_expression (nls line_expression)*
|
||||
private line_expression ::= general_id+
|
||||
|
Loading…
Reference in New Issue
Block a user