lol
This commit is contained in:
16
.idea/misc.xml
generated
16
.idea/misc.xml
generated
@@ -1,5 +1,21 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="ANTLRGenerationPreferences">
|
||||||
|
<option name="perGrammarGenerationSettings">
|
||||||
|
<list>
|
||||||
|
<PerGrammarGenerationSettings>
|
||||||
|
<option name="fileName" value="$PROJECT_DIR$/src/grammars/SoftwareRequirements.g4" />
|
||||||
|
<option name="autoGen" value="true" />
|
||||||
|
<option name="outputDir" value="D:\Source\JavaProjects\dsl-formal-requirements\src\main\java" />
|
||||||
|
<option name="libDir" value="" />
|
||||||
|
<option name="encoding" value="" />
|
||||||
|
<option name="pkg" value="org.lumijiez.parser" />
|
||||||
|
<option name="language" value="" />
|
||||||
|
<option name="generateVisitor" value="true" />
|
||||||
|
</PerGrammarGenerationSettings>
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="MavenProjectsManager">
|
<component name="MavenProjectsManager">
|
||||||
<option name="originalFiles">
|
<option name="originalFiles">
|
||||||
|
|||||||
@@ -3,28 +3,65 @@ grammar SoftwareRequirements;
|
|||||||
// Loser rules
|
// Loser rules
|
||||||
ID : [a-zA-Z]+ ;
|
ID : [a-zA-Z]+ ;
|
||||||
STRING : '"' ~'"'* '"' ;
|
STRING : '"' ~'"'* '"' ;
|
||||||
|
DESCRIPTION : '~' ~[~]*? '~' ;
|
||||||
WS : [ \t\r\n]+ -> skip ;
|
WS : [ \t\r\n]+ -> skip ;
|
||||||
|
INT : [0-9]+ ;
|
||||||
|
FLOAT : [0-9]+ '.' [0-9]* | '.' [0-9]+ ;
|
||||||
|
|
||||||
// Puturos rules
|
// Puturos rules
|
||||||
program : (requirement | functionSpec)+ ;
|
program : (requirementSpec | functionSpec)+ ;
|
||||||
|
|
||||||
requirement : ID ':' predicate ';' ;
|
requirementSpec : EXCLAM? ID
|
||||||
|
(':' description)?
|
||||||
|
predicate ';' ;
|
||||||
|
|
||||||
|
description : DESCRIPTION;
|
||||||
|
|
||||||
predicate : expression '=>' expression ;
|
predicate : expression '=>' expression ;
|
||||||
|
|
||||||
expression : term (logical_op term)* ;
|
expression : term (logical_op term)* ;
|
||||||
|
|
||||||
term : '(' expression ')'
|
term : '{' expression '}'
|
||||||
| STRING
|
| STRING;
|
||||||
;
|
|
||||||
|
|
||||||
logical_op : '&&' | '||' ;
|
logical_op : '&&' | '||' ;
|
||||||
|
|
||||||
functionSpec : ID'()' ':' '(' parameter_list ')' ';' ;
|
functionSpec : EXCLAM?
|
||||||
|
ID'()' ':'
|
||||||
|
description?
|
||||||
|
access_modifier?
|
||||||
|
return_types
|
||||||
|
'{' parameter_list '}' ';'
|
||||||
|
;
|
||||||
|
|
||||||
|
access_modifier : 'Access ' access_modifiers ';';
|
||||||
|
|
||||||
|
return_types : 'Return' '(' return (',' return)* ')' ';' ;
|
||||||
|
|
||||||
|
return : type ID;
|
||||||
|
|
||||||
parameter_list : parameter (',' parameter)* ;
|
parameter_list : parameter (',' parameter)* ;
|
||||||
|
|
||||||
parameter : STRING ':' STRING ;
|
parameter : STRING ':'
|
||||||
|
(STRING
|
||||||
|
| INT
|
||||||
|
| FLOAT)
|
||||||
|
;
|
||||||
|
|
||||||
|
type : 'INT'
|
||||||
|
| 'FLOAT'
|
||||||
|
| 'DOUBLE'
|
||||||
|
| 'STRING'
|
||||||
|
| 'BOOLEAN'
|
||||||
|
| 'CHAR'
|
||||||
|
| 'VOID'
|
||||||
|
;
|
||||||
|
|
||||||
|
access_modifiers : 'PUBLIC'
|
||||||
|
| 'PROTECTED'
|
||||||
|
| 'PRIVATE'
|
||||||
|
| 'DEFAULT'
|
||||||
|
;
|
||||||
|
|
||||||
// Symballs
|
// Symballs
|
||||||
LPAREN : '(' ;
|
LPAREN : '(' ;
|
||||||
@@ -34,3 +71,5 @@ SEMICOLON : ';' ;
|
|||||||
COMMA : ',' ;
|
COMMA : ',' ;
|
||||||
LBRACE : '{' ;
|
LBRACE : '{' ;
|
||||||
RBRACE : '}' ;
|
RBRACE : '}' ;
|
||||||
|
TILDE : '~' ;
|
||||||
|
EXCLAM : '!' ;
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import org.antlr.v4.runtime.tree.ParseTreeWalker;
|
|||||||
import org.lumijiez.parser.SoftwareRequirementsBaseListener;
|
import org.lumijiez.parser.SoftwareRequirementsBaseListener;
|
||||||
import org.lumijiez.parser.SoftwareRequirementsLexer;
|
import org.lumijiez.parser.SoftwareRequirementsLexer;
|
||||||
import org.lumijiez.parser.SoftwareRequirementsParser;
|
import org.lumijiez.parser.SoftwareRequirementsParser;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
|
|||||||
@@ -4,6 +4,22 @@ null
|
|||||||
'&&'
|
'&&'
|
||||||
'||'
|
'||'
|
||||||
'()'
|
'()'
|
||||||
|
'Access '
|
||||||
|
'Return'
|
||||||
|
'INT'
|
||||||
|
'FLOAT'
|
||||||
|
'DOUBLE'
|
||||||
|
'STRING'
|
||||||
|
'BOOLEAN'
|
||||||
|
'CHAR'
|
||||||
|
'VOID'
|
||||||
|
'PUBLIC'
|
||||||
|
'PROTECTED'
|
||||||
|
'PRIVATE'
|
||||||
|
'DEFAULT'
|
||||||
|
null
|
||||||
|
null
|
||||||
|
null
|
||||||
null
|
null
|
||||||
null
|
null
|
||||||
null
|
null
|
||||||
@@ -14,6 +30,8 @@ null
|
|||||||
','
|
','
|
||||||
'{'
|
'{'
|
||||||
'}'
|
'}'
|
||||||
|
'~'
|
||||||
|
'!'
|
||||||
|
|
||||||
token symbolic names:
|
token symbolic names:
|
||||||
null
|
null
|
||||||
@@ -21,9 +39,25 @@ null
|
|||||||
null
|
null
|
||||||
null
|
null
|
||||||
null
|
null
|
||||||
|
null
|
||||||
|
null
|
||||||
|
null
|
||||||
|
null
|
||||||
|
null
|
||||||
|
null
|
||||||
|
null
|
||||||
|
null
|
||||||
|
null
|
||||||
|
null
|
||||||
|
null
|
||||||
|
null
|
||||||
|
null
|
||||||
ID
|
ID
|
||||||
STRING
|
STRING
|
||||||
|
DESCRIPTION
|
||||||
WS
|
WS
|
||||||
|
INT
|
||||||
|
FLOAT
|
||||||
LPAREN
|
LPAREN
|
||||||
RPAREN
|
RPAREN
|
||||||
COLON
|
COLON
|
||||||
@@ -31,18 +65,26 @@ SEMICOLON
|
|||||||
COMMA
|
COMMA
|
||||||
LBRACE
|
LBRACE
|
||||||
RBRACE
|
RBRACE
|
||||||
|
TILDE
|
||||||
|
EXCLAM
|
||||||
|
|
||||||
rule names:
|
rule names:
|
||||||
program
|
program
|
||||||
requirement
|
requirementSpec
|
||||||
|
description
|
||||||
predicate
|
predicate
|
||||||
expression
|
expression
|
||||||
term
|
term
|
||||||
logical_op
|
logical_op
|
||||||
functionSpec
|
functionSpec
|
||||||
|
access_modifier
|
||||||
|
return_types
|
||||||
|
return
|
||||||
parameter_list
|
parameter_list
|
||||||
parameter
|
parameter
|
||||||
|
type
|
||||||
|
access_modifiers
|
||||||
|
|
||||||
|
|
||||||
atn:
|
atn:
|
||||||
[4, 1, 14, 72, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 1, 0, 1, 0, 4, 0, 21, 8, 0, 11, 0, 12, 0, 22, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 38, 8, 3, 10, 3, 12, 3, 41, 9, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 48, 8, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 5, 7, 63, 8, 7, 10, 7, 12, 7, 66, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 0, 0, 9, 0, 2, 4, 6, 8, 10, 12, 14, 16, 0, 1, 1, 0, 2, 3, 67, 0, 20, 1, 0, 0, 0, 2, 24, 1, 0, 0, 0, 4, 29, 1, 0, 0, 0, 6, 33, 1, 0, 0, 0, 8, 47, 1, 0, 0, 0, 10, 49, 1, 0, 0, 0, 12, 51, 1, 0, 0, 0, 14, 59, 1, 0, 0, 0, 16, 67, 1, 0, 0, 0, 18, 21, 3, 2, 1, 0, 19, 21, 3, 12, 6, 0, 20, 18, 1, 0, 0, 0, 20, 19, 1, 0, 0, 0, 21, 22, 1, 0, 0, 0, 22, 20, 1, 0, 0, 0, 22, 23, 1, 0, 0, 0, 23, 1, 1, 0, 0, 0, 24, 25, 5, 5, 0, 0, 25, 26, 5, 10, 0, 0, 26, 27, 3, 4, 2, 0, 27, 28, 5, 11, 0, 0, 28, 3, 1, 0, 0, 0, 29, 30, 3, 6, 3, 0, 30, 31, 5, 1, 0, 0, 31, 32, 3, 6, 3, 0, 32, 5, 1, 0, 0, 0, 33, 39, 3, 8, 4, 0, 34, 35, 3, 10, 5, 0, 35, 36, 3, 8, 4, 0, 36, 38, 1, 0, 0, 0, 37, 34, 1, 0, 0, 0, 38, 41, 1, 0, 0, 0, 39, 37, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 7, 1, 0, 0, 0, 41, 39, 1, 0, 0, 0, 42, 43, 5, 8, 0, 0, 43, 44, 3, 6, 3, 0, 44, 45, 5, 9, 0, 0, 45, 48, 1, 0, 0, 0, 46, 48, 5, 6, 0, 0, 47, 42, 1, 0, 0, 0, 47, 46, 1, 0, 0, 0, 48, 9, 1, 0, 0, 0, 49, 50, 7, 0, 0, 0, 50, 11, 1, 0, 0, 0, 51, 52, 5, 5, 0, 0, 52, 53, 5, 4, 0, 0, 53, 54, 5, 10, 0, 0, 54, 55, 5, 8, 0, 0, 55, 56, 3, 14, 7, 0, 56, 57, 5, 9, 0, 0, 57, 58, 5, 11, 0, 0, 58, 13, 1, 0, 0, 0, 59, 64, 3, 16, 8, 0, 60, 61, 5, 12, 0, 0, 61, 63, 3, 16, 8, 0, 62, 60, 1, 0, 0, 0, 63, 66, 1, 0, 0, 0, 64, 62, 1, 0, 0, 0, 64, 65, 1, 0, 0, 0, 65, 15, 1, 0, 0, 0, 66, 64, 1, 0, 0, 0, 67, 68, 5, 6, 0, 0, 68, 69, 5, 10, 0, 0, 69, 70, 5, 6, 0, 0, 70, 17, 1, 0, 0, 0, 5, 20, 22, 39, 47, 64]
|
[4, 1, 32, 126, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 1, 0, 1, 0, 4, 0, 33, 8, 0, 11, 0, 12, 0, 34, 1, 1, 3, 1, 38, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 43, 8, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 5, 4, 58, 8, 4, 10, 4, 12, 4, 61, 9, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 68, 8, 5, 1, 6, 1, 6, 1, 7, 3, 7, 73, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 79, 8, 7, 1, 7, 3, 7, 82, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 99, 8, 9, 10, 9, 12, 9, 102, 9, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 5, 11, 113, 8, 11, 10, 11, 12, 11, 116, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 0, 0, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 0, 4, 1, 0, 2, 3, 2, 0, 19, 19, 22, 23, 1, 0, 7, 13, 1, 0, 14, 17, 121, 0, 32, 1, 0, 0, 0, 2, 37, 1, 0, 0, 0, 4, 47, 1, 0, 0, 0, 6, 49, 1, 0, 0, 0, 8, 53, 1, 0, 0, 0, 10, 67, 1, 0, 0, 0, 12, 69, 1, 0, 0, 0, 14, 72, 1, 0, 0, 0, 16, 89, 1, 0, 0, 0, 18, 93, 1, 0, 0, 0, 20, 106, 1, 0, 0, 0, 22, 109, 1, 0, 0, 0, 24, 117, 1, 0, 0, 0, 26, 121, 1, 0, 0, 0, 28, 123, 1, 0, 0, 0, 30, 33, 3, 2, 1, 0, 31, 33, 3, 14, 7, 0, 32, 30, 1, 0, 0, 0, 32, 31, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 32, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 1, 1, 0, 0, 0, 36, 38, 5, 32, 0, 0, 37, 36, 1, 0, 0, 0, 37, 38, 1, 0, 0, 0, 38, 39, 1, 0, 0, 0, 39, 42, 5, 18, 0, 0, 40, 41, 5, 26, 0, 0, 41, 43, 3, 4, 2, 0, 42, 40, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 45, 3, 6, 3, 0, 45, 46, 5, 27, 0, 0, 46, 3, 1, 0, 0, 0, 47, 48, 5, 20, 0, 0, 48, 5, 1, 0, 0, 0, 49, 50, 3, 8, 4, 0, 50, 51, 5, 1, 0, 0, 51, 52, 3, 8, 4, 0, 52, 7, 1, 0, 0, 0, 53, 59, 3, 10, 5, 0, 54, 55, 3, 12, 6, 0, 55, 56, 3, 10, 5, 0, 56, 58, 1, 0, 0, 0, 57, 54, 1, 0, 0, 0, 58, 61, 1, 0, 0, 0, 59, 57, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 9, 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 62, 63, 5, 29, 0, 0, 63, 64, 3, 8, 4, 0, 64, 65, 5, 30, 0, 0, 65, 68, 1, 0, 0, 0, 66, 68, 5, 19, 0, 0, 67, 62, 1, 0, 0, 0, 67, 66, 1, 0, 0, 0, 68, 11, 1, 0, 0, 0, 69, 70, 7, 0, 0, 0, 70, 13, 1, 0, 0, 0, 71, 73, 5, 32, 0, 0, 72, 71, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 75, 5, 18, 0, 0, 75, 76, 5, 4, 0, 0, 76, 78, 5, 26, 0, 0, 77, 79, 3, 4, 2, 0, 78, 77, 1, 0, 0, 0, 78, 79, 1, 0, 0, 0, 79, 81, 1, 0, 0, 0, 80, 82, 3, 16, 8, 0, 81, 80, 1, 0, 0, 0, 81, 82, 1, 0, 0, 0, 82, 83, 1, 0, 0, 0, 83, 84, 3, 18, 9, 0, 84, 85, 5, 29, 0, 0, 85, 86, 3, 22, 11, 0, 86, 87, 5, 30, 0, 0, 87, 88, 5, 27, 0, 0, 88, 15, 1, 0, 0, 0, 89, 90, 5, 5, 0, 0, 90, 91, 3, 28, 14, 0, 91, 92, 5, 27, 0, 0, 92, 17, 1, 0, 0, 0, 93, 94, 5, 6, 0, 0, 94, 95, 5, 24, 0, 0, 95, 100, 3, 20, 10, 0, 96, 97, 5, 28, 0, 0, 97, 99, 3, 20, 10, 0, 98, 96, 1, 0, 0, 0, 99, 102, 1, 0, 0, 0, 100, 98, 1, 0, 0, 0, 100, 101, 1, 0, 0, 0, 101, 103, 1, 0, 0, 0, 102, 100, 1, 0, 0, 0, 103, 104, 5, 25, 0, 0, 104, 105, 5, 27, 0, 0, 105, 19, 1, 0, 0, 0, 106, 107, 3, 26, 13, 0, 107, 108, 5, 18, 0, 0, 108, 21, 1, 0, 0, 0, 109, 114, 3, 24, 12, 0, 110, 111, 5, 28, 0, 0, 111, 113, 3, 24, 12, 0, 112, 110, 1, 0, 0, 0, 113, 116, 1, 0, 0, 0, 114, 112, 1, 0, 0, 0, 114, 115, 1, 0, 0, 0, 115, 23, 1, 0, 0, 0, 116, 114, 1, 0, 0, 0, 117, 118, 5, 19, 0, 0, 118, 119, 5, 26, 0, 0, 119, 120, 7, 1, 0, 0, 120, 25, 1, 0, 0, 0, 121, 122, 7, 2, 0, 0, 122, 27, 1, 0, 0, 0, 123, 124, 7, 3, 0, 0, 124, 29, 1, 0, 0, 0, 11, 32, 34, 37, 42, 59, 67, 72, 78, 81, 100, 114]
|
||||||
@@ -2,24 +2,57 @@ T__0=1
|
|||||||
T__1=2
|
T__1=2
|
||||||
T__2=3
|
T__2=3
|
||||||
T__3=4
|
T__3=4
|
||||||
ID=5
|
T__4=5
|
||||||
STRING=6
|
T__5=6
|
||||||
WS=7
|
T__6=7
|
||||||
LPAREN=8
|
T__7=8
|
||||||
RPAREN=9
|
T__8=9
|
||||||
COLON=10
|
T__9=10
|
||||||
SEMICOLON=11
|
T__10=11
|
||||||
COMMA=12
|
T__11=12
|
||||||
LBRACE=13
|
T__12=13
|
||||||
RBRACE=14
|
T__13=14
|
||||||
|
T__14=15
|
||||||
|
T__15=16
|
||||||
|
T__16=17
|
||||||
|
ID=18
|
||||||
|
STRING=19
|
||||||
|
DESCRIPTION=20
|
||||||
|
WS=21
|
||||||
|
INT=22
|
||||||
|
FLOAT=23
|
||||||
|
LPAREN=24
|
||||||
|
RPAREN=25
|
||||||
|
COLON=26
|
||||||
|
SEMICOLON=27
|
||||||
|
COMMA=28
|
||||||
|
LBRACE=29
|
||||||
|
RBRACE=30
|
||||||
|
TILDE=31
|
||||||
|
EXCLAM=32
|
||||||
'=>'=1
|
'=>'=1
|
||||||
'&&'=2
|
'&&'=2
|
||||||
'||'=3
|
'||'=3
|
||||||
'()'=4
|
'()'=4
|
||||||
'('=8
|
'Access '=5
|
||||||
')'=9
|
'Return'=6
|
||||||
':'=10
|
'INT'=7
|
||||||
';'=11
|
'FLOAT'=8
|
||||||
','=12
|
'DOUBLE'=9
|
||||||
'{'=13
|
'STRING'=10
|
||||||
'}'=14
|
'BOOLEAN'=11
|
||||||
|
'CHAR'=12
|
||||||
|
'VOID'=13
|
||||||
|
'PUBLIC'=14
|
||||||
|
'PROTECTED'=15
|
||||||
|
'PRIVATE'=16
|
||||||
|
'DEFAULT'=17
|
||||||
|
'('=24
|
||||||
|
')'=25
|
||||||
|
':'=26
|
||||||
|
';'=27
|
||||||
|
','=28
|
||||||
|
'{'=29
|
||||||
|
'}'=30
|
||||||
|
'~'=31
|
||||||
|
'!'=32
|
||||||
|
|||||||
@@ -29,13 +29,25 @@ public class SoftwareRequirementsBaseListener implements SoftwareRequirementsLis
|
|||||||
*
|
*
|
||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void enterRequirement(SoftwareRequirementsParser.RequirementContext ctx) { }
|
@Override public void enterRequirementSpec(SoftwareRequirementsParser.RequirementSpecContext ctx) { }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitRequirement(SoftwareRequirementsParser.RequirementContext ctx) { }
|
@Override public void exitRequirementSpec(SoftwareRequirementsParser.RequirementSpecContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterDescription(SoftwareRequirementsParser.DescriptionContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitDescription(SoftwareRequirementsParser.DescriptionContext ctx) { }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@@ -96,6 +108,42 @@ public class SoftwareRequirementsBaseListener implements SoftwareRequirementsLis
|
|||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitFunctionSpec(SoftwareRequirementsParser.FunctionSpecContext ctx) { }
|
@Override public void exitFunctionSpec(SoftwareRequirementsParser.FunctionSpecContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterAccess_modifier(SoftwareRequirementsParser.Access_modifierContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitAccess_modifier(SoftwareRequirementsParser.Access_modifierContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterReturn_types(SoftwareRequirementsParser.Return_typesContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitReturn_types(SoftwareRequirementsParser.Return_typesContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterReturn(SoftwareRequirementsParser.ReturnContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitReturn(SoftwareRequirementsParser.ReturnContext ctx) { }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@@ -120,6 +168,30 @@ public class SoftwareRequirementsBaseListener implements SoftwareRequirementsLis
|
|||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitParameter(SoftwareRequirementsParser.ParameterContext ctx) { }
|
@Override public void exitParameter(SoftwareRequirementsParser.ParameterContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterType(SoftwareRequirementsParser.TypeContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitType(SoftwareRequirementsParser.TypeContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterAccess_modifiers(SoftwareRequirementsParser.Access_modifiersContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitAccess_modifiers(SoftwareRequirementsParser.Access_modifiersContext ctx) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
package org.lumijiez.parser;// Generated from D:/Source/JavaProjects/dsl-formal-requirements/src/grammars/SoftwareRequirements.g4 by ANTLR 4.13.1
|
// Generated from D:/Source/JavaProjects/dsl-formal-requirements/src/grammars/SoftwareRequirements.g4 by ANTLR 4.13.1
|
||||||
|
package org.lumijiez.parser;
|
||||||
import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
|
import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -24,7 +25,14 @@ public class SoftwareRequirementsBaseVisitor<T> extends AbstractParseTreeVisitor
|
|||||||
* <p>The default implementation returns the result of calling
|
* <p>The default implementation returns the result of calling
|
||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
*/
|
*/
|
||||||
@Override public T visitRequirement(SoftwareRequirementsParser.RequirementContext ctx) { return visitChildren(ctx); }
|
@Override public T visitRequirementSpec(SoftwareRequirementsParser.RequirementSpecContext ctx) { return visitChildren(ctx); }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation returns the result of calling
|
||||||
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
|
*/
|
||||||
|
@Override public T visitDescription(SoftwareRequirementsParser.DescriptionContext ctx) { return visitChildren(ctx); }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@@ -60,6 +68,27 @@ public class SoftwareRequirementsBaseVisitor<T> extends AbstractParseTreeVisitor
|
|||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
*/
|
*/
|
||||||
@Override public T visitFunctionSpec(SoftwareRequirementsParser.FunctionSpecContext ctx) { return visitChildren(ctx); }
|
@Override public T visitFunctionSpec(SoftwareRequirementsParser.FunctionSpecContext ctx) { return visitChildren(ctx); }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation returns the result of calling
|
||||||
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
|
*/
|
||||||
|
@Override public T visitAccess_modifier(SoftwareRequirementsParser.Access_modifierContext ctx) { return visitChildren(ctx); }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation returns the result of calling
|
||||||
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
|
*/
|
||||||
|
@Override public T visitReturn_types(SoftwareRequirementsParser.Return_typesContext ctx) { return visitChildren(ctx); }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation returns the result of calling
|
||||||
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
|
*/
|
||||||
|
@Override public T visitReturn(SoftwareRequirementsParser.ReturnContext ctx) { return visitChildren(ctx); }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@@ -74,4 +103,18 @@ public class SoftwareRequirementsBaseVisitor<T> extends AbstractParseTreeVisitor
|
|||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
*/
|
*/
|
||||||
@Override public T visitParameter(SoftwareRequirementsParser.ParameterContext ctx) { return visitChildren(ctx); }
|
@Override public T visitParameter(SoftwareRequirementsParser.ParameterContext ctx) { return visitChildren(ctx); }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation returns the result of calling
|
||||||
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
|
*/
|
||||||
|
@Override public T visitType(SoftwareRequirementsParser.TypeContext ctx) { return visitChildren(ctx); }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation returns the result of calling
|
||||||
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
|
*/
|
||||||
|
@Override public T visitAccess_modifiers(SoftwareRequirementsParser.Access_modifiersContext ctx) { return visitChildren(ctx); }
|
||||||
}
|
}
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,5 @@
|
|||||||
package org.lumijiez.parser;// Generated from D:/Source/JavaProjects/dsl-formal-requirements/src/grammars/SoftwareRequirements.g4 by ANTLR 4.13.1
|
// Generated from D:/Source/JavaProjects/dsl-formal-requirements/src/grammars/SoftwareRequirements.g4 by ANTLR 4.13.1
|
||||||
|
package org.lumijiez.parser;
|
||||||
import org.antlr.v4.runtime.Lexer;
|
import org.antlr.v4.runtime.Lexer;
|
||||||
import org.antlr.v4.runtime.CharStream;
|
import org.antlr.v4.runtime.CharStream;
|
||||||
import org.antlr.v4.runtime.Token;
|
import org.antlr.v4.runtime.Token;
|
||||||
@@ -16,8 +17,11 @@ public class SoftwareRequirementsLexer extends Lexer {
|
|||||||
protected static final PredictionContextCache _sharedContextCache =
|
protected static final PredictionContextCache _sharedContextCache =
|
||||||
new PredictionContextCache();
|
new PredictionContextCache();
|
||||||
public static final int
|
public static final int
|
||||||
T__0=1, T__1=2, T__2=3, T__3=4, ID=5, STRING=6, WS=7, LPAREN=8, RPAREN=9,
|
T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
|
||||||
COLON=10, SEMICOLON=11, COMMA=12, LBRACE=13, RBRACE=14;
|
T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17,
|
||||||
|
ID=18, STRING=19, DESCRIPTION=20, WS=21, INT=22, FLOAT=23, LPAREN=24,
|
||||||
|
RPAREN=25, COLON=26, SEMICOLON=27, COMMA=28, LBRACE=29, RBRACE=30, TILDE=31,
|
||||||
|
EXCLAM=32;
|
||||||
public static String[] channelNames = {
|
public static String[] channelNames = {
|
||||||
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
||||||
};
|
};
|
||||||
@@ -28,23 +32,29 @@ public class SoftwareRequirementsLexer extends Lexer {
|
|||||||
|
|
||||||
private static String[] makeRuleNames() {
|
private static String[] makeRuleNames() {
|
||||||
return new String[] {
|
return new String[] {
|
||||||
"T__0", "T__1", "T__2", "T__3", "ID", "STRING", "WS", "LPAREN", "RPAREN",
|
"T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8",
|
||||||
"COLON", "SEMICOLON", "COMMA", "LBRACE", "RBRACE"
|
"T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16",
|
||||||
|
"ID", "STRING", "DESCRIPTION", "WS", "INT", "FLOAT", "LPAREN", "RPAREN",
|
||||||
|
"COLON", "SEMICOLON", "COMMA", "LBRACE", "RBRACE", "TILDE", "EXCLAM"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
public static final String[] ruleNames = makeRuleNames();
|
public static final String[] ruleNames = makeRuleNames();
|
||||||
|
|
||||||
private static String[] makeLiteralNames() {
|
private static String[] makeLiteralNames() {
|
||||||
return new String[] {
|
return new String[] {
|
||||||
null, "'=>'", "'&&'", "'||'", "'()'", null, null, null, "'('", "')'",
|
null, "'=>'", "'&&'", "'||'", "'()'", "'Access '", "'Return'", "'INT'",
|
||||||
"':'", "';'", "','", "'{'", "'}'"
|
"'FLOAT'", "'DOUBLE'", "'STRING'", "'BOOLEAN'", "'CHAR'", "'VOID'", "'PUBLIC'",
|
||||||
|
"'PROTECTED'", "'PRIVATE'", "'DEFAULT'", null, null, null, null, null,
|
||||||
|
null, "'('", "')'", "':'", "';'", "','", "'{'", "'}'", "'~'", "'!'"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
||||||
private static String[] makeSymbolicNames() {
|
private static String[] makeSymbolicNames() {
|
||||||
return new String[] {
|
return new String[] {
|
||||||
null, null, null, null, null, "ID", "STRING", "WS", "LPAREN", "RPAREN",
|
null, null, null, null, null, null, null, null, null, null, null, null,
|
||||||
"COLON", "SEMICOLON", "COMMA", "LBRACE", "RBRACE"
|
null, null, null, null, null, null, "ID", "STRING", "DESCRIPTION", "WS",
|
||||||
|
"INT", "FLOAT", "LPAREN", "RPAREN", "COLON", "SEMICOLON", "COMMA", "LBRACE",
|
||||||
|
"RBRACE", "TILDE", "EXCLAM"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
||||||
@@ -106,53 +116,156 @@ public class SoftwareRequirementsLexer extends Lexer {
|
|||||||
public ATN getATN() { return _ATN; }
|
public ATN getATN() { return _ATN; }
|
||||||
|
|
||||||
public static final String _serializedATN =
|
public static final String _serializedATN =
|
||||||
"\u0004\u0000\u000eL\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+
|
"\u0004\u0000 \u00f0\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+
|
||||||
"\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+
|
"\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+
|
||||||
"\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+
|
"\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+
|
||||||
"\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+
|
"\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+
|
||||||
"\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0001\u0000\u0001\u0000\u0001"+
|
"\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002"+
|
||||||
|
"\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002"+
|
||||||
|
"\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002"+
|
||||||
|
"\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002"+
|
||||||
|
"\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002"+
|
||||||
|
"\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002"+
|
||||||
|
"\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0001\u0000\u0001\u0000\u0001"+
|
||||||
"\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001"+
|
"\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001"+
|
||||||
"\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0004\u0004\u0004+\b"+
|
"\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001"+
|
||||||
"\u0004\u000b\u0004\f\u0004,\u0001\u0005\u0001\u0005\u0005\u00051\b\u0005"+
|
"\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001"+
|
||||||
"\n\u0005\f\u00054\t\u0005\u0001\u0005\u0001\u0005\u0001\u0006\u0004\u0006"+
|
"\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+
|
||||||
"9\b\u0006\u000b\u0006\f\u0006:\u0001\u0006\u0001\u0006\u0001\u0007\u0001"+
|
"\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007\u0001"+
|
||||||
"\u0007\u0001\b\u0001\b\u0001\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0001"+
|
"\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b"+
|
||||||
"\u000b\u0001\f\u0001\f\u0001\r\u0001\r\u0000\u0000\u000e\u0001\u0001\u0003"+
|
"\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001"+
|
||||||
"\u0002\u0005\u0003\u0007\u0004\t\u0005\u000b\u0006\r\u0007\u000f\b\u0011"+
|
"\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+
|
||||||
"\t\u0013\n\u0015\u000b\u0017\f\u0019\r\u001b\u000e\u0001\u0000\u0003\u0002"+
|
"\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001"+
|
||||||
"\u0000AZaz\u0001\u0000\"\"\u0003\u0000\t\n\r\r N\u0000\u0001\u0001\u0000"+
|
"\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r"+
|
||||||
|
"\u0001\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001"+
|
||||||
|
"\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001"+
|
||||||
|
"\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+
|
||||||
|
"\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001"+
|
||||||
|
"\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0004"+
|
||||||
|
"\u0011\u00a9\b\u0011\u000b\u0011\f\u0011\u00aa\u0001\u0012\u0001\u0012"+
|
||||||
|
"\u0005\u0012\u00af\b\u0012\n\u0012\f\u0012\u00b2\t\u0012\u0001\u0012\u0001"+
|
||||||
|
"\u0012\u0001\u0013\u0001\u0013\u0005\u0013\u00b8\b\u0013\n\u0013\f\u0013"+
|
||||||
|
"\u00bb\t\u0013\u0001\u0013\u0001\u0013\u0001\u0014\u0004\u0014\u00c0\b"+
|
||||||
|
"\u0014\u000b\u0014\f\u0014\u00c1\u0001\u0014\u0001\u0014\u0001\u0015\u0004"+
|
||||||
|
"\u0015\u00c7\b\u0015\u000b\u0015\f\u0015\u00c8\u0001\u0016\u0004\u0016"+
|
||||||
|
"\u00cc\b\u0016\u000b\u0016\f\u0016\u00cd\u0001\u0016\u0001\u0016\u0005"+
|
||||||
|
"\u0016\u00d2\b\u0016\n\u0016\f\u0016\u00d5\t\u0016\u0001\u0016\u0001\u0016"+
|
||||||
|
"\u0004\u0016\u00d9\b\u0016\u000b\u0016\f\u0016\u00da\u0003\u0016\u00dd"+
|
||||||
|
"\b\u0016\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0019\u0001"+
|
||||||
|
"\u0019\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001c\u0001"+
|
||||||
|
"\u001c\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001f\u0001"+
|
||||||
|
"\u001f\u0001\u00b9\u0000 \u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004"+
|
||||||
|
"\t\u0005\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017"+
|
||||||
|
"\f\u0019\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013\'"+
|
||||||
|
"\u0014)\u0015+\u0016-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d"+
|
||||||
|
";\u001e=\u001f? \u0001\u0000\u0005\u0002\u0000AZaz\u0001\u0000\"\"\u0001"+
|
||||||
|
"\u0000~~\u0003\u0000\t\n\r\r \u0001\u000009\u00f8\u0000\u0001\u0001\u0000"+
|
||||||
"\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005\u0001\u0000"+
|
"\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005\u0001\u0000"+
|
||||||
"\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000"+
|
||||||
"\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000"+
|
"\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000"+
|
"\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000"+
|
"\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u001b\u0001\u0000\u0000\u0000\u0001\u001d\u0001\u0000\u0000\u0000"+
|
"\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000"+
|
||||||
"\u0003 \u0001\u0000\u0000\u0000\u0005#\u0001\u0000\u0000\u0000\u0007&"+
|
"\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\t*\u0001\u0000\u0000\u0000\u000b.\u0001\u0000"+
|
"#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001"+
|
||||||
"\u0000\u0000\r8\u0001\u0000\u0000\u0000\u000f>\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000"+
|
||||||
"\u0011@\u0001\u0000\u0000\u0000\u0013B\u0001\u0000\u0000\u0000\u0015D"+
|
"\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u0017F\u0001\u0000\u0000\u0000\u0019H\u0001\u0000"+
|
"1\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001"+
|
||||||
"\u0000\u0000\u001bJ\u0001\u0000\u0000\u0000\u001d\u001e\u0005=\u0000\u0000"+
|
"\u0000\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000"+
|
||||||
"\u001e\u001f\u0005>\u0000\u0000\u001f\u0002\u0001\u0000\u0000\u0000 !"+
|
"\u0000\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000"+
|
||||||
"\u0005&\u0000\u0000!\"\u0005&\u0000\u0000\"\u0004\u0001\u0000\u0000\u0000"+
|
"?\u0001\u0000\u0000\u0000\u0001A\u0001\u0000\u0000\u0000\u0003D\u0001"+
|
||||||
"#$\u0005|\u0000\u0000$%\u0005|\u0000\u0000%\u0006\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\u0005G\u0001\u0000\u0000\u0000\u0007J\u0001\u0000\u0000"+
|
||||||
"&\'\u0005(\u0000\u0000\'(\u0005)\u0000\u0000(\b\u0001\u0000\u0000\u0000"+
|
"\u0000\tM\u0001\u0000\u0000\u0000\u000bU\u0001\u0000\u0000\u0000\r\\\u0001"+
|
||||||
")+\u0007\u0000\u0000\u0000*)\u0001\u0000\u0000\u0000+,\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000\u000f`\u0001\u0000\u0000\u0000\u0011f\u0001\u0000\u0000"+
|
||||||
"\u0000,*\u0001\u0000\u0000\u0000,-\u0001\u0000\u0000\u0000-\n\u0001\u0000"+
|
"\u0000\u0013m\u0001\u0000\u0000\u0000\u0015t\u0001\u0000\u0000\u0000\u0017"+
|
||||||
"\u0000\u0000.2\u0005\"\u0000\u0000/1\b\u0001\u0000\u00000/\u0001\u0000"+
|
"|\u0001\u0000\u0000\u0000\u0019\u0081\u0001\u0000\u0000\u0000\u001b\u0086"+
|
||||||
"\u0000\u000014\u0001\u0000\u0000\u000020\u0001\u0000\u0000\u000023\u0001"+
|
"\u0001\u0000\u0000\u0000\u001d\u008d\u0001\u0000\u0000\u0000\u001f\u0097"+
|
||||||
"\u0000\u0000\u000035\u0001\u0000\u0000\u000042\u0001\u0000\u0000\u0000"+
|
"\u0001\u0000\u0000\u0000!\u009f\u0001\u0000\u0000\u0000#\u00a8\u0001\u0000"+
|
||||||
"56\u0005\"\u0000\u00006\f\u0001\u0000\u0000\u000079\u0007\u0002\u0000"+
|
"\u0000\u0000%\u00ac\u0001\u0000\u0000\u0000\'\u00b5\u0001\u0000\u0000"+
|
||||||
"\u000087\u0001\u0000\u0000\u00009:\u0001\u0000\u0000\u0000:8\u0001\u0000"+
|
"\u0000)\u00bf\u0001\u0000\u0000\u0000+\u00c6\u0001\u0000\u0000\u0000-"+
|
||||||
"\u0000\u0000:;\u0001\u0000\u0000\u0000;<\u0001\u0000\u0000\u0000<=\u0006"+
|
"\u00dc\u0001\u0000\u0000\u0000/\u00de\u0001\u0000\u0000\u00001\u00e0\u0001"+
|
||||||
"\u0006\u0000\u0000=\u000e\u0001\u0000\u0000\u0000>?\u0005(\u0000\u0000"+
|
"\u0000\u0000\u00003\u00e2\u0001\u0000\u0000\u00005\u00e4\u0001\u0000\u0000"+
|
||||||
"?\u0010\u0001\u0000\u0000\u0000@A\u0005)\u0000\u0000A\u0012\u0001\u0000"+
|
"\u00007\u00e6\u0001\u0000\u0000\u00009\u00e8\u0001\u0000\u0000\u0000;"+
|
||||||
"\u0000\u0000BC\u0005:\u0000\u0000C\u0014\u0001\u0000\u0000\u0000DE\u0005"+
|
"\u00ea\u0001\u0000\u0000\u0000=\u00ec\u0001\u0000\u0000\u0000?\u00ee\u0001"+
|
||||||
";\u0000\u0000E\u0016\u0001\u0000\u0000\u0000FG\u0005,\u0000\u0000G\u0018"+
|
"\u0000\u0000\u0000AB\u0005=\u0000\u0000BC\u0005>\u0000\u0000C\u0002\u0001"+
|
||||||
"\u0001\u0000\u0000\u0000HI\u0005{\u0000\u0000I\u001a\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000DE\u0005&\u0000\u0000EF\u0005&\u0000\u0000F\u0004\u0001"+
|
||||||
"\u0000JK\u0005}\u0000\u0000K\u001c\u0001\u0000\u0000\u0000\u0004\u0000"+
|
"\u0000\u0000\u0000GH\u0005|\u0000\u0000HI\u0005|\u0000\u0000I\u0006\u0001"+
|
||||||
",2:\u0001\u0006\u0000\u0000";
|
"\u0000\u0000\u0000JK\u0005(\u0000\u0000KL\u0005)\u0000\u0000L\b\u0001"+
|
||||||
|
"\u0000\u0000\u0000MN\u0005A\u0000\u0000NO\u0005c\u0000\u0000OP\u0005c"+
|
||||||
|
"\u0000\u0000PQ\u0005e\u0000\u0000QR\u0005s\u0000\u0000RS\u0005s\u0000"+
|
||||||
|
"\u0000ST\u0005 \u0000\u0000T\n\u0001\u0000\u0000\u0000UV\u0005R\u0000"+
|
||||||
|
"\u0000VW\u0005e\u0000\u0000WX\u0005t\u0000\u0000XY\u0005u\u0000\u0000"+
|
||||||
|
"YZ\u0005r\u0000\u0000Z[\u0005n\u0000\u0000[\f\u0001\u0000\u0000\u0000"+
|
||||||
|
"\\]\u0005I\u0000\u0000]^\u0005N\u0000\u0000^_\u0005T\u0000\u0000_\u000e"+
|
||||||
|
"\u0001\u0000\u0000\u0000`a\u0005F\u0000\u0000ab\u0005L\u0000\u0000bc\u0005"+
|
||||||
|
"O\u0000\u0000cd\u0005A\u0000\u0000de\u0005T\u0000\u0000e\u0010\u0001\u0000"+
|
||||||
|
"\u0000\u0000fg\u0005D\u0000\u0000gh\u0005O\u0000\u0000hi\u0005U\u0000"+
|
||||||
|
"\u0000ij\u0005B\u0000\u0000jk\u0005L\u0000\u0000kl\u0005E\u0000\u0000"+
|
||||||
|
"l\u0012\u0001\u0000\u0000\u0000mn\u0005S\u0000\u0000no\u0005T\u0000\u0000"+
|
||||||
|
"op\u0005R\u0000\u0000pq\u0005I\u0000\u0000qr\u0005N\u0000\u0000rs\u0005"+
|
||||||
|
"G\u0000\u0000s\u0014\u0001\u0000\u0000\u0000tu\u0005B\u0000\u0000uv\u0005"+
|
||||||
|
"O\u0000\u0000vw\u0005O\u0000\u0000wx\u0005L\u0000\u0000xy\u0005E\u0000"+
|
||||||
|
"\u0000yz\u0005A\u0000\u0000z{\u0005N\u0000\u0000{\u0016\u0001\u0000\u0000"+
|
||||||
|
"\u0000|}\u0005C\u0000\u0000}~\u0005H\u0000\u0000~\u007f\u0005A\u0000\u0000"+
|
||||||
|
"\u007f\u0080\u0005R\u0000\u0000\u0080\u0018\u0001\u0000\u0000\u0000\u0081"+
|
||||||
|
"\u0082\u0005V\u0000\u0000\u0082\u0083\u0005O\u0000\u0000\u0083\u0084\u0005"+
|
||||||
|
"I\u0000\u0000\u0084\u0085\u0005D\u0000\u0000\u0085\u001a\u0001\u0000\u0000"+
|
||||||
|
"\u0000\u0086\u0087\u0005P\u0000\u0000\u0087\u0088\u0005U\u0000\u0000\u0088"+
|
||||||
|
"\u0089\u0005B\u0000\u0000\u0089\u008a\u0005L\u0000\u0000\u008a\u008b\u0005"+
|
||||||
|
"I\u0000\u0000\u008b\u008c\u0005C\u0000\u0000\u008c\u001c\u0001\u0000\u0000"+
|
||||||
|
"\u0000\u008d\u008e\u0005P\u0000\u0000\u008e\u008f\u0005R\u0000\u0000\u008f"+
|
||||||
|
"\u0090\u0005O\u0000\u0000\u0090\u0091\u0005T\u0000\u0000\u0091\u0092\u0005"+
|
||||||
|
"E\u0000\u0000\u0092\u0093\u0005C\u0000\u0000\u0093\u0094\u0005T\u0000"+
|
||||||
|
"\u0000\u0094\u0095\u0005E\u0000\u0000\u0095\u0096\u0005D\u0000\u0000\u0096"+
|
||||||
|
"\u001e\u0001\u0000\u0000\u0000\u0097\u0098\u0005P\u0000\u0000\u0098\u0099"+
|
||||||
|
"\u0005R\u0000\u0000\u0099\u009a\u0005I\u0000\u0000\u009a\u009b\u0005V"+
|
||||||
|
"\u0000\u0000\u009b\u009c\u0005A\u0000\u0000\u009c\u009d\u0005T\u0000\u0000"+
|
||||||
|
"\u009d\u009e\u0005E\u0000\u0000\u009e \u0001\u0000\u0000\u0000\u009f\u00a0"+
|
||||||
|
"\u0005D\u0000\u0000\u00a0\u00a1\u0005E\u0000\u0000\u00a1\u00a2\u0005F"+
|
||||||
|
"\u0000\u0000\u00a2\u00a3\u0005A\u0000\u0000\u00a3\u00a4\u0005U\u0000\u0000"+
|
||||||
|
"\u00a4\u00a5\u0005L\u0000\u0000\u00a5\u00a6\u0005T\u0000\u0000\u00a6\""+
|
||||||
|
"\u0001\u0000\u0000\u0000\u00a7\u00a9\u0007\u0000\u0000\u0000\u00a8\u00a7"+
|
||||||
|
"\u0001\u0000\u0000\u0000\u00a9\u00aa\u0001\u0000\u0000\u0000\u00aa\u00a8"+
|
||||||
|
"\u0001\u0000\u0000\u0000\u00aa\u00ab\u0001\u0000\u0000\u0000\u00ab$\u0001"+
|
||||||
|
"\u0000\u0000\u0000\u00ac\u00b0\u0005\"\u0000\u0000\u00ad\u00af\b\u0001"+
|
||||||
|
"\u0000\u0000\u00ae\u00ad\u0001\u0000\u0000\u0000\u00af\u00b2\u0001\u0000"+
|
||||||
|
"\u0000\u0000\u00b0\u00ae\u0001\u0000\u0000\u0000\u00b0\u00b1\u0001\u0000"+
|
||||||
|
"\u0000\u0000\u00b1\u00b3\u0001\u0000\u0000\u0000\u00b2\u00b0\u0001\u0000"+
|
||||||
|
"\u0000\u0000\u00b3\u00b4\u0005\"\u0000\u0000\u00b4&\u0001\u0000\u0000"+
|
||||||
|
"\u0000\u00b5\u00b9\u0005~\u0000\u0000\u00b6\u00b8\b\u0002\u0000\u0000"+
|
||||||
|
"\u00b7\u00b6\u0001\u0000\u0000\u0000\u00b8\u00bb\u0001\u0000\u0000\u0000"+
|
||||||
|
"\u00b9\u00ba\u0001\u0000\u0000\u0000\u00b9\u00b7\u0001\u0000\u0000\u0000"+
|
||||||
|
"\u00ba\u00bc\u0001\u0000\u0000\u0000\u00bb\u00b9\u0001\u0000\u0000\u0000"+
|
||||||
|
"\u00bc\u00bd\u0005~\u0000\u0000\u00bd(\u0001\u0000\u0000\u0000\u00be\u00c0"+
|
||||||
|
"\u0007\u0003\u0000\u0000\u00bf\u00be\u0001\u0000\u0000\u0000\u00c0\u00c1"+
|
||||||
|
"\u0001\u0000\u0000\u0000\u00c1\u00bf\u0001\u0000\u0000\u0000\u00c1\u00c2"+
|
||||||
|
"\u0001\u0000\u0000\u0000\u00c2\u00c3\u0001\u0000\u0000\u0000\u00c3\u00c4"+
|
||||||
|
"\u0006\u0014\u0000\u0000\u00c4*\u0001\u0000\u0000\u0000\u00c5\u00c7\u0007"+
|
||||||
|
"\u0004\u0000\u0000\u00c6\u00c5\u0001\u0000\u0000\u0000\u00c7\u00c8\u0001"+
|
||||||
|
"\u0000\u0000\u0000\u00c8\u00c6\u0001\u0000\u0000\u0000\u00c8\u00c9\u0001"+
|
||||||
|
"\u0000\u0000\u0000\u00c9,\u0001\u0000\u0000\u0000\u00ca\u00cc\u0007\u0004"+
|
||||||
|
"\u0000\u0000\u00cb\u00ca\u0001\u0000\u0000\u0000\u00cc\u00cd\u0001\u0000"+
|
||||||
|
"\u0000\u0000\u00cd\u00cb\u0001\u0000\u0000\u0000\u00cd\u00ce\u0001\u0000"+
|
||||||
|
"\u0000\u0000\u00ce\u00cf\u0001\u0000\u0000\u0000\u00cf\u00d3\u0005.\u0000"+
|
||||||
|
"\u0000\u00d0\u00d2\u0007\u0004\u0000\u0000\u00d1\u00d0\u0001\u0000\u0000"+
|
||||||
|
"\u0000\u00d2\u00d5\u0001\u0000\u0000\u0000\u00d3\u00d1\u0001\u0000\u0000"+
|
||||||
|
"\u0000\u00d3\u00d4\u0001\u0000\u0000\u0000\u00d4\u00dd\u0001\u0000\u0000"+
|
||||||
|
"\u0000\u00d5\u00d3\u0001\u0000\u0000\u0000\u00d6\u00d8\u0005.\u0000\u0000"+
|
||||||
|
"\u00d7\u00d9\u0007\u0004\u0000\u0000\u00d8\u00d7\u0001\u0000\u0000\u0000"+
|
||||||
|
"\u00d9\u00da\u0001\u0000\u0000\u0000\u00da\u00d8\u0001\u0000\u0000\u0000"+
|
||||||
|
"\u00da\u00db\u0001\u0000\u0000\u0000\u00db\u00dd\u0001\u0000\u0000\u0000"+
|
||||||
|
"\u00dc\u00cb\u0001\u0000\u0000\u0000\u00dc\u00d6\u0001\u0000\u0000\u0000"+
|
||||||
|
"\u00dd.\u0001\u0000\u0000\u0000\u00de\u00df\u0005(\u0000\u0000\u00df0"+
|
||||||
|
"\u0001\u0000\u0000\u0000\u00e0\u00e1\u0005)\u0000\u0000\u00e12\u0001\u0000"+
|
||||||
|
"\u0000\u0000\u00e2\u00e3\u0005:\u0000\u0000\u00e34\u0001\u0000\u0000\u0000"+
|
||||||
|
"\u00e4\u00e5\u0005;\u0000\u0000\u00e56\u0001\u0000\u0000\u0000\u00e6\u00e7"+
|
||||||
|
"\u0005,\u0000\u0000\u00e78\u0001\u0000\u0000\u0000\u00e8\u00e9\u0005{"+
|
||||||
|
"\u0000\u0000\u00e9:\u0001\u0000\u0000\u0000\u00ea\u00eb\u0005}\u0000\u0000"+
|
||||||
|
"\u00eb<\u0001\u0000\u0000\u0000\u00ec\u00ed\u0005~\u0000\u0000\u00ed>"+
|
||||||
|
"\u0001\u0000\u0000\u0000\u00ee\u00ef\u0005!\u0000\u0000\u00ef@\u0001\u0000"+
|
||||||
|
"\u0000\u0000\n\u0000\u00aa\u00b0\u00b9\u00c1\u00c8\u00cd\u00d3\u00da\u00dc"+
|
||||||
|
"\u0001\u0006\u0000\u0000";
|
||||||
public static final ATN _ATN =
|
public static final ATN _ATN =
|
||||||
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
||||||
static {
|
static {
|
||||||
|
|||||||
@@ -2,24 +2,57 @@ T__0=1
|
|||||||
T__1=2
|
T__1=2
|
||||||
T__2=3
|
T__2=3
|
||||||
T__3=4
|
T__3=4
|
||||||
ID=5
|
T__4=5
|
||||||
STRING=6
|
T__5=6
|
||||||
WS=7
|
T__6=7
|
||||||
LPAREN=8
|
T__7=8
|
||||||
RPAREN=9
|
T__8=9
|
||||||
COLON=10
|
T__9=10
|
||||||
SEMICOLON=11
|
T__10=11
|
||||||
COMMA=12
|
T__11=12
|
||||||
LBRACE=13
|
T__12=13
|
||||||
RBRACE=14
|
T__13=14
|
||||||
|
T__14=15
|
||||||
|
T__15=16
|
||||||
|
T__16=17
|
||||||
|
ID=18
|
||||||
|
STRING=19
|
||||||
|
DESCRIPTION=20
|
||||||
|
WS=21
|
||||||
|
INT=22
|
||||||
|
FLOAT=23
|
||||||
|
LPAREN=24
|
||||||
|
RPAREN=25
|
||||||
|
COLON=26
|
||||||
|
SEMICOLON=27
|
||||||
|
COMMA=28
|
||||||
|
LBRACE=29
|
||||||
|
RBRACE=30
|
||||||
|
TILDE=31
|
||||||
|
EXCLAM=32
|
||||||
'=>'=1
|
'=>'=1
|
||||||
'&&'=2
|
'&&'=2
|
||||||
'||'=3
|
'||'=3
|
||||||
'()'=4
|
'()'=4
|
||||||
'('=8
|
'Access '=5
|
||||||
')'=9
|
'Return'=6
|
||||||
':'=10
|
'INT'=7
|
||||||
';'=11
|
'FLOAT'=8
|
||||||
','=12
|
'DOUBLE'=9
|
||||||
'{'=13
|
'STRING'=10
|
||||||
'}'=14
|
'BOOLEAN'=11
|
||||||
|
'CHAR'=12
|
||||||
|
'VOID'=13
|
||||||
|
'PUBLIC'=14
|
||||||
|
'PROTECTED'=15
|
||||||
|
'PRIVATE'=16
|
||||||
|
'DEFAULT'=17
|
||||||
|
'('=24
|
||||||
|
')'=25
|
||||||
|
':'=26
|
||||||
|
';'=27
|
||||||
|
','=28
|
||||||
|
'{'=29
|
||||||
|
'}'=30
|
||||||
|
'~'=31
|
||||||
|
'!'=32
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
package org.lumijiez.parser;// Generated from D:/Source/JavaProjects/dsl-formal-requirements/src/grammars/SoftwareRequirements.g4 by ANTLR 4.13.1
|
// Generated from D:/Source/JavaProjects/dsl-formal-requirements/src/grammars/SoftwareRequirements.g4 by ANTLR 4.13.1
|
||||||
|
package org.lumijiez.parser;
|
||||||
import org.antlr.v4.runtime.tree.ParseTreeListener;
|
import org.antlr.v4.runtime.tree.ParseTreeListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -17,15 +18,25 @@ public interface SoftwareRequirementsListener extends ParseTreeListener {
|
|||||||
*/
|
*/
|
||||||
void exitProgram(SoftwareRequirementsParser.ProgramContext ctx);
|
void exitProgram(SoftwareRequirementsParser.ProgramContext ctx);
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link SoftwareRequirementsParser#requirement}.
|
* Enter a parse tree produced by {@link SoftwareRequirementsParser#requirementSpec}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void enterRequirement(SoftwareRequirementsParser.RequirementContext ctx);
|
void enterRequirementSpec(SoftwareRequirementsParser.RequirementSpecContext ctx);
|
||||||
/**
|
/**
|
||||||
* Exit a parse tree produced by {@link SoftwareRequirementsParser#requirement}.
|
* Exit a parse tree produced by {@link SoftwareRequirementsParser#requirementSpec}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitRequirement(SoftwareRequirementsParser.RequirementContext ctx);
|
void exitRequirementSpec(SoftwareRequirementsParser.RequirementSpecContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link SoftwareRequirementsParser#description}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterDescription(SoftwareRequirementsParser.DescriptionContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link SoftwareRequirementsParser#description}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitDescription(SoftwareRequirementsParser.DescriptionContext ctx);
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link SoftwareRequirementsParser#predicate}.
|
* Enter a parse tree produced by {@link SoftwareRequirementsParser#predicate}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@@ -76,6 +87,36 @@ public interface SoftwareRequirementsListener extends ParseTreeListener {
|
|||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitFunctionSpec(SoftwareRequirementsParser.FunctionSpecContext ctx);
|
void exitFunctionSpec(SoftwareRequirementsParser.FunctionSpecContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link SoftwareRequirementsParser#access_modifier}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterAccess_modifier(SoftwareRequirementsParser.Access_modifierContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link SoftwareRequirementsParser#access_modifier}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitAccess_modifier(SoftwareRequirementsParser.Access_modifierContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link SoftwareRequirementsParser#return_types}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterReturn_types(SoftwareRequirementsParser.Return_typesContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link SoftwareRequirementsParser#return_types}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitReturn_types(SoftwareRequirementsParser.Return_typesContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link SoftwareRequirementsParser#return}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterReturn(SoftwareRequirementsParser.ReturnContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link SoftwareRequirementsParser#return}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitReturn(SoftwareRequirementsParser.ReturnContext ctx);
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link SoftwareRequirementsParser#parameter_list}.
|
* Enter a parse tree produced by {@link SoftwareRequirementsParser#parameter_list}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@@ -96,4 +137,24 @@ public interface SoftwareRequirementsListener extends ParseTreeListener {
|
|||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitParameter(SoftwareRequirementsParser.ParameterContext ctx);
|
void exitParameter(SoftwareRequirementsParser.ParameterContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link SoftwareRequirementsParser#type}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterType(SoftwareRequirementsParser.TypeContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link SoftwareRequirementsParser#type}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitType(SoftwareRequirementsParser.TypeContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link SoftwareRequirementsParser#access_modifiers}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterAccess_modifiers(SoftwareRequirementsParser.Access_modifiersContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link SoftwareRequirementsParser#access_modifiers}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitAccess_modifiers(SoftwareRequirementsParser.Access_modifiersContext ctx);
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
package org.lumijiez.parser;// Generated from D:/Source/JavaProjects/dsl-formal-requirements/src/grammars/SoftwareRequirements.g4 by ANTLR 4.13.1
|
// Generated from D:/Source/JavaProjects/dsl-formal-requirements/src/grammars/SoftwareRequirements.g4 by ANTLR 4.13.1
|
||||||
|
package org.lumijiez.parser;
|
||||||
import org.antlr.v4.runtime.atn.*;
|
import org.antlr.v4.runtime.atn.*;
|
||||||
import org.antlr.v4.runtime.dfa.DFA;
|
import org.antlr.v4.runtime.dfa.DFA;
|
||||||
import org.antlr.v4.runtime.*;
|
import org.antlr.v4.runtime.*;
|
||||||
@@ -16,31 +17,40 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
protected static final PredictionContextCache _sharedContextCache =
|
protected static final PredictionContextCache _sharedContextCache =
|
||||||
new PredictionContextCache();
|
new PredictionContextCache();
|
||||||
public static final int
|
public static final int
|
||||||
T__0=1, T__1=2, T__2=3, T__3=4, ID=5, STRING=6, WS=7, LPAREN=8, RPAREN=9,
|
T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
|
||||||
COLON=10, SEMICOLON=11, COMMA=12, LBRACE=13, RBRACE=14;
|
T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17,
|
||||||
|
ID=18, STRING=19, DESCRIPTION=20, WS=21, INT=22, FLOAT=23, LPAREN=24,
|
||||||
|
RPAREN=25, COLON=26, SEMICOLON=27, COMMA=28, LBRACE=29, RBRACE=30, TILDE=31,
|
||||||
|
EXCLAM=32;
|
||||||
public static final int
|
public static final int
|
||||||
RULE_program = 0, RULE_requirement = 1, RULE_predicate = 2, RULE_expression = 3,
|
RULE_program = 0, RULE_requirementSpec = 1, RULE_description = 2, RULE_predicate = 3,
|
||||||
RULE_term = 4, RULE_logical_op = 5, RULE_functionSpec = 6, RULE_parameter_list = 7,
|
RULE_expression = 4, RULE_term = 5, RULE_logical_op = 6, RULE_functionSpec = 7,
|
||||||
RULE_parameter = 8;
|
RULE_access_modifier = 8, RULE_return_types = 9, RULE_return = 10, RULE_parameter_list = 11,
|
||||||
|
RULE_parameter = 12, RULE_type = 13, RULE_access_modifiers = 14;
|
||||||
private static String[] makeRuleNames() {
|
private static String[] makeRuleNames() {
|
||||||
return new String[] {
|
return new String[] {
|
||||||
"program", "requirement", "predicate", "expression", "term", "logical_op",
|
"program", "requirementSpec", "description", "predicate", "expression",
|
||||||
"functionSpec", "parameter_list", "parameter"
|
"term", "logical_op", "functionSpec", "access_modifier", "return_types",
|
||||||
|
"return", "parameter_list", "parameter", "type", "access_modifiers"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
public static final String[] ruleNames = makeRuleNames();
|
public static final String[] ruleNames = makeRuleNames();
|
||||||
|
|
||||||
private static String[] makeLiteralNames() {
|
private static String[] makeLiteralNames() {
|
||||||
return new String[] {
|
return new String[] {
|
||||||
null, "'=>'", "'&&'", "'||'", "'()'", null, null, null, "'('", "')'",
|
null, "'=>'", "'&&'", "'||'", "'()'", "'Access '", "'Return'", "'INT'",
|
||||||
"':'", "';'", "','", "'{'", "'}'"
|
"'FLOAT'", "'DOUBLE'", "'STRING'", "'BOOLEAN'", "'CHAR'", "'VOID'", "'PUBLIC'",
|
||||||
|
"'PROTECTED'", "'PRIVATE'", "'DEFAULT'", null, null, null, null, null,
|
||||||
|
null, "'('", "')'", "':'", "';'", "','", "'{'", "'}'", "'~'", "'!'"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
||||||
private static String[] makeSymbolicNames() {
|
private static String[] makeSymbolicNames() {
|
||||||
return new String[] {
|
return new String[] {
|
||||||
null, null, null, null, null, "ID", "STRING", "WS", "LPAREN", "RPAREN",
|
null, null, null, null, null, null, null, null, null, null, null, null,
|
||||||
"COLON", "SEMICOLON", "COMMA", "LBRACE", "RBRACE"
|
null, null, null, null, null, null, "ID", "STRING", "DESCRIPTION", "WS",
|
||||||
|
"INT", "FLOAT", "LPAREN", "RPAREN", "COLON", "SEMICOLON", "COMMA", "LBRACE",
|
||||||
|
"RBRACE", "TILDE", "EXCLAM"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
||||||
@@ -96,11 +106,11 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
|
|
||||||
@SuppressWarnings("CheckReturnValue")
|
@SuppressWarnings("CheckReturnValue")
|
||||||
public static class ProgramContext extends ParserRuleContext {
|
public static class ProgramContext extends ParserRuleContext {
|
||||||
public List<RequirementContext> requirement() {
|
public List<RequirementSpecContext> requirementSpec() {
|
||||||
return getRuleContexts(RequirementContext.class);
|
return getRuleContexts(RequirementSpecContext.class);
|
||||||
}
|
}
|
||||||
public RequirementContext requirement(int i) {
|
public RequirementSpecContext requirementSpec(int i) {
|
||||||
return getRuleContext(RequirementContext.class,i);
|
return getRuleContext(RequirementSpecContext.class,i);
|
||||||
}
|
}
|
||||||
public List<FunctionSpecContext> functionSpec() {
|
public List<FunctionSpecContext> functionSpec() {
|
||||||
return getRuleContexts(FunctionSpecContext.class);
|
return getRuleContexts(FunctionSpecContext.class);
|
||||||
@@ -134,32 +144,32 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
try {
|
try {
|
||||||
enterOuterAlt(_localctx, 1);
|
enterOuterAlt(_localctx, 1);
|
||||||
{
|
{
|
||||||
setState(20);
|
setState(32);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
do {
|
do {
|
||||||
{
|
{
|
||||||
setState(20);
|
setState(32);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
|
switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
setState(18);
|
setState(30);
|
||||||
requirement();
|
requirementSpec();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
setState(19);
|
setState(31);
|
||||||
functionSpec();
|
functionSpec();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setState(22);
|
setState(34);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
} while ( _la==ID );
|
} while ( _la==ID || _la==EXCLAM );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (RecognitionException re) {
|
catch (RecognitionException re) {
|
||||||
@@ -174,45 +184,70 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("CheckReturnValue")
|
@SuppressWarnings("CheckReturnValue")
|
||||||
public static class RequirementContext extends ParserRuleContext {
|
public static class RequirementSpecContext extends ParserRuleContext {
|
||||||
public TerminalNode ID() { return getToken(SoftwareRequirementsParser.ID, 0); }
|
public TerminalNode ID() { return getToken(SoftwareRequirementsParser.ID, 0); }
|
||||||
public TerminalNode COLON() { return getToken(SoftwareRequirementsParser.COLON, 0); }
|
|
||||||
public PredicateContext predicate() {
|
public PredicateContext predicate() {
|
||||||
return getRuleContext(PredicateContext.class,0);
|
return getRuleContext(PredicateContext.class,0);
|
||||||
}
|
}
|
||||||
public TerminalNode SEMICOLON() { return getToken(SoftwareRequirementsParser.SEMICOLON, 0); }
|
public TerminalNode SEMICOLON() { return getToken(SoftwareRequirementsParser.SEMICOLON, 0); }
|
||||||
public RequirementContext(ParserRuleContext parent, int invokingState) {
|
public TerminalNode EXCLAM() { return getToken(SoftwareRequirementsParser.EXCLAM, 0); }
|
||||||
|
public TerminalNode COLON() { return getToken(SoftwareRequirementsParser.COLON, 0); }
|
||||||
|
public DescriptionContext description() {
|
||||||
|
return getRuleContext(DescriptionContext.class,0);
|
||||||
|
}
|
||||||
|
public RequirementSpecContext(ParserRuleContext parent, int invokingState) {
|
||||||
super(parent, invokingState);
|
super(parent, invokingState);
|
||||||
}
|
}
|
||||||
@Override public int getRuleIndex() { return RULE_requirement; }
|
@Override public int getRuleIndex() { return RULE_requirementSpec; }
|
||||||
@Override
|
@Override
|
||||||
public void enterRule(ParseTreeListener listener) {
|
public void enterRule(ParseTreeListener listener) {
|
||||||
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).enterRequirement(this);
|
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).enterRequirementSpec(this);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void exitRule(ParseTreeListener listener) {
|
public void exitRule(ParseTreeListener listener) {
|
||||||
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).exitRequirement(this);
|
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).exitRequirementSpec(this);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
|
public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
|
||||||
if ( visitor instanceof SoftwareRequirementsVisitor ) return ((SoftwareRequirementsVisitor<? extends T>)visitor).visitRequirement(this);
|
if ( visitor instanceof SoftwareRequirementsVisitor ) return ((SoftwareRequirementsVisitor<? extends T>)visitor).visitRequirementSpec(this);
|
||||||
else return visitor.visitChildren(this);
|
else return visitor.visitChildren(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public final RequirementContext requirement() throws RecognitionException {
|
public final RequirementSpecContext requirementSpec() throws RecognitionException {
|
||||||
RequirementContext _localctx = new RequirementContext(_ctx, getState());
|
RequirementSpecContext _localctx = new RequirementSpecContext(_ctx, getState());
|
||||||
enterRule(_localctx, 2, RULE_requirement);
|
enterRule(_localctx, 2, RULE_requirementSpec);
|
||||||
|
int _la;
|
||||||
try {
|
try {
|
||||||
enterOuterAlt(_localctx, 1);
|
enterOuterAlt(_localctx, 1);
|
||||||
{
|
{
|
||||||
setState(24);
|
setState(37);
|
||||||
|
_errHandler.sync(this);
|
||||||
|
_la = _input.LA(1);
|
||||||
|
if (_la==EXCLAM) {
|
||||||
|
{
|
||||||
|
setState(36);
|
||||||
|
match(EXCLAM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(39);
|
||||||
match(ID);
|
match(ID);
|
||||||
setState(25);
|
setState(42);
|
||||||
match(COLON);
|
_errHandler.sync(this);
|
||||||
setState(26);
|
_la = _input.LA(1);
|
||||||
|
if (_la==COLON) {
|
||||||
|
{
|
||||||
|
setState(40);
|
||||||
|
match(COLON);
|
||||||
|
setState(41);
|
||||||
|
description();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(44);
|
||||||
predicate();
|
predicate();
|
||||||
setState(27);
|
setState(45);
|
||||||
match(SEMICOLON);
|
match(SEMICOLON);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -227,6 +262,49 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
return _localctx;
|
return _localctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("CheckReturnValue")
|
||||||
|
public static class DescriptionContext extends ParserRuleContext {
|
||||||
|
public TerminalNode DESCRIPTION() { return getToken(SoftwareRequirementsParser.DESCRIPTION, 0); }
|
||||||
|
public DescriptionContext(ParserRuleContext parent, int invokingState) {
|
||||||
|
super(parent, invokingState);
|
||||||
|
}
|
||||||
|
@Override public int getRuleIndex() { return RULE_description; }
|
||||||
|
@Override
|
||||||
|
public void enterRule(ParseTreeListener listener) {
|
||||||
|
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).enterDescription(this);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void exitRule(ParseTreeListener listener) {
|
||||||
|
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).exitDescription(this);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
|
||||||
|
if ( visitor instanceof SoftwareRequirementsVisitor ) return ((SoftwareRequirementsVisitor<? extends T>)visitor).visitDescription(this);
|
||||||
|
else return visitor.visitChildren(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public final DescriptionContext description() throws RecognitionException {
|
||||||
|
DescriptionContext _localctx = new DescriptionContext(_ctx, getState());
|
||||||
|
enterRule(_localctx, 4, RULE_description);
|
||||||
|
try {
|
||||||
|
enterOuterAlt(_localctx, 1);
|
||||||
|
{
|
||||||
|
setState(47);
|
||||||
|
match(DESCRIPTION);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (RecognitionException re) {
|
||||||
|
_localctx.exception = re;
|
||||||
|
_errHandler.reportError(this, re);
|
||||||
|
_errHandler.recover(this, re);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
exitRule();
|
||||||
|
}
|
||||||
|
return _localctx;
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("CheckReturnValue")
|
@SuppressWarnings("CheckReturnValue")
|
||||||
public static class PredicateContext extends ParserRuleContext {
|
public static class PredicateContext extends ParserRuleContext {
|
||||||
public List<ExpressionContext> expression() {
|
public List<ExpressionContext> expression() {
|
||||||
@@ -256,15 +334,15 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
|
|
||||||
public final PredicateContext predicate() throws RecognitionException {
|
public final PredicateContext predicate() throws RecognitionException {
|
||||||
PredicateContext _localctx = new PredicateContext(_ctx, getState());
|
PredicateContext _localctx = new PredicateContext(_ctx, getState());
|
||||||
enterRule(_localctx, 4, RULE_predicate);
|
enterRule(_localctx, 6, RULE_predicate);
|
||||||
try {
|
try {
|
||||||
enterOuterAlt(_localctx, 1);
|
enterOuterAlt(_localctx, 1);
|
||||||
{
|
{
|
||||||
setState(29);
|
setState(49);
|
||||||
expression();
|
expression();
|
||||||
setState(30);
|
setState(50);
|
||||||
match(T__0);
|
match(T__0);
|
||||||
setState(31);
|
setState(51);
|
||||||
expression();
|
expression();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -314,26 +392,26 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
|
|
||||||
public final ExpressionContext expression() throws RecognitionException {
|
public final ExpressionContext expression() throws RecognitionException {
|
||||||
ExpressionContext _localctx = new ExpressionContext(_ctx, getState());
|
ExpressionContext _localctx = new ExpressionContext(_ctx, getState());
|
||||||
enterRule(_localctx, 6, RULE_expression);
|
enterRule(_localctx, 8, RULE_expression);
|
||||||
int _la;
|
int _la;
|
||||||
try {
|
try {
|
||||||
enterOuterAlt(_localctx, 1);
|
enterOuterAlt(_localctx, 1);
|
||||||
{
|
{
|
||||||
setState(33);
|
setState(53);
|
||||||
term();
|
term();
|
||||||
setState(39);
|
setState(59);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
while (_la==T__1 || _la==T__2) {
|
while (_la==T__1 || _la==T__2) {
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
setState(34);
|
setState(54);
|
||||||
logical_op();
|
logical_op();
|
||||||
setState(35);
|
setState(55);
|
||||||
term();
|
term();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setState(41);
|
setState(61);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
}
|
}
|
||||||
@@ -352,11 +430,11 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
|
|
||||||
@SuppressWarnings("CheckReturnValue")
|
@SuppressWarnings("CheckReturnValue")
|
||||||
public static class TermContext extends ParserRuleContext {
|
public static class TermContext extends ParserRuleContext {
|
||||||
public TerminalNode LPAREN() { return getToken(SoftwareRequirementsParser.LPAREN, 0); }
|
public TerminalNode LBRACE() { return getToken(SoftwareRequirementsParser.LBRACE, 0); }
|
||||||
public ExpressionContext expression() {
|
public ExpressionContext expression() {
|
||||||
return getRuleContext(ExpressionContext.class,0);
|
return getRuleContext(ExpressionContext.class,0);
|
||||||
}
|
}
|
||||||
public TerminalNode RPAREN() { return getToken(SoftwareRequirementsParser.RPAREN, 0); }
|
public TerminalNode RBRACE() { return getToken(SoftwareRequirementsParser.RBRACE, 0); }
|
||||||
public TerminalNode STRING() { return getToken(SoftwareRequirementsParser.STRING, 0); }
|
public TerminalNode STRING() { return getToken(SoftwareRequirementsParser.STRING, 0); }
|
||||||
public TermContext(ParserRuleContext parent, int invokingState) {
|
public TermContext(ParserRuleContext parent, int invokingState) {
|
||||||
super(parent, invokingState);
|
super(parent, invokingState);
|
||||||
@@ -379,26 +457,26 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
|
|
||||||
public final TermContext term() throws RecognitionException {
|
public final TermContext term() throws RecognitionException {
|
||||||
TermContext _localctx = new TermContext(_ctx, getState());
|
TermContext _localctx = new TermContext(_ctx, getState());
|
||||||
enterRule(_localctx, 8, RULE_term);
|
enterRule(_localctx, 10, RULE_term);
|
||||||
try {
|
try {
|
||||||
setState(47);
|
setState(67);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
switch (_input.LA(1)) {
|
switch (_input.LA(1)) {
|
||||||
case LPAREN:
|
case LBRACE:
|
||||||
enterOuterAlt(_localctx, 1);
|
enterOuterAlt(_localctx, 1);
|
||||||
{
|
{
|
||||||
setState(42);
|
setState(62);
|
||||||
match(LPAREN);
|
match(LBRACE);
|
||||||
setState(43);
|
setState(63);
|
||||||
expression();
|
expression();
|
||||||
setState(44);
|
setState(64);
|
||||||
match(RPAREN);
|
match(RBRACE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case STRING:
|
case STRING:
|
||||||
enterOuterAlt(_localctx, 2);
|
enterOuterAlt(_localctx, 2);
|
||||||
{
|
{
|
||||||
setState(46);
|
setState(66);
|
||||||
match(STRING);
|
match(STRING);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -440,12 +518,12 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
|
|
||||||
public final Logical_opContext logical_op() throws RecognitionException {
|
public final Logical_opContext logical_op() throws RecognitionException {
|
||||||
Logical_opContext _localctx = new Logical_opContext(_ctx, getState());
|
Logical_opContext _localctx = new Logical_opContext(_ctx, getState());
|
||||||
enterRule(_localctx, 10, RULE_logical_op);
|
enterRule(_localctx, 12, RULE_logical_op);
|
||||||
int _la;
|
int _la;
|
||||||
try {
|
try {
|
||||||
enterOuterAlt(_localctx, 1);
|
enterOuterAlt(_localctx, 1);
|
||||||
{
|
{
|
||||||
setState(49);
|
setState(69);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ( !(_la==T__1 || _la==T__2) ) {
|
if ( !(_la==T__1 || _la==T__2) ) {
|
||||||
_errHandler.recoverInline(this);
|
_errHandler.recoverInline(this);
|
||||||
@@ -472,12 +550,22 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
public static class FunctionSpecContext extends ParserRuleContext {
|
public static class FunctionSpecContext extends ParserRuleContext {
|
||||||
public TerminalNode ID() { return getToken(SoftwareRequirementsParser.ID, 0); }
|
public TerminalNode ID() { return getToken(SoftwareRequirementsParser.ID, 0); }
|
||||||
public TerminalNode COLON() { return getToken(SoftwareRequirementsParser.COLON, 0); }
|
public TerminalNode COLON() { return getToken(SoftwareRequirementsParser.COLON, 0); }
|
||||||
public TerminalNode LPAREN() { return getToken(SoftwareRequirementsParser.LPAREN, 0); }
|
public Return_typesContext return_types() {
|
||||||
|
return getRuleContext(Return_typesContext.class,0);
|
||||||
|
}
|
||||||
|
public TerminalNode LBRACE() { return getToken(SoftwareRequirementsParser.LBRACE, 0); }
|
||||||
public Parameter_listContext parameter_list() {
|
public Parameter_listContext parameter_list() {
|
||||||
return getRuleContext(Parameter_listContext.class,0);
|
return getRuleContext(Parameter_listContext.class,0);
|
||||||
}
|
}
|
||||||
public TerminalNode RPAREN() { return getToken(SoftwareRequirementsParser.RPAREN, 0); }
|
public TerminalNode RBRACE() { return getToken(SoftwareRequirementsParser.RBRACE, 0); }
|
||||||
public TerminalNode SEMICOLON() { return getToken(SoftwareRequirementsParser.SEMICOLON, 0); }
|
public TerminalNode SEMICOLON() { return getToken(SoftwareRequirementsParser.SEMICOLON, 0); }
|
||||||
|
public TerminalNode EXCLAM() { return getToken(SoftwareRequirementsParser.EXCLAM, 0); }
|
||||||
|
public DescriptionContext description() {
|
||||||
|
return getRuleContext(DescriptionContext.class,0);
|
||||||
|
}
|
||||||
|
public Access_modifierContext access_modifier() {
|
||||||
|
return getRuleContext(Access_modifierContext.class,0);
|
||||||
|
}
|
||||||
public FunctionSpecContext(ParserRuleContext parent, int invokingState) {
|
public FunctionSpecContext(ParserRuleContext parent, int invokingState) {
|
||||||
super(parent, invokingState);
|
super(parent, invokingState);
|
||||||
}
|
}
|
||||||
@@ -499,23 +587,56 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
|
|
||||||
public final FunctionSpecContext functionSpec() throws RecognitionException {
|
public final FunctionSpecContext functionSpec() throws RecognitionException {
|
||||||
FunctionSpecContext _localctx = new FunctionSpecContext(_ctx, getState());
|
FunctionSpecContext _localctx = new FunctionSpecContext(_ctx, getState());
|
||||||
enterRule(_localctx, 12, RULE_functionSpec);
|
enterRule(_localctx, 14, RULE_functionSpec);
|
||||||
|
int _la;
|
||||||
try {
|
try {
|
||||||
enterOuterAlt(_localctx, 1);
|
enterOuterAlt(_localctx, 1);
|
||||||
{
|
{
|
||||||
setState(51);
|
setState(72);
|
||||||
|
_errHandler.sync(this);
|
||||||
|
_la = _input.LA(1);
|
||||||
|
if (_la==EXCLAM) {
|
||||||
|
{
|
||||||
|
setState(71);
|
||||||
|
match(EXCLAM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(74);
|
||||||
match(ID);
|
match(ID);
|
||||||
setState(52);
|
setState(75);
|
||||||
match(T__3);
|
match(T__3);
|
||||||
setState(53);
|
setState(76);
|
||||||
match(COLON);
|
match(COLON);
|
||||||
setState(54);
|
setState(78);
|
||||||
match(LPAREN);
|
_errHandler.sync(this);
|
||||||
setState(55);
|
_la = _input.LA(1);
|
||||||
|
if (_la==DESCRIPTION) {
|
||||||
|
{
|
||||||
|
setState(77);
|
||||||
|
description();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(81);
|
||||||
|
_errHandler.sync(this);
|
||||||
|
_la = _input.LA(1);
|
||||||
|
if (_la==T__4) {
|
||||||
|
{
|
||||||
|
setState(80);
|
||||||
|
access_modifier();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(83);
|
||||||
|
return_types();
|
||||||
|
setState(84);
|
||||||
|
match(LBRACE);
|
||||||
|
setState(85);
|
||||||
parameter_list();
|
parameter_list();
|
||||||
setState(56);
|
setState(86);
|
||||||
match(RPAREN);
|
match(RBRACE);
|
||||||
setState(57);
|
setState(87);
|
||||||
match(SEMICOLON);
|
match(SEMICOLON);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -530,6 +651,184 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
return _localctx;
|
return _localctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("CheckReturnValue")
|
||||||
|
public static class Access_modifierContext extends ParserRuleContext {
|
||||||
|
public Access_modifiersContext access_modifiers() {
|
||||||
|
return getRuleContext(Access_modifiersContext.class,0);
|
||||||
|
}
|
||||||
|
public TerminalNode SEMICOLON() { return getToken(SoftwareRequirementsParser.SEMICOLON, 0); }
|
||||||
|
public Access_modifierContext(ParserRuleContext parent, int invokingState) {
|
||||||
|
super(parent, invokingState);
|
||||||
|
}
|
||||||
|
@Override public int getRuleIndex() { return RULE_access_modifier; }
|
||||||
|
@Override
|
||||||
|
public void enterRule(ParseTreeListener listener) {
|
||||||
|
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).enterAccess_modifier(this);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void exitRule(ParseTreeListener listener) {
|
||||||
|
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).exitAccess_modifier(this);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
|
||||||
|
if ( visitor instanceof SoftwareRequirementsVisitor ) return ((SoftwareRequirementsVisitor<? extends T>)visitor).visitAccess_modifier(this);
|
||||||
|
else return visitor.visitChildren(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public final Access_modifierContext access_modifier() throws RecognitionException {
|
||||||
|
Access_modifierContext _localctx = new Access_modifierContext(_ctx, getState());
|
||||||
|
enterRule(_localctx, 16, RULE_access_modifier);
|
||||||
|
try {
|
||||||
|
enterOuterAlt(_localctx, 1);
|
||||||
|
{
|
||||||
|
setState(89);
|
||||||
|
match(T__4);
|
||||||
|
setState(90);
|
||||||
|
access_modifiers();
|
||||||
|
setState(91);
|
||||||
|
match(SEMICOLON);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (RecognitionException re) {
|
||||||
|
_localctx.exception = re;
|
||||||
|
_errHandler.reportError(this, re);
|
||||||
|
_errHandler.recover(this, re);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
exitRule();
|
||||||
|
}
|
||||||
|
return _localctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("CheckReturnValue")
|
||||||
|
public static class Return_typesContext extends ParserRuleContext {
|
||||||
|
public TerminalNode LPAREN() { return getToken(SoftwareRequirementsParser.LPAREN, 0); }
|
||||||
|
public List<ReturnContext> return_() {
|
||||||
|
return getRuleContexts(ReturnContext.class);
|
||||||
|
}
|
||||||
|
public ReturnContext return_(int i) {
|
||||||
|
return getRuleContext(ReturnContext.class,i);
|
||||||
|
}
|
||||||
|
public TerminalNode RPAREN() { return getToken(SoftwareRequirementsParser.RPAREN, 0); }
|
||||||
|
public TerminalNode SEMICOLON() { return getToken(SoftwareRequirementsParser.SEMICOLON, 0); }
|
||||||
|
public List<TerminalNode> COMMA() { return getTokens(SoftwareRequirementsParser.COMMA); }
|
||||||
|
public TerminalNode COMMA(int i) {
|
||||||
|
return getToken(SoftwareRequirementsParser.COMMA, i);
|
||||||
|
}
|
||||||
|
public Return_typesContext(ParserRuleContext parent, int invokingState) {
|
||||||
|
super(parent, invokingState);
|
||||||
|
}
|
||||||
|
@Override public int getRuleIndex() { return RULE_return_types; }
|
||||||
|
@Override
|
||||||
|
public void enterRule(ParseTreeListener listener) {
|
||||||
|
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).enterReturn_types(this);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void exitRule(ParseTreeListener listener) {
|
||||||
|
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).exitReturn_types(this);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
|
||||||
|
if ( visitor instanceof SoftwareRequirementsVisitor ) return ((SoftwareRequirementsVisitor<? extends T>)visitor).visitReturn_types(this);
|
||||||
|
else return visitor.visitChildren(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public final Return_typesContext return_types() throws RecognitionException {
|
||||||
|
Return_typesContext _localctx = new Return_typesContext(_ctx, getState());
|
||||||
|
enterRule(_localctx, 18, RULE_return_types);
|
||||||
|
int _la;
|
||||||
|
try {
|
||||||
|
enterOuterAlt(_localctx, 1);
|
||||||
|
{
|
||||||
|
setState(93);
|
||||||
|
match(T__5);
|
||||||
|
setState(94);
|
||||||
|
match(LPAREN);
|
||||||
|
setState(95);
|
||||||
|
return_();
|
||||||
|
setState(100);
|
||||||
|
_errHandler.sync(this);
|
||||||
|
_la = _input.LA(1);
|
||||||
|
while (_la==COMMA) {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
setState(96);
|
||||||
|
match(COMMA);
|
||||||
|
setState(97);
|
||||||
|
return_();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setState(102);
|
||||||
|
_errHandler.sync(this);
|
||||||
|
_la = _input.LA(1);
|
||||||
|
}
|
||||||
|
setState(103);
|
||||||
|
match(RPAREN);
|
||||||
|
setState(104);
|
||||||
|
match(SEMICOLON);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (RecognitionException re) {
|
||||||
|
_localctx.exception = re;
|
||||||
|
_errHandler.reportError(this, re);
|
||||||
|
_errHandler.recover(this, re);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
exitRule();
|
||||||
|
}
|
||||||
|
return _localctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("CheckReturnValue")
|
||||||
|
public static class ReturnContext extends ParserRuleContext {
|
||||||
|
public TypeContext type() {
|
||||||
|
return getRuleContext(TypeContext.class,0);
|
||||||
|
}
|
||||||
|
public TerminalNode ID() { return getToken(SoftwareRequirementsParser.ID, 0); }
|
||||||
|
public ReturnContext(ParserRuleContext parent, int invokingState) {
|
||||||
|
super(parent, invokingState);
|
||||||
|
}
|
||||||
|
@Override public int getRuleIndex() { return RULE_return; }
|
||||||
|
@Override
|
||||||
|
public void enterRule(ParseTreeListener listener) {
|
||||||
|
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).enterReturn(this);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void exitRule(ParseTreeListener listener) {
|
||||||
|
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).exitReturn(this);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
|
||||||
|
if ( visitor instanceof SoftwareRequirementsVisitor ) return ((SoftwareRequirementsVisitor<? extends T>)visitor).visitReturn(this);
|
||||||
|
else return visitor.visitChildren(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public final ReturnContext return_() throws RecognitionException {
|
||||||
|
ReturnContext _localctx = new ReturnContext(_ctx, getState());
|
||||||
|
enterRule(_localctx, 20, RULE_return);
|
||||||
|
try {
|
||||||
|
enterOuterAlt(_localctx, 1);
|
||||||
|
{
|
||||||
|
setState(106);
|
||||||
|
type();
|
||||||
|
setState(107);
|
||||||
|
match(ID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (RecognitionException re) {
|
||||||
|
_localctx.exception = re;
|
||||||
|
_errHandler.reportError(this, re);
|
||||||
|
_errHandler.recover(this, re);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
exitRule();
|
||||||
|
}
|
||||||
|
return _localctx;
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("CheckReturnValue")
|
@SuppressWarnings("CheckReturnValue")
|
||||||
public static class Parameter_listContext extends ParserRuleContext {
|
public static class Parameter_listContext extends ParserRuleContext {
|
||||||
public List<ParameterContext> parameter() {
|
public List<ParameterContext> parameter() {
|
||||||
@@ -563,26 +862,26 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
|
|
||||||
public final Parameter_listContext parameter_list() throws RecognitionException {
|
public final Parameter_listContext parameter_list() throws RecognitionException {
|
||||||
Parameter_listContext _localctx = new Parameter_listContext(_ctx, getState());
|
Parameter_listContext _localctx = new Parameter_listContext(_ctx, getState());
|
||||||
enterRule(_localctx, 14, RULE_parameter_list);
|
enterRule(_localctx, 22, RULE_parameter_list);
|
||||||
int _la;
|
int _la;
|
||||||
try {
|
try {
|
||||||
enterOuterAlt(_localctx, 1);
|
enterOuterAlt(_localctx, 1);
|
||||||
{
|
{
|
||||||
setState(59);
|
setState(109);
|
||||||
parameter();
|
parameter();
|
||||||
setState(64);
|
setState(114);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
while (_la==COMMA) {
|
while (_la==COMMA) {
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
setState(60);
|
setState(110);
|
||||||
match(COMMA);
|
match(COMMA);
|
||||||
setState(61);
|
setState(111);
|
||||||
parameter();
|
parameter();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setState(66);
|
setState(116);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
}
|
}
|
||||||
@@ -606,6 +905,8 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
return getToken(SoftwareRequirementsParser.STRING, i);
|
return getToken(SoftwareRequirementsParser.STRING, i);
|
||||||
}
|
}
|
||||||
public TerminalNode COLON() { return getToken(SoftwareRequirementsParser.COLON, 0); }
|
public TerminalNode COLON() { return getToken(SoftwareRequirementsParser.COLON, 0); }
|
||||||
|
public TerminalNode INT() { return getToken(SoftwareRequirementsParser.INT, 0); }
|
||||||
|
public TerminalNode FLOAT() { return getToken(SoftwareRequirementsParser.FLOAT, 0); }
|
||||||
public ParameterContext(ParserRuleContext parent, int invokingState) {
|
public ParameterContext(ParserRuleContext parent, int invokingState) {
|
||||||
super(parent, invokingState);
|
super(parent, invokingState);
|
||||||
}
|
}
|
||||||
@@ -627,16 +928,127 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
|
|
||||||
public final ParameterContext parameter() throws RecognitionException {
|
public final ParameterContext parameter() throws RecognitionException {
|
||||||
ParameterContext _localctx = new ParameterContext(_ctx, getState());
|
ParameterContext _localctx = new ParameterContext(_ctx, getState());
|
||||||
enterRule(_localctx, 16, RULE_parameter);
|
enterRule(_localctx, 24, RULE_parameter);
|
||||||
|
int _la;
|
||||||
try {
|
try {
|
||||||
enterOuterAlt(_localctx, 1);
|
enterOuterAlt(_localctx, 1);
|
||||||
{
|
{
|
||||||
setState(67);
|
setState(117);
|
||||||
match(STRING);
|
match(STRING);
|
||||||
setState(68);
|
setState(118);
|
||||||
match(COLON);
|
match(COLON);
|
||||||
setState(69);
|
setState(119);
|
||||||
match(STRING);
|
_la = _input.LA(1);
|
||||||
|
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 13107200L) != 0)) ) {
|
||||||
|
_errHandler.recoverInline(this);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
|
||||||
|
_errHandler.reportMatch(this);
|
||||||
|
consume();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (RecognitionException re) {
|
||||||
|
_localctx.exception = re;
|
||||||
|
_errHandler.reportError(this, re);
|
||||||
|
_errHandler.recover(this, re);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
exitRule();
|
||||||
|
}
|
||||||
|
return _localctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("CheckReturnValue")
|
||||||
|
public static class TypeContext extends ParserRuleContext {
|
||||||
|
public TypeContext(ParserRuleContext parent, int invokingState) {
|
||||||
|
super(parent, invokingState);
|
||||||
|
}
|
||||||
|
@Override public int getRuleIndex() { return RULE_type; }
|
||||||
|
@Override
|
||||||
|
public void enterRule(ParseTreeListener listener) {
|
||||||
|
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).enterType(this);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void exitRule(ParseTreeListener listener) {
|
||||||
|
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).exitType(this);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
|
||||||
|
if ( visitor instanceof SoftwareRequirementsVisitor ) return ((SoftwareRequirementsVisitor<? extends T>)visitor).visitType(this);
|
||||||
|
else return visitor.visitChildren(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public final TypeContext type() throws RecognitionException {
|
||||||
|
TypeContext _localctx = new TypeContext(_ctx, getState());
|
||||||
|
enterRule(_localctx, 26, RULE_type);
|
||||||
|
int _la;
|
||||||
|
try {
|
||||||
|
enterOuterAlt(_localctx, 1);
|
||||||
|
{
|
||||||
|
setState(121);
|
||||||
|
_la = _input.LA(1);
|
||||||
|
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 16256L) != 0)) ) {
|
||||||
|
_errHandler.recoverInline(this);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
|
||||||
|
_errHandler.reportMatch(this);
|
||||||
|
consume();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (RecognitionException re) {
|
||||||
|
_localctx.exception = re;
|
||||||
|
_errHandler.reportError(this, re);
|
||||||
|
_errHandler.recover(this, re);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
exitRule();
|
||||||
|
}
|
||||||
|
return _localctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("CheckReturnValue")
|
||||||
|
public static class Access_modifiersContext extends ParserRuleContext {
|
||||||
|
public Access_modifiersContext(ParserRuleContext parent, int invokingState) {
|
||||||
|
super(parent, invokingState);
|
||||||
|
}
|
||||||
|
@Override public int getRuleIndex() { return RULE_access_modifiers; }
|
||||||
|
@Override
|
||||||
|
public void enterRule(ParseTreeListener listener) {
|
||||||
|
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).enterAccess_modifiers(this);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void exitRule(ParseTreeListener listener) {
|
||||||
|
if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).exitAccess_modifiers(this);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
|
||||||
|
if ( visitor instanceof SoftwareRequirementsVisitor ) return ((SoftwareRequirementsVisitor<? extends T>)visitor).visitAccess_modifiers(this);
|
||||||
|
else return visitor.visitChildren(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public final Access_modifiersContext access_modifiers() throws RecognitionException {
|
||||||
|
Access_modifiersContext _localctx = new Access_modifiersContext(_ctx, getState());
|
||||||
|
enterRule(_localctx, 28, RULE_access_modifiers);
|
||||||
|
int _la;
|
||||||
|
try {
|
||||||
|
enterOuterAlt(_localctx, 1);
|
||||||
|
{
|
||||||
|
setState(123);
|
||||||
|
_la = _input.LA(1);
|
||||||
|
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 245760L) != 0)) ) {
|
||||||
|
_errHandler.recoverInline(this);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
|
||||||
|
_errHandler.reportMatch(this);
|
||||||
|
consume();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (RecognitionException re) {
|
catch (RecognitionException re) {
|
||||||
@@ -651,47 +1063,73 @@ public class SoftwareRequirementsParser extends Parser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static final String _serializedATN =
|
public static final String _serializedATN =
|
||||||
"\u0004\u0001\u000eH\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+
|
"\u0004\u0001 ~\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002\u0002"+
|
||||||
"\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+
|
"\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002\u0005"+
|
||||||
"\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+
|
"\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002\b\u0007"+
|
||||||
"\b\u0007\b\u0001\u0000\u0001\u0000\u0004\u0000\u0015\b\u0000\u000b\u0000"+
|
"\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002\f\u0007"+
|
||||||
"\f\u0000\u0016\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
|
"\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0001\u0000\u0001\u0000\u0004"+
|
||||||
"\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003"+
|
"\u0000!\b\u0000\u000b\u0000\f\u0000\"\u0001\u0001\u0003\u0001&\b\u0001"+
|
||||||
"\u0001\u0003\u0001\u0003\u0005\u0003&\b\u0003\n\u0003\f\u0003)\t\u0003"+
|
"\u0001\u0001\u0001\u0001\u0001\u0001\u0003\u0001+\b\u0001\u0001\u0001"+
|
||||||
"\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0003\u0004"+
|
"\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003"+
|
||||||
"0\b\u0004\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0006"+
|
"\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+
|
||||||
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007"+
|
"\u0005\u0004:\b\u0004\n\u0004\f\u0004=\t\u0004\u0001\u0005\u0001\u0005"+
|
||||||
"\u0001\u0007\u0001\u0007\u0005\u0007?\b\u0007\n\u0007\f\u0007B\t\u0007"+
|
"\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005D\b\u0005\u0001\u0006"+
|
||||||
"\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0000\u0000\t\u0000\u0002\u0004"+
|
"\u0001\u0006\u0001\u0007\u0003\u0007I\b\u0007\u0001\u0007\u0001\u0007"+
|
||||||
"\u0006\b\n\f\u000e\u0010\u0000\u0001\u0001\u0000\u0002\u0003C\u0000\u0014"+
|
"\u0001\u0007\u0001\u0007\u0003\u0007O\b\u0007\u0001\u0007\u0003\u0007"+
|
||||||
"\u0001\u0000\u0000\u0000\u0002\u0018\u0001\u0000\u0000\u0000\u0004\u001d"+
|
"R\b\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
|
||||||
"\u0001\u0000\u0000\u0000\u0006!\u0001\u0000\u0000\u0000\b/\u0001\u0000"+
|
"\u0001\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001"+
|
||||||
"\u0000\u0000\n1\u0001\u0000\u0000\u0000\f3\u0001\u0000\u0000\u0000\u000e"+
|
"\t\u0001\t\u0005\tc\b\t\n\t\f\tf\t\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001"+
|
||||||
";\u0001\u0000\u0000\u0000\u0010C\u0001\u0000\u0000\u0000\u0012\u0015\u0003"+
|
"\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0005\u000bq\b\u000b\n"+
|
||||||
"\u0002\u0001\u0000\u0013\u0015\u0003\f\u0006\u0000\u0014\u0012\u0001\u0000"+
|
"\u000b\f\u000bt\t\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001"+
|
||||||
"\u0000\u0000\u0014\u0013\u0001\u0000\u0000\u0000\u0015\u0016\u0001\u0000"+
|
"\r\u0001\u000e\u0001\u000e\u0001\u000e\u0000\u0000\u000f\u0000\u0002\u0004"+
|
||||||
"\u0000\u0000\u0016\u0014\u0001\u0000\u0000\u0000\u0016\u0017\u0001\u0000"+
|
"\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u0000\u0004"+
|
||||||
"\u0000\u0000\u0017\u0001\u0001\u0000\u0000\u0000\u0018\u0019\u0005\u0005"+
|
"\u0001\u0000\u0002\u0003\u0002\u0000\u0013\u0013\u0016\u0017\u0001\u0000"+
|
||||||
"\u0000\u0000\u0019\u001a\u0005\n\u0000\u0000\u001a\u001b\u0003\u0004\u0002"+
|
"\u0007\r\u0001\u0000\u000e\u0011y\u0000 \u0001\u0000\u0000\u0000\u0002"+
|
||||||
"\u0000\u001b\u001c\u0005\u000b\u0000\u0000\u001c\u0003\u0001\u0000\u0000"+
|
"%\u0001\u0000\u0000\u0000\u0004/\u0001\u0000\u0000\u0000\u00061\u0001"+
|
||||||
"\u0000\u001d\u001e\u0003\u0006\u0003\u0000\u001e\u001f\u0005\u0001\u0000"+
|
"\u0000\u0000\u0000\b5\u0001\u0000\u0000\u0000\nC\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u001f \u0003\u0006\u0003\u0000 \u0005\u0001\u0000\u0000\u0000!"+
|
"\fE\u0001\u0000\u0000\u0000\u000eH\u0001\u0000\u0000\u0000\u0010Y\u0001"+
|
||||||
"\'\u0003\b\u0004\u0000\"#\u0003\n\u0005\u0000#$\u0003\b\u0004\u0000$&"+
|
"\u0000\u0000\u0000\u0012]\u0001\u0000\u0000\u0000\u0014j\u0001\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000%\"\u0001\u0000\u0000\u0000&)\u0001\u0000\u0000"+
|
"\u0000\u0016m\u0001\u0000\u0000\u0000\u0018u\u0001\u0000\u0000\u0000\u001a"+
|
||||||
"\u0000\'%\u0001\u0000\u0000\u0000\'(\u0001\u0000\u0000\u0000(\u0007\u0001"+
|
"y\u0001\u0000\u0000\u0000\u001c{\u0001\u0000\u0000\u0000\u001e!\u0003"+
|
||||||
"\u0000\u0000\u0000)\'\u0001\u0000\u0000\u0000*+\u0005\b\u0000\u0000+,"+
|
"\u0002\u0001\u0000\u001f!\u0003\u000e\u0007\u0000 \u001e\u0001\u0000\u0000"+
|
||||||
"\u0003\u0006\u0003\u0000,-\u0005\t\u0000\u0000-0\u0001\u0000\u0000\u0000"+
|
"\u0000 \u001f\u0001\u0000\u0000\u0000!\"\u0001\u0000\u0000\u0000\" \u0001"+
|
||||||
".0\u0005\u0006\u0000\u0000/*\u0001\u0000\u0000\u0000/.\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000\"#\u0001\u0000\u0000\u0000#\u0001\u0001\u0000\u0000"+
|
||||||
"\u00000\t\u0001\u0000\u0000\u000012\u0007\u0000\u0000\u00002\u000b\u0001"+
|
"\u0000$&\u0005 \u0000\u0000%$\u0001\u0000\u0000\u0000%&\u0001\u0000\u0000"+
|
||||||
"\u0000\u0000\u000034\u0005\u0005\u0000\u000045\u0005\u0004\u0000\u0000"+
|
"\u0000&\'\u0001\u0000\u0000\u0000\'*\u0005\u0012\u0000\u0000()\u0005\u001a"+
|
||||||
"56\u0005\n\u0000\u000067\u0005\b\u0000\u000078\u0003\u000e\u0007\u0000"+
|
"\u0000\u0000)+\u0003\u0004\u0002\u0000*(\u0001\u0000\u0000\u0000*+\u0001"+
|
||||||
"89\u0005\t\u0000\u00009:\u0005\u000b\u0000\u0000:\r\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000+,\u0001\u0000\u0000\u0000,-\u0003\u0006\u0003\u0000"+
|
||||||
"\u0000;@\u0003\u0010\b\u0000<=\u0005\f\u0000\u0000=?\u0003\u0010\b\u0000"+
|
"-.\u0005\u001b\u0000\u0000.\u0003\u0001\u0000\u0000\u0000/0\u0005\u0014"+
|
||||||
"><\u0001\u0000\u0000\u0000?B\u0001\u0000\u0000\u0000@>\u0001\u0000\u0000"+
|
"\u0000\u00000\u0005\u0001\u0000\u0000\u000012\u0003\b\u0004\u000023\u0005"+
|
||||||
"\u0000@A\u0001\u0000\u0000\u0000A\u000f\u0001\u0000\u0000\u0000B@\u0001"+
|
"\u0001\u0000\u000034\u0003\b\u0004\u00004\u0007\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000CD\u0005\u0006\u0000\u0000DE\u0005\n\u0000\u0000EF\u0005"+
|
"5;\u0003\n\u0005\u000067\u0003\f\u0006\u000078\u0003\n\u0005\u00008:\u0001"+
|
||||||
"\u0006\u0000\u0000F\u0011\u0001\u0000\u0000\u0000\u0005\u0014\u0016\'"+
|
"\u0000\u0000\u000096\u0001\u0000\u0000\u0000:=\u0001\u0000\u0000\u0000"+
|
||||||
"/@";
|
";9\u0001\u0000\u0000\u0000;<\u0001\u0000\u0000\u0000<\t\u0001\u0000\u0000"+
|
||||||
|
"\u0000=;\u0001\u0000\u0000\u0000>?\u0005\u001d\u0000\u0000?@\u0003\b\u0004"+
|
||||||
|
"\u0000@A\u0005\u001e\u0000\u0000AD\u0001\u0000\u0000\u0000BD\u0005\u0013"+
|
||||||
|
"\u0000\u0000C>\u0001\u0000\u0000\u0000CB\u0001\u0000\u0000\u0000D\u000b"+
|
||||||
|
"\u0001\u0000\u0000\u0000EF\u0007\u0000\u0000\u0000F\r\u0001\u0000\u0000"+
|
||||||
|
"\u0000GI\u0005 \u0000\u0000HG\u0001\u0000\u0000\u0000HI\u0001\u0000\u0000"+
|
||||||
|
"\u0000IJ\u0001\u0000\u0000\u0000JK\u0005\u0012\u0000\u0000KL\u0005\u0004"+
|
||||||
|
"\u0000\u0000LN\u0005\u001a\u0000\u0000MO\u0003\u0004\u0002\u0000NM\u0001"+
|
||||||
|
"\u0000\u0000\u0000NO\u0001\u0000\u0000\u0000OQ\u0001\u0000\u0000\u0000"+
|
||||||
|
"PR\u0003\u0010\b\u0000QP\u0001\u0000\u0000\u0000QR\u0001\u0000\u0000\u0000"+
|
||||||
|
"RS\u0001\u0000\u0000\u0000ST\u0003\u0012\t\u0000TU\u0005\u001d\u0000\u0000"+
|
||||||
|
"UV\u0003\u0016\u000b\u0000VW\u0005\u001e\u0000\u0000WX\u0005\u001b\u0000"+
|
||||||
|
"\u0000X\u000f\u0001\u0000\u0000\u0000YZ\u0005\u0005\u0000\u0000Z[\u0003"+
|
||||||
|
"\u001c\u000e\u0000[\\\u0005\u001b\u0000\u0000\\\u0011\u0001\u0000\u0000"+
|
||||||
|
"\u0000]^\u0005\u0006\u0000\u0000^_\u0005\u0018\u0000\u0000_d\u0003\u0014"+
|
||||||
|
"\n\u0000`a\u0005\u001c\u0000\u0000ac\u0003\u0014\n\u0000b`\u0001\u0000"+
|
||||||
|
"\u0000\u0000cf\u0001\u0000\u0000\u0000db\u0001\u0000\u0000\u0000de\u0001"+
|
||||||
|
"\u0000\u0000\u0000eg\u0001\u0000\u0000\u0000fd\u0001\u0000\u0000\u0000"+
|
||||||
|
"gh\u0005\u0019\u0000\u0000hi\u0005\u001b\u0000\u0000i\u0013\u0001\u0000"+
|
||||||
|
"\u0000\u0000jk\u0003\u001a\r\u0000kl\u0005\u0012\u0000\u0000l\u0015\u0001"+
|
||||||
|
"\u0000\u0000\u0000mr\u0003\u0018\f\u0000no\u0005\u001c\u0000\u0000oq\u0003"+
|
||||||
|
"\u0018\f\u0000pn\u0001\u0000\u0000\u0000qt\u0001\u0000\u0000\u0000rp\u0001"+
|
||||||
|
"\u0000\u0000\u0000rs\u0001\u0000\u0000\u0000s\u0017\u0001\u0000\u0000"+
|
||||||
|
"\u0000tr\u0001\u0000\u0000\u0000uv\u0005\u0013\u0000\u0000vw\u0005\u001a"+
|
||||||
|
"\u0000\u0000wx\u0007\u0001\u0000\u0000x\u0019\u0001\u0000\u0000\u0000"+
|
||||||
|
"yz\u0007\u0002\u0000\u0000z\u001b\u0001\u0000\u0000\u0000{|\u0007\u0003"+
|
||||||
|
"\u0000\u0000|\u001d\u0001\u0000\u0000\u0000\u000b \"%*;CHNQdr";
|
||||||
public static final ATN _ATN =
|
public static final ATN _ATN =
|
||||||
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
||||||
static {
|
static {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
package org.lumijiez.parser;// Generated from D:/Source/JavaProjects/dsl-formal-requirements/src/grammars/SoftwareRequirements.g4 by ANTLR 4.13.1
|
// Generated from D:/Source/JavaProjects/dsl-formal-requirements/src/grammars/SoftwareRequirements.g4 by ANTLR 4.13.1
|
||||||
|
package org.lumijiez.parser;
|
||||||
import org.antlr.v4.runtime.tree.ParseTreeVisitor;
|
import org.antlr.v4.runtime.tree.ParseTreeVisitor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -16,11 +17,17 @@ public interface SoftwareRequirementsVisitor<T> extends ParseTreeVisitor<T> {
|
|||||||
*/
|
*/
|
||||||
T visitProgram(SoftwareRequirementsParser.ProgramContext ctx);
|
T visitProgram(SoftwareRequirementsParser.ProgramContext ctx);
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link SoftwareRequirementsParser#requirement}.
|
* Visit a parse tree produced by {@link SoftwareRequirementsParser#requirementSpec}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitRequirement(SoftwareRequirementsParser.RequirementContext ctx);
|
T visitRequirementSpec(SoftwareRequirementsParser.RequirementSpecContext ctx);
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by {@link SoftwareRequirementsParser#description}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
T visitDescription(SoftwareRequirementsParser.DescriptionContext ctx);
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link SoftwareRequirementsParser#predicate}.
|
* Visit a parse tree produced by {@link SoftwareRequirementsParser#predicate}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@@ -51,6 +58,24 @@ public interface SoftwareRequirementsVisitor<T> extends ParseTreeVisitor<T> {
|
|||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitFunctionSpec(SoftwareRequirementsParser.FunctionSpecContext ctx);
|
T visitFunctionSpec(SoftwareRequirementsParser.FunctionSpecContext ctx);
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by {@link SoftwareRequirementsParser#access_modifier}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
T visitAccess_modifier(SoftwareRequirementsParser.Access_modifierContext ctx);
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by {@link SoftwareRequirementsParser#return_types}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
T visitReturn_types(SoftwareRequirementsParser.Return_typesContext ctx);
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by {@link SoftwareRequirementsParser#return}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
T visitReturn(SoftwareRequirementsParser.ReturnContext ctx);
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link SoftwareRequirementsParser#parameter_list}.
|
* Visit a parse tree produced by {@link SoftwareRequirementsParser#parameter_list}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@@ -63,4 +88,16 @@ public interface SoftwareRequirementsVisitor<T> extends ParseTreeVisitor<T> {
|
|||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitParameter(SoftwareRequirementsParser.ParameterContext ctx);
|
T visitParameter(SoftwareRequirementsParser.ParameterContext ctx);
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by {@link SoftwareRequirementsParser#type}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
T visitType(SoftwareRequirementsParser.TypeContext ctx);
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by {@link SoftwareRequirementsParser#access_modifiers}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
T visitAccess_modifiers(SoftwareRequirementsParser.Access_modifiersContext ctx);
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,9 @@
|
|||||||
DatabaseAccess:
|
!DatabaseAccess:
|
||||||
("UserIsAuthenticated" && "UserHasPermission") => ("AccessToAdminPanel" || "AccessToModeratorPanel");
|
~This is for comments, or descriptions~
|
||||||
|
{"UserIsAuthenticated" && "UserHasPermission"} => {"AccessToAdminPanel" || "AccessToModeratorPanel"};
|
||||||
|
|
||||||
GetUserList():
|
GetUserList():
|
||||||
("Return" : "int x, float y", "Execution Time" : "<1s");
|
~This is for comments, or descriptions~
|
||||||
|
Access PRIVATE;
|
||||||
|
Return (INT x, FLOAT v);
|
||||||
|
{"Execution Time" : "<1s", "MaxValue" : 100};
|
||||||
|
|||||||
Reference in New Issue
Block a user