mirror of
https://github.com/ilyakooo0/intellij-haskell.git
synced 2024-09-11 14:56:19 +03:00
Fix lexer for pragma's.
This commit is contained in:
parent
9d89c57b61
commit
e9a2ace83f
@ -3001,7 +3001,7 @@ public class HaskellParser implements PsiParser, LightPsiParser {
|
||||
}
|
||||
|
||||
/* ********************************************************** */
|
||||
// ONE_PRAGMA | PRAGMA_SEP | CHARACTER_LITERAL | STRING_LITERAL
|
||||
// ONE_PRAGMA | PRAGMA_SEP | CHARACTER_LITERAL | STRING_LITERAL | NEWLINE | DASH | HASH
|
||||
public static boolean general_pragma_content(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "general_pragma_content")) return false;
|
||||
boolean r;
|
||||
@ -3010,6 +3010,9 @@ public class HaskellParser implements PsiParser, LightPsiParser {
|
||||
if (!r) r = consumeToken(b, HS_PRAGMA_SEP);
|
||||
if (!r) r = consumeToken(b, HS_CHARACTER_LITERAL);
|
||||
if (!r) r = consumeToken(b, HS_STRING_LITERAL);
|
||||
if (!r) r = consumeToken(b, HS_NEWLINE);
|
||||
if (!r) r = consumeToken(b, HS_DASH);
|
||||
if (!r) r = consumeToken(b, HS_HASH);
|
||||
exit_section_(b, l, m, r, false, null);
|
||||
return r;
|
||||
}
|
||||
|
@ -105,6 +105,7 @@ public interface HaskellTypes {
|
||||
IElementType HS_COMMENT = new HaskellTokenType("COMMENT");
|
||||
IElementType HS_CONSYM_ID = new HaskellTokenType("CONSYM_ID");
|
||||
IElementType HS_CON_ID = new HaskellTokenType("CON_ID");
|
||||
IElementType HS_DASH = new HaskellTokenType("DASH");
|
||||
IElementType HS_DATA = new HaskellTokenType("DATA");
|
||||
IElementType HS_DECIMAL = new HaskellTokenType("DECIMAL");
|
||||
IElementType HS_DEFAULT = new HaskellTokenType("DEFAULT");
|
||||
@ -120,6 +121,7 @@ public interface HaskellTypes {
|
||||
IElementType HS_FOREIGN_EXPORT = new HaskellTokenType("FOREIGN_EXPORT");
|
||||
IElementType HS_FOREIGN_IMPORT = new HaskellTokenType("FOREIGN_IMPORT");
|
||||
IElementType HS_HADDOCK = new HaskellTokenType("HADDOCK");
|
||||
IElementType HS_HASH = new HaskellTokenType("HASH");
|
||||
IElementType HS_HEXADECIMAL = new HaskellTokenType("HEXADECIMAL");
|
||||
IElementType HS_IF = new HaskellTokenType("IF");
|
||||
IElementType HS_IMPORT = new HaskellTokenType("IMPORT");
|
||||
|
@ -219,16 +219,16 @@ nhaddock_start = {left_brace}{dash}{white_char}?{vertical_bar}
|
||||
|
||||
{character_literal} { return HS_CHARACTER_LITERAL; }
|
||||
{string_literal} { return HS_STRING_LITERAL; }
|
||||
{newline} { return HS_NEWLINE; }
|
||||
{dash} { return HS_DASH; }
|
||||
{hash} { return HS_HASH; }
|
||||
{white_space} { return com.intellij.psi.TokenType.WHITE_SPACE; }
|
||||
|
||||
({white_char}|{newline}|{unispace}])+ {
|
||||
return com.intellij.psi.TokenType.WHITE_SPACE;
|
||||
}
|
||||
|
||||
[\-a-zA-Z0-9_=]+ {
|
||||
[\-a-zA-Z0-9_=\(\)\:]+ {
|
||||
return HS_ONE_PRAGMA;
|
||||
}
|
||||
|
||||
#|\-\}|\{ {
|
||||
{left_brace}|{right_brace} {
|
||||
yybegin(YYINITIAL);
|
||||
return com.intellij.psi.TokenType.BAD_CHARACTER;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -57,7 +57,7 @@ program ::= onl shebang_line? onl file_header onl module_bod
|
||||
shebang_line ::= "#!" general_id+
|
||||
file_header ::= (pragma onl)*
|
||||
pragma ::= PRAGMA_START general_pragma_content* PRAGMA_END {pin=1}
|
||||
general_pragma_content ::= ONE_PRAGMA | PRAGMA_SEP | CHARACTER_LITERAL | STRING_LITERAL
|
||||
general_pragma_content ::= ONE_PRAGMA | PRAGMA_SEP | CHARACTER_LITERAL | STRING_LITERAL | NEWLINE | DASH | HASH
|
||||
|
||||
module_body ::= module_declaration onl body | onl body
|
||||
module_declaration ::= MODULE modid onl pragma? onl (exports onl)? WHERE
|
||||
|
@ -15,8 +15,8 @@ class HaskellHighlightingAnnotator extends Annotator {
|
||||
case psi: HaskellImportHiding => holder.createInfoAnnotation(psi, null)
|
||||
.setTextAttributes(HaskellSyntaxHighlighter.Keyword)
|
||||
case psi: HaskellPragma => holder.createInfoAnnotation(psi, null).setTextAttributes(HaskellSyntaxHighlighter.PragmaContent)
|
||||
// Option(psi.getFirstChild).foreach(c => holder.createInfoAnnotation(c, null).setTextAttributes(HaskellSyntaxHighlighter.Pragma))
|
||||
// Option(psi.getLastChild).foreach(c => holder.createInfoAnnotation(c, null).setTextAttributes(HaskellSyntaxHighlighter.Pragma))
|
||||
Option(psi.getFirstChild).foreach(c => holder.createInfoAnnotation(c, null).setTextAttributes(HaskellSyntaxHighlighter.Pragma))
|
||||
Option(psi.getLastChild).foreach(c => holder.createInfoAnnotation(c, null).setTextAttributes(HaskellSyntaxHighlighter.Pragma))
|
||||
case psi: HaskellTypeSignature => holder.createInfoAnnotation(psi.getFirstChild, null)
|
||||
.setTextAttributes(HaskellSyntaxHighlighter.FunctionName)
|
||||
case psi: HaskellStringLiteralElementImpl => holder.createInfoAnnotation(psi, null)
|
||||
|
Loading…
Reference in New Issue
Block a user