This commit is contained in:
2024-03-05 22:54:19 +02:00
parent 389bb0cfc6
commit ac100e8531
14 changed files with 1216 additions and 230 deletions

16
.idea/misc.xml generated
View File

@@ -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">

View File

@@ -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 : '!' ;

View File

@@ -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;

View File

@@ -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]

View File

@@ -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

View File

@@ -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}

View File

@@ -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

View File

@@ -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 {

View File

@@ -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

View File

@@ -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);
} }

View File

@@ -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 {

View File

@@ -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);
} }

View File

@@ -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};