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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1 " Vim syntax file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2 " Antlr: ANTLR, Another Tool For Language Recognition <www.antlr.org>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3 " Maintainer: Mathieu Clabaut <mathieu.clabaut@free.fr>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 " LastChange: 02 May 2001
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5 " Original: Comes from JavaCC.vim
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
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
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 finish
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 " This syntac file is a first attempt. It is far from perfect...
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 " Uses java.vim, and adds a few special things for JavaCC Parser files.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15 " Those files usually have the extension *.jj
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
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
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 "remove catching errors caused by wrong parenthesis (does not work in antlr
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 "files) (first define them in case they have not been defined in java)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 syn match javaParen "--"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 syn match javaParenError "--"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25 syn match javaInParen "--"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 syn match javaError2 "--"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 syn clear javaParen
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 syn clear javaParenError
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29 syn clear javaInParen
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 syn clear javaError2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 " remove function definitions (they look different) (first define in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 " in case it was not defined in java.vim)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34 "syn match javaFuncDef "--"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35 "syn clear javaFuncDef
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 "syn match javaFuncDef "[a-zA-Z][a-zA-Z0-9_. \[\]]*([^-+*/()]*)[ \t]*:" contains=javaType
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 " syn region javaFuncDef start=+t[a-zA-Z][a-zA-Z0-9_. \[\]]*([^-+*/()]*,[ ]*+ end=+)[ \t]*:+
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 syn keyword antlrPackages options language buildAST
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40 syn match antlrPackages "PARSER_END([^)]*)"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 syn match antlrPackages "PARSER_BEGIN([^)]*)"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 syn match antlrSpecToken "<EOF>"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 " the dot is necessary as otherwise it will be matched as a keyword.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 syn match antlrSpecToken ".LOOKAHEAD("ms=s+1,me=e-1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 syn match antlrSep "[|:]\|\.\."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 syn keyword antlrActionToken TOKEN SKIP MORE SPECIAL_TOKEN
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47 syn keyword antlrError DEBUG IGNORE_IN_BNF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
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
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52 let b:current_syntax = "antlr"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54 " vim: ts=8