Skip to content

Commit ec2162a

Browse files
Added code: Java (#442)
* Added Java * Added Java * Added Java * Added Java
1 parent 0dea813 commit ec2162a

File tree

4 files changed

+775
-0
lines changed

4 files changed

+775
-0
lines changed

packages/keybr-code/lib/syntax.ts

+4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { Output } from "./output.ts";
99
import {
1010
grammar_cpp,
1111
grammar_html_css,
12+
grammar_java,
1213
grammar_javascript,
1314
grammar_python,
1415
grammar_regex,
@@ -49,6 +50,8 @@ export class Syntax implements EnumItem {
4950
static readonly SHELL = new Syntax("shell", "Shell", grammar_shell);
5051
static readonly REGEX = new Syntax("regex", "Regex", grammar_regex);
5152

53+
static readonly JAVA = new Syntax("java", "Java", grammar_java);
54+
5255
static readonly ALL = new Enum<Syntax>(
5356
Syntax.HTML,
5457
Syntax.CSS,
@@ -61,6 +64,7 @@ export class Syntax implements EnumItem {
6164
Syntax.RUST,
6265
Syntax.SHELL,
6366
Syntax.REGEX,
67+
Syntax.JAVA,
6468
);
6569

6670
readonly id: string;

packages/keybr-code/lib/syntax/grammars.ts

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import _ident from "./_ident.ts";
33
import _keywords from "./_keywords.ts";
44
import lang_cpp from "./lang_cpp.ts";
55
import lang_html_css from "./lang_html_css.ts";
6+
import lang_java from "./lang_java.ts";
67
import lang_javascript from "./lang_javascript.ts";
78
import lang_python from "./lang_python.ts";
89
import lang_regex from "./lang_regex.ts";
@@ -18,3 +19,4 @@ export const grammar_python = compose(lang_python, _keywords, _ident);
1819
export const grammar_rust = compose(lang_rust, _keywords, _ident);
1920
export const grammar_shell = compose(lang_shell);
2021
export const grammar_regex = compose(lang_regex);
22+
export const grammar_java = compose(lang_java);
+134
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
start -> java_statement ;
2+
3+
java_statement ->
4+
class_declaration
5+
| interface_declaration
6+
| enum_declaration
7+
| method_signature
8+
| variable_declaration
9+
| comment
10+
;
11+
12+
class_declaration -> kw_class _ java_type_name _ "{" _ class_body _ "}" ;
13+
14+
class_body -> class_member [ _ ";" _ class_member ] ;
15+
16+
class_member ->
17+
[ access_modifier _ ]
18+
[ kw_static _ ]
19+
[ kw_final _ ]
20+
[ [ kw_private | kw_public | kw_protected ] _ ]
21+
method_signature
22+
| variable_declaration
23+
;
24+
25+
method_signature ->
26+
[ access_modifier _ ]
27+
[ kw_static _ ]
28+
[ kw_final _ ]
29+
return_type _ java_method_name "(" _ parameter_list ")" ;
30+
31+
return_type -> kw_void | java_type ;
32+
33+
parameter_list -> [ parameter [ _ "," _ parameter ] ] ;
34+
35+
parameter -> java_type _ java_variable_name ;
36+
37+
variable_declaration ->
38+
[ kw_final _ ]
39+
java_type _ java_variable_name [ _ "=" _ java_expression ] ";" ;
40+
41+
java_type -> kw_int | kw_string | kw_boolean | kw_double | kw_float | kw_char | kw_long | kw_short | kw_byte | kw_void | java_reference_type ;
42+
43+
java_reference_type -> class_type | interface_type | array_type ;
44+
45+
class_type -> java_type_name ;
46+
47+
interface_type -> kw_interface _ java_type_name ;
48+
49+
array_type -> java_type "[]" ;
50+
51+
java_expression ->
52+
java_variable_name
53+
| java_literal
54+
| java_method_call
55+
;
56+
57+
java_literal ->
58+
java_number_literal
59+
| java_string_literal
60+
| java_boolean_literal
61+
;
62+
63+
java_number_literal -> "0" | "1" | "2" | "42" | "100" | "200" | "404" ;
64+
65+
java_string_literal -> "\"" "\"" ;
66+
67+
java_boolean_literal -> "true" | "false" ;
68+
69+
java_method_call -> java_variable_name "(" _ argument_list ")" ;
70+
71+
argument_list -> [ java_expression [ _ "," _ java_expression ] ] ;
72+
73+
java_variable_name -> "x" | "y" | "z" | "result" | "data" | "input" ;
74+
75+
java_method_name -> "main" | "calculate" | "setValue" | "getResult" ;
76+
77+
java_type_name -> "String" | "Integer" | "Double" | "Float" | "Object" | "CustomType" ;
78+
79+
interface_declaration -> kw_interface _ java_type_name _ "{" _ interface_body _ "}" ;
80+
81+
interface_body -> interface_method_signature [ _ ";" _ interface_method_signature ] ;
82+
83+
interface_method_signature -> [ kw_static _ ] return_type _ java_method_name "(" _ parameter_list ")" ;
84+
85+
enum_declaration -> kw_enum _ java_type_name _ "{" _ enum_member_list _ "}" ;
86+
87+
enum_member_list -> enum_member [ _ "," _ enum_member ] ;
88+
89+
enum_member -> java_variable_name [ _ "=" _ java_expression ] ;
90+
91+
access_modifier -> kw_public | kw_private | kw_protected ;
92+
93+
comment ->
94+
single_line_comment
95+
| multi_line_comment
96+
| javadoc_comment
97+
;
98+
99+
single_line_comment -> "//" _ comment_text ;
100+
101+
multi_line_comment -> "/*" _ comment_text _ "*/" ;
102+
103+
javadoc_comment -> "/**" _ comment_text _ "*/" ;
104+
105+
comment_text ->
106+
"Method to calculate the result"
107+
| "TODO: Improve performance"
108+
| "This is a constructor"
109+
| "@param description"
110+
| "@returns description"
111+
| "@throws exception"
112+
| "@deprecated Use alternative method"
113+
;
114+
115+
kw_class -> "class" ;
116+
kw_interface -> "interface" ;
117+
kw_enum -> "enum" ;
118+
kw_static -> "static" ;
119+
kw_final -> "final" ;
120+
kw_private -> "private" ;
121+
kw_public -> "public" ;
122+
kw_protected -> "protected" ;
123+
kw_void -> "void" ;
124+
kw_int -> "int" ;
125+
kw_string -> "String" ;
126+
kw_boolean -> "boolean" ;
127+
kw_double -> "double" ;
128+
kw_float -> "float" ;
129+
kw_char -> "char" ;
130+
kw_long -> "long" ;
131+
kw_short -> "short" ;
132+
kw_byte -> "byte" ;
133+
kw_return -> "return" ;
134+
kw_this -> "this" ;

0 commit comments

Comments
 (0)