Mercurial > vim
annotate runtime/syntax/antlr.vim @ 35039:fbdb6aeca2e2
runtime(java): Improve the recognition of the "style" method declarations
Commit: https://github.com/vim/vim/commit/a4c085a3e607bd01d34e1db600b6460fc35fb0a3
Author: Aliaksei Budavei <0x000c70@gmail.com>
Date: Wed Apr 24 21:04:25 2024 +0200
runtime(java): Improve the recognition of the "style" method declarations
- Request the new regexp engine (v7.3.970) for [:upper:] and
[:lower:].
- Recognise declarations of in-line annotated methods.
- Recognise declarations of _strictfp_ methods.
- Establish partial order for method modifiers as shown in
the MethodModifier production; namely, _public_ and
friends should be written the leftmost, possibly followed
by _abstract_ or _default_, or possibly followed by other
modifiers.
- Stop looking for parameterisable primitive types (void<?>,
int<Object>, etc., are malformed).
- Stop looking for arrays of _void_.
- Acknowledge the prevailing convention for method names to
begin with a small letter and for class/interface names to
begin with a capital letter; and, therefore, desist from
claiming declarations of enum constants and constructors
with javaFuncDef.
Rationale:
+ Constructor is distinct from method:
* its (overloaded) name is not arbitrary;
* its return type is implicit;
* its _throws_ clause depends on indirect vagaries of
instance (variable) initialisers;
* its invocation makes other constructors of its type
hierarchy invoked one by one, concluding with the
primordial constructor;
* its explicit invocation, via _this_ or _super_, can
only appear as the first statement in a constructor
(not anymore, see JEP 447); else, its _super_ call
cannot appear in constructors of _record_ or _enum_;
and neither invocation is allowed for the primordial
constructor;
* it is not a member of its class, like initialisers,
and is never inherited;
* it is never _abstract_ or _native_.
+ Constructor declarations tend to be few in number and
merit visual recognition from method declarations.
+ Enum constants define a fixed set of type instances
and more resemble class variable initialisers.
Note that the code duplicated for @javaFuncParams is written
keeping in mind for g:java_highlight_functions a pending 3rd
variant, which would require none of the :syn-cluster added
groups.
closes: #14620
Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 24 Apr 2024 21:15:02 +0200 |
parents | 46763b01cd9a |
children |
rev | line source |
---|---|
7 | 1 " Vim syntax file |
2 " Antlr: ANTLR, Another Tool For Language Recognition <www.antlr.org> | |
3 " Maintainer: Mathieu Clabaut <mathieu.clabaut@free.fr> | |
4 " LastChange: 02 May 2001 | |
5 " Original: Comes from JavaCC.vim | |
6 | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
7 " quit when a syntax file was already loaded |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
8 if exists("b:current_syntax") |
7 | 9 finish |
10 endif | |
11 | |
12 " This syntac file is a first attempt. It is far from perfect... | |
13 | |
14 " Uses java.vim, and adds a few special things for JavaCC Parser files. | |
15 " Those files usually have the extension *.jj | |
16 | |
17 " source the java.vim file | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
18 runtime! syntax/java.vim |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
19 unlet b:current_syntax |
7 | 20 |
21 "remove catching errors caused by wrong parenthesis (does not work in antlr | |
22 "files) (first define them in case they have not been defined in java) | |
23 syn match javaParen "--" | |
24 syn match javaParenError "--" | |
25 syn match javaInParen "--" | |
26 syn match javaError2 "--" | |
27 syn clear javaParen | |
28 syn clear javaParenError | |
29 syn clear javaInParen | |
30 syn clear javaError2 | |
31 | |
32 " remove function definitions (they look different) (first define in | |
33 " in case it was not defined in java.vim) | |
34 "syn match javaFuncDef "--" | |
35 "syn clear javaFuncDef | |
36 "syn match javaFuncDef "[a-zA-Z][a-zA-Z0-9_. \[\]]*([^-+*/()]*)[ \t]*:" contains=javaType | |
37 " syn region javaFuncDef start=+t[a-zA-Z][a-zA-Z0-9_. \[\]]*([^-+*/()]*,[ ]*+ end=+)[ \t]*:+ | |
38 | |
39 syn keyword antlrPackages options language buildAST | |
40 syn match antlrPackages "PARSER_END([^)]*)" | |
41 syn match antlrPackages "PARSER_BEGIN([^)]*)" | |
42 syn match antlrSpecToken "<EOF>" | |
43 " the dot is necessary as otherwise it will be matched as a keyword. | |
44 syn match antlrSpecToken ".LOOKAHEAD("ms=s+1,me=e-1 | |
45 syn match antlrSep "[|:]\|\.\." | |
46 syn keyword antlrActionToken TOKEN SKIP MORE SPECIAL_TOKEN | |
47 syn keyword antlrError DEBUG IGNORE_IN_BNF | |
48 | |
10051
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
49 hi def link antlrSep Statement |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
50 hi def link antlrPackages Statement |
7 | 51 |
52 let b:current_syntax = "antlr" | |
53 | |
54 " vim: ts=8 |