From ac100e8531076265a923a0b62668d9441b73599b Mon Sep 17 00:00:00 2001
From: Daniel
Date: Tue, 5 Mar 2024 22:54:19 +0200
Subject: [PATCH] lol
---
.idea/misc.xml | 16 +
src/grammars/SoftwareRequirements.g4 | 53 +-
src/main/java/org/lumijiez/Main.java | 1 +
.../parser/SoftwareRequirements.interp | 46 +-
.../parser/SoftwareRequirements.tokens | 67 +-
.../SoftwareRequirementsBaseListener.java | 76 +-
.../SoftwareRequirementsBaseVisitor.java | 47 +-
.../parser/SoftwareRequirementsLexer.interp | 56 +-
.../parser/SoftwareRequirementsLexer.java | 205 ++++--
.../parser/SoftwareRequirementsLexer.tokens | 67 +-
.../parser/SoftwareRequirementsListener.java | 71 +-
.../parser/SoftwareRequirementsParser.java | 688 ++++++++++++++----
.../parser/SoftwareRequirementsVisitor.java | 43 +-
src/main/resources/TestProgram.txt | 10 +-
14 files changed, 1216 insertions(+), 230 deletions(-)
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 893a262..faf7c92 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,5 +1,21 @@
+
+
+
diff --git a/src/grammars/SoftwareRequirements.g4 b/src/grammars/SoftwareRequirements.g4
index 52b7e3e..3777422 100644
--- a/src/grammars/SoftwareRequirements.g4
+++ b/src/grammars/SoftwareRequirements.g4
@@ -3,28 +3,65 @@ grammar SoftwareRequirements;
// Loser rules
ID : [a-zA-Z]+ ;
STRING : '"' ~'"'* '"' ;
+DESCRIPTION : '~' ~[~]*? '~' ;
WS : [ \t\r\n]+ -> skip ;
+INT : [0-9]+ ;
+FLOAT : [0-9]+ '.' [0-9]* | '.' [0-9]+ ;
// Puturos rules
-program : (requirement | functionSpec)+ ;
+program : (requirementSpec | functionSpec)+ ;
-requirement : ID ':' predicate ';' ;
+requirementSpec : EXCLAM? ID
+ (':' description)?
+ predicate ';' ;
+
+description : DESCRIPTION;
predicate : expression '=>' expression ;
expression : term (logical_op term)* ;
-term : '(' expression ')'
- | STRING
- ;
+term : '{' expression '}'
+ | STRING;
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 : STRING ':' STRING ;
+parameter : STRING ':'
+ (STRING
+ | INT
+ | FLOAT)
+ ;
+
+type : 'INT'
+ | 'FLOAT'
+ | 'DOUBLE'
+ | 'STRING'
+ | 'BOOLEAN'
+ | 'CHAR'
+ | 'VOID'
+ ;
+
+access_modifiers : 'PUBLIC'
+ | 'PROTECTED'
+ | 'PRIVATE'
+ | 'DEFAULT'
+ ;
// Symballs
LPAREN : '(' ;
@@ -34,3 +71,5 @@ SEMICOLON : ';' ;
COMMA : ',' ;
LBRACE : '{' ;
RBRACE : '}' ;
+TILDE : '~' ;
+EXCLAM : '!' ;
diff --git a/src/main/java/org/lumijiez/Main.java b/src/main/java/org/lumijiez/Main.java
index a22f182..b326590 100644
--- a/src/main/java/org/lumijiez/Main.java
+++ b/src/main/java/org/lumijiez/Main.java
@@ -7,6 +7,7 @@ import org.antlr.v4.runtime.tree.ParseTreeWalker;
import org.lumijiez.parser.SoftwareRequirementsBaseListener;
import org.lumijiez.parser.SoftwareRequirementsLexer;
import org.lumijiez.parser.SoftwareRequirementsParser;
+
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Files;
diff --git a/src/main/java/org/lumijiez/parser/SoftwareRequirements.interp b/src/main/java/org/lumijiez/parser/SoftwareRequirements.interp
index 8f147d9..09dbe80 100644
--- a/src/main/java/org/lumijiez/parser/SoftwareRequirements.interp
+++ b/src/main/java/org/lumijiez/parser/SoftwareRequirements.interp
@@ -4,6 +4,22 @@ null
'&&'
'||'
'()'
+'Access '
+'Return'
+'INT'
+'FLOAT'
+'DOUBLE'
+'STRING'
+'BOOLEAN'
+'CHAR'
+'VOID'
+'PUBLIC'
+'PROTECTED'
+'PRIVATE'
+'DEFAULT'
+null
+null
+null
null
null
null
@@ -14,6 +30,8 @@ null
','
'{'
'}'
+'~'
+'!'
token symbolic names:
null
@@ -21,9 +39,25 @@ null
null
null
null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
ID
STRING
+DESCRIPTION
WS
+INT
+FLOAT
LPAREN
RPAREN
COLON
@@ -31,18 +65,26 @@ SEMICOLON
COMMA
LBRACE
RBRACE
+TILDE
+EXCLAM
rule names:
program
-requirement
+requirementSpec
+description
predicate
expression
term
logical_op
functionSpec
+access_modifier
+return_types
+return
parameter_list
parameter
+type
+access_modifiers
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]
\ No newline at end of file
+[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]
\ No newline at end of file
diff --git a/src/main/java/org/lumijiez/parser/SoftwareRequirements.tokens b/src/main/java/org/lumijiez/parser/SoftwareRequirements.tokens
index 5f62f43..1eb4d46 100644
--- a/src/main/java/org/lumijiez/parser/SoftwareRequirements.tokens
+++ b/src/main/java/org/lumijiez/parser/SoftwareRequirements.tokens
@@ -2,24 +2,57 @@ T__0=1
T__1=2
T__2=3
T__3=4
-ID=5
-STRING=6
-WS=7
-LPAREN=8
-RPAREN=9
-COLON=10
-SEMICOLON=11
-COMMA=12
-LBRACE=13
-RBRACE=14
+T__4=5
+T__5=6
+T__6=7
+T__7=8
+T__8=9
+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
'=>'=1
'&&'=2
'||'=3
'()'=4
-'('=8
-')'=9
-':'=10
-';'=11
-','=12
-'{'=13
-'}'=14
+'Access '=5
+'Return'=6
+'INT'=7
+'FLOAT'=8
+'DOUBLE'=9
+'STRING'=10
+'BOOLEAN'=11
+'CHAR'=12
+'VOID'=13
+'PUBLIC'=14
+'PROTECTED'=15
+'PRIVATE'=16
+'DEFAULT'=17
+'('=24
+')'=25
+':'=26
+';'=27
+','=28
+'{'=29
+'}'=30
+'~'=31
+'!'=32
diff --git a/src/main/java/org/lumijiez/parser/SoftwareRequirementsBaseListener.java b/src/main/java/org/lumijiez/parser/SoftwareRequirementsBaseListener.java
index a4feec6..0c7b537 100644
--- a/src/main/java/org/lumijiez/parser/SoftwareRequirementsBaseListener.java
+++ b/src/main/java/org/lumijiez/parser/SoftwareRequirementsBaseListener.java
@@ -29,13 +29,25 @@ public class SoftwareRequirementsBaseListener implements SoftwareRequirementsLis
*
* The default implementation does nothing.
*/
- @Override public void enterRequirement(SoftwareRequirementsParser.RequirementContext ctx) { }
+ @Override public void enterRequirementSpec(SoftwareRequirementsParser.RequirementSpecContext ctx) { }
/**
* {@inheritDoc}
*
* The default implementation does nothing.
*/
- @Override public void exitRequirement(SoftwareRequirementsParser.RequirementContext ctx) { }
+ @Override public void exitRequirementSpec(SoftwareRequirementsParser.RequirementSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDescription(SoftwareRequirementsParser.DescriptionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDescription(SoftwareRequirementsParser.DescriptionContext ctx) { }
/**
* {@inheritDoc}
*
@@ -96,6 +108,42 @@ public class SoftwareRequirementsBaseListener implements SoftwareRequirementsLis
* The default implementation does nothing.
*/
@Override public void exitFunctionSpec(SoftwareRequirementsParser.FunctionSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAccess_modifier(SoftwareRequirementsParser.Access_modifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAccess_modifier(SoftwareRequirementsParser.Access_modifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterReturn_types(SoftwareRequirementsParser.Return_typesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitReturn_types(SoftwareRequirementsParser.Return_typesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterReturn(SoftwareRequirementsParser.ReturnContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitReturn(SoftwareRequirementsParser.ReturnContext ctx) { }
/**
* {@inheritDoc}
*
@@ -120,6 +168,30 @@ public class SoftwareRequirementsBaseListener implements SoftwareRequirementsLis
* The default implementation does nothing.
*/
@Override public void exitParameter(SoftwareRequirementsParser.ParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterType(SoftwareRequirementsParser.TypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitType(SoftwareRequirementsParser.TypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAccess_modifiers(SoftwareRequirementsParser.Access_modifiersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAccess_modifiers(SoftwareRequirementsParser.Access_modifiersContext ctx) { }
/**
* {@inheritDoc}
diff --git a/src/main/java/org/lumijiez/parser/SoftwareRequirementsBaseVisitor.java b/src/main/java/org/lumijiez/parser/SoftwareRequirementsBaseVisitor.java
index 3cf557a..bf6c7b0 100644
--- a/src/main/java/org/lumijiez/parser/SoftwareRequirementsBaseVisitor.java
+++ b/src/main/java/org/lumijiez/parser/SoftwareRequirementsBaseVisitor.java
@@ -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;
/**
@@ -24,7 +25,14 @@ public class SoftwareRequirementsBaseVisitor extends AbstractParseTreeVisitor
* The default implementation returns the result of calling
* {@link #visitChildren} on {@code ctx}.
*/
- @Override public T visitRequirement(SoftwareRequirementsParser.RequirementContext ctx) { return visitChildren(ctx); }
+ @Override public T visitRequirementSpec(SoftwareRequirementsParser.RequirementSpecContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitDescription(SoftwareRequirementsParser.DescriptionContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@@ -60,6 +68,27 @@ public class SoftwareRequirementsBaseVisitor extends AbstractParseTreeVisitor
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitFunctionSpec(SoftwareRequirementsParser.FunctionSpecContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitAccess_modifier(SoftwareRequirementsParser.Access_modifierContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitReturn_types(SoftwareRequirementsParser.Return_typesContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitReturn(SoftwareRequirementsParser.ReturnContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@@ -74,4 +103,18 @@ public class SoftwareRequirementsBaseVisitor extends AbstractParseTreeVisitor
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitParameter(SoftwareRequirementsParser.ParameterContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitType(SoftwareRequirementsParser.TypeContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitAccess_modifiers(SoftwareRequirementsParser.Access_modifiersContext ctx) { return visitChildren(ctx); }
}
\ No newline at end of file
diff --git a/src/main/java/org/lumijiez/parser/SoftwareRequirementsLexer.interp b/src/main/java/org/lumijiez/parser/SoftwareRequirementsLexer.interp
index 215c4f6..16cf7d9 100644
--- a/src/main/java/org/lumijiez/parser/SoftwareRequirementsLexer.interp
+++ b/src/main/java/org/lumijiez/parser/SoftwareRequirementsLexer.interp
@@ -4,6 +4,22 @@ null
'&&'
'||'
'()'
+'Access '
+'Return'
+'INT'
+'FLOAT'
+'DOUBLE'
+'STRING'
+'BOOLEAN'
+'CHAR'
+'VOID'
+'PUBLIC'
+'PROTECTED'
+'PRIVATE'
+'DEFAULT'
+null
+null
+null
null
null
null
@@ -14,6 +30,8 @@ null
','
'{'
'}'
+'~'
+'!'
token symbolic names:
null
@@ -21,9 +39,25 @@ null
null
null
null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
ID
STRING
+DESCRIPTION
WS
+INT
+FLOAT
LPAREN
RPAREN
COLON
@@ -31,15 +65,33 @@ SEMICOLON
COMMA
LBRACE
RBRACE
+TILDE
+EXCLAM
rule names:
T__0
T__1
T__2
T__3
+T__4
+T__5
+T__6
+T__7
+T__8
+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
@@ -47,6 +99,8 @@ SEMICOLON
COMMA
LBRACE
RBRACE
+TILDE
+EXCLAM
channel names:
DEFAULT_TOKEN_CHANNEL
@@ -56,4 +110,4 @@ mode names:
DEFAULT_MODE
atn:
-[4, 0, 14, 76, 6, -1, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 4, 4, 43, 8, 4, 11, 4, 12, 4, 44, 1, 5, 1, 5, 5, 5, 49, 8, 5, 10, 5, 12, 5, 52, 9, 5, 1, 5, 1, 5, 1, 6, 4, 6, 57, 8, 6, 11, 6, 12, 6, 58, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 0, 0, 14, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 1, 0, 3, 2, 0, 65, 90, 97, 122, 1, 0, 34, 34, 3, 0, 9, 10, 13, 13, 32, 32, 78, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 1, 29, 1, 0, 0, 0, 3, 32, 1, 0, 0, 0, 5, 35, 1, 0, 0, 0, 7, 38, 1, 0, 0, 0, 9, 42, 1, 0, 0, 0, 11, 46, 1, 0, 0, 0, 13, 56, 1, 0, 0, 0, 15, 62, 1, 0, 0, 0, 17, 64, 1, 0, 0, 0, 19, 66, 1, 0, 0, 0, 21, 68, 1, 0, 0, 0, 23, 70, 1, 0, 0, 0, 25, 72, 1, 0, 0, 0, 27, 74, 1, 0, 0, 0, 29, 30, 5, 61, 0, 0, 30, 31, 5, 62, 0, 0, 31, 2, 1, 0, 0, 0, 32, 33, 5, 38, 0, 0, 33, 34, 5, 38, 0, 0, 34, 4, 1, 0, 0, 0, 35, 36, 5, 124, 0, 0, 36, 37, 5, 124, 0, 0, 37, 6, 1, 0, 0, 0, 38, 39, 5, 40, 0, 0, 39, 40, 5, 41, 0, 0, 40, 8, 1, 0, 0, 0, 41, 43, 7, 0, 0, 0, 42, 41, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 10, 1, 0, 0, 0, 46, 50, 5, 34, 0, 0, 47, 49, 8, 1, 0, 0, 48, 47, 1, 0, 0, 0, 49, 52, 1, 0, 0, 0, 50, 48, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 53, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 53, 54, 5, 34, 0, 0, 54, 12, 1, 0, 0, 0, 55, 57, 7, 2, 0, 0, 56, 55, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 56, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 6, 6, 0, 0, 61, 14, 1, 0, 0, 0, 62, 63, 5, 40, 0, 0, 63, 16, 1, 0, 0, 0, 64, 65, 5, 41, 0, 0, 65, 18, 1, 0, 0, 0, 66, 67, 5, 58, 0, 0, 67, 20, 1, 0, 0, 0, 68, 69, 5, 59, 0, 0, 69, 22, 1, 0, 0, 0, 70, 71, 5, 44, 0, 0, 71, 24, 1, 0, 0, 0, 72, 73, 5, 123, 0, 0, 73, 26, 1, 0, 0, 0, 74, 75, 5, 125, 0, 0, 75, 28, 1, 0, 0, 0, 4, 0, 44, 50, 58, 1, 6, 0, 0]
\ No newline at end of file
+[4, 0, 32, 240, 6, -1, 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, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 4, 17, 169, 8, 17, 11, 17, 12, 17, 170, 1, 18, 1, 18, 5, 18, 175, 8, 18, 10, 18, 12, 18, 178, 9, 18, 1, 18, 1, 18, 1, 19, 1, 19, 5, 19, 184, 8, 19, 10, 19, 12, 19, 187, 9, 19, 1, 19, 1, 19, 1, 20, 4, 20, 192, 8, 20, 11, 20, 12, 20, 193, 1, 20, 1, 20, 1, 21, 4, 21, 199, 8, 21, 11, 21, 12, 21, 200, 1, 22, 4, 22, 204, 8, 22, 11, 22, 12, 22, 205, 1, 22, 1, 22, 5, 22, 210, 8, 22, 10, 22, 12, 22, 213, 9, 22, 1, 22, 1, 22, 4, 22, 217, 8, 22, 11, 22, 12, 22, 218, 3, 22, 221, 8, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 185, 0, 32, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 1, 0, 5, 2, 0, 65, 90, 97, 122, 1, 0, 34, 34, 1, 0, 126, 126, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 248, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 1, 65, 1, 0, 0, 0, 3, 68, 1, 0, 0, 0, 5, 71, 1, 0, 0, 0, 7, 74, 1, 0, 0, 0, 9, 77, 1, 0, 0, 0, 11, 85, 1, 0, 0, 0, 13, 92, 1, 0, 0, 0, 15, 96, 1, 0, 0, 0, 17, 102, 1, 0, 0, 0, 19, 109, 1, 0, 0, 0, 21, 116, 1, 0, 0, 0, 23, 124, 1, 0, 0, 0, 25, 129, 1, 0, 0, 0, 27, 134, 1, 0, 0, 0, 29, 141, 1, 0, 0, 0, 31, 151, 1, 0, 0, 0, 33, 159, 1, 0, 0, 0, 35, 168, 1, 0, 0, 0, 37, 172, 1, 0, 0, 0, 39, 181, 1, 0, 0, 0, 41, 191, 1, 0, 0, 0, 43, 198, 1, 0, 0, 0, 45, 220, 1, 0, 0, 0, 47, 222, 1, 0, 0, 0, 49, 224, 1, 0, 0, 0, 51, 226, 1, 0, 0, 0, 53, 228, 1, 0, 0, 0, 55, 230, 1, 0, 0, 0, 57, 232, 1, 0, 0, 0, 59, 234, 1, 0, 0, 0, 61, 236, 1, 0, 0, 0, 63, 238, 1, 0, 0, 0, 65, 66, 5, 61, 0, 0, 66, 67, 5, 62, 0, 0, 67, 2, 1, 0, 0, 0, 68, 69, 5, 38, 0, 0, 69, 70, 5, 38, 0, 0, 70, 4, 1, 0, 0, 0, 71, 72, 5, 124, 0, 0, 72, 73, 5, 124, 0, 0, 73, 6, 1, 0, 0, 0, 74, 75, 5, 40, 0, 0, 75, 76, 5, 41, 0, 0, 76, 8, 1, 0, 0, 0, 77, 78, 5, 65, 0, 0, 78, 79, 5, 99, 0, 0, 79, 80, 5, 99, 0, 0, 80, 81, 5, 101, 0, 0, 81, 82, 5, 115, 0, 0, 82, 83, 5, 115, 0, 0, 83, 84, 5, 32, 0, 0, 84, 10, 1, 0, 0, 0, 85, 86, 5, 82, 0, 0, 86, 87, 5, 101, 0, 0, 87, 88, 5, 116, 0, 0, 88, 89, 5, 117, 0, 0, 89, 90, 5, 114, 0, 0, 90, 91, 5, 110, 0, 0, 91, 12, 1, 0, 0, 0, 92, 93, 5, 73, 0, 0, 93, 94, 5, 78, 0, 0, 94, 95, 5, 84, 0, 0, 95, 14, 1, 0, 0, 0, 96, 97, 5, 70, 0, 0, 97, 98, 5, 76, 0, 0, 98, 99, 5, 79, 0, 0, 99, 100, 5, 65, 0, 0, 100, 101, 5, 84, 0, 0, 101, 16, 1, 0, 0, 0, 102, 103, 5, 68, 0, 0, 103, 104, 5, 79, 0, 0, 104, 105, 5, 85, 0, 0, 105, 106, 5, 66, 0, 0, 106, 107, 5, 76, 0, 0, 107, 108, 5, 69, 0, 0, 108, 18, 1, 0, 0, 0, 109, 110, 5, 83, 0, 0, 110, 111, 5, 84, 0, 0, 111, 112, 5, 82, 0, 0, 112, 113, 5, 73, 0, 0, 113, 114, 5, 78, 0, 0, 114, 115, 5, 71, 0, 0, 115, 20, 1, 0, 0, 0, 116, 117, 5, 66, 0, 0, 117, 118, 5, 79, 0, 0, 118, 119, 5, 79, 0, 0, 119, 120, 5, 76, 0, 0, 120, 121, 5, 69, 0, 0, 121, 122, 5, 65, 0, 0, 122, 123, 5, 78, 0, 0, 123, 22, 1, 0, 0, 0, 124, 125, 5, 67, 0, 0, 125, 126, 5, 72, 0, 0, 126, 127, 5, 65, 0, 0, 127, 128, 5, 82, 0, 0, 128, 24, 1, 0, 0, 0, 129, 130, 5, 86, 0, 0, 130, 131, 5, 79, 0, 0, 131, 132, 5, 73, 0, 0, 132, 133, 5, 68, 0, 0, 133, 26, 1, 0, 0, 0, 134, 135, 5, 80, 0, 0, 135, 136, 5, 85, 0, 0, 136, 137, 5, 66, 0, 0, 137, 138, 5, 76, 0, 0, 138, 139, 5, 73, 0, 0, 139, 140, 5, 67, 0, 0, 140, 28, 1, 0, 0, 0, 141, 142, 5, 80, 0, 0, 142, 143, 5, 82, 0, 0, 143, 144, 5, 79, 0, 0, 144, 145, 5, 84, 0, 0, 145, 146, 5, 69, 0, 0, 146, 147, 5, 67, 0, 0, 147, 148, 5, 84, 0, 0, 148, 149, 5, 69, 0, 0, 149, 150, 5, 68, 0, 0, 150, 30, 1, 0, 0, 0, 151, 152, 5, 80, 0, 0, 152, 153, 5, 82, 0, 0, 153, 154, 5, 73, 0, 0, 154, 155, 5, 86, 0, 0, 155, 156, 5, 65, 0, 0, 156, 157, 5, 84, 0, 0, 157, 158, 5, 69, 0, 0, 158, 32, 1, 0, 0, 0, 159, 160, 5, 68, 0, 0, 160, 161, 5, 69, 0, 0, 161, 162, 5, 70, 0, 0, 162, 163, 5, 65, 0, 0, 163, 164, 5, 85, 0, 0, 164, 165, 5, 76, 0, 0, 165, 166, 5, 84, 0, 0, 166, 34, 1, 0, 0, 0, 167, 169, 7, 0, 0, 0, 168, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 36, 1, 0, 0, 0, 172, 176, 5, 34, 0, 0, 173, 175, 8, 1, 0, 0, 174, 173, 1, 0, 0, 0, 175, 178, 1, 0, 0, 0, 176, 174, 1, 0, 0, 0, 176, 177, 1, 0, 0, 0, 177, 179, 1, 0, 0, 0, 178, 176, 1, 0, 0, 0, 179, 180, 5, 34, 0, 0, 180, 38, 1, 0, 0, 0, 181, 185, 5, 126, 0, 0, 182, 184, 8, 2, 0, 0, 183, 182, 1, 0, 0, 0, 184, 187, 1, 0, 0, 0, 185, 186, 1, 0, 0, 0, 185, 183, 1, 0, 0, 0, 186, 188, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 188, 189, 5, 126, 0, 0, 189, 40, 1, 0, 0, 0, 190, 192, 7, 3, 0, 0, 191, 190, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 191, 1, 0, 0, 0, 193, 194, 1, 0, 0, 0, 194, 195, 1, 0, 0, 0, 195, 196, 6, 20, 0, 0, 196, 42, 1, 0, 0, 0, 197, 199, 7, 4, 0, 0, 198, 197, 1, 0, 0, 0, 199, 200, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 44, 1, 0, 0, 0, 202, 204, 7, 4, 0, 0, 203, 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 211, 5, 46, 0, 0, 208, 210, 7, 4, 0, 0, 209, 208, 1, 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, 209, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 221, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 214, 216, 5, 46, 0, 0, 215, 217, 7, 4, 0, 0, 216, 215, 1, 0, 0, 0, 217, 218, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 221, 1, 0, 0, 0, 220, 203, 1, 0, 0, 0, 220, 214, 1, 0, 0, 0, 221, 46, 1, 0, 0, 0, 222, 223, 5, 40, 0, 0, 223, 48, 1, 0, 0, 0, 224, 225, 5, 41, 0, 0, 225, 50, 1, 0, 0, 0, 226, 227, 5, 58, 0, 0, 227, 52, 1, 0, 0, 0, 228, 229, 5, 59, 0, 0, 229, 54, 1, 0, 0, 0, 230, 231, 5, 44, 0, 0, 231, 56, 1, 0, 0, 0, 232, 233, 5, 123, 0, 0, 233, 58, 1, 0, 0, 0, 234, 235, 5, 125, 0, 0, 235, 60, 1, 0, 0, 0, 236, 237, 5, 126, 0, 0, 237, 62, 1, 0, 0, 0, 238, 239, 5, 33, 0, 0, 239, 64, 1, 0, 0, 0, 10, 0, 170, 176, 185, 193, 200, 205, 211, 218, 220, 1, 6, 0, 0]
\ No newline at end of file
diff --git a/src/main/java/org/lumijiez/parser/SoftwareRequirementsLexer.java b/src/main/java/org/lumijiez/parser/SoftwareRequirementsLexer.java
index fda4ddc..a186173 100644
--- a/src/main/java/org/lumijiez/parser/SoftwareRequirementsLexer.java
+++ b/src/main/java/org/lumijiez/parser/SoftwareRequirementsLexer.java
@@ -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.CharStream;
import org.antlr.v4.runtime.Token;
@@ -16,8 +17,11 @@ public class SoftwareRequirementsLexer extends Lexer {
protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache();
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,
- COLON=10, SEMICOLON=11, COMMA=12, LBRACE=13, RBRACE=14;
+ 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,
+ 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 = {
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
};
@@ -28,23 +32,29 @@ public class SoftwareRequirementsLexer extends Lexer {
private static String[] makeRuleNames() {
return new String[] {
- "T__0", "T__1", "T__2", "T__3", "ID", "STRING", "WS", "LPAREN", "RPAREN",
- "COLON", "SEMICOLON", "COMMA", "LBRACE", "RBRACE"
+ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8",
+ "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();
private static String[] makeLiteralNames() {
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 String[] makeSymbolicNames() {
return new String[] {
- null, null, null, null, null, "ID", "STRING", "WS", "LPAREN", "RPAREN",
- "COLON", "SEMICOLON", "COMMA", "LBRACE", "RBRACE"
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ 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();
@@ -106,53 +116,156 @@ public class SoftwareRequirementsLexer extends Lexer {
public ATN getATN() { return _ATN; }
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\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\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"+
- "\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0004\u0004\u0004+\b"+
- "\u0004\u000b\u0004\f\u0004,\u0001\u0005\u0001\u0005\u0005\u00051\b\u0005"+
- "\n\u0005\f\u00054\t\u0005\u0001\u0005\u0001\u0005\u0001\u0006\u0004\u0006"+
- "9\b\u0006\u000b\u0006\f\u0006:\u0001\u0006\u0001\u0006\u0001\u0007\u0001"+
- "\u0007\u0001\b\u0001\b\u0001\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0001"+
- "\u000b\u0001\f\u0001\f\u0001\r\u0001\r\u0000\u0000\u000e\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\u0001\u0000\u0003\u0002"+
- "\u0000AZaz\u0001\u0000\"\"\u0003\u0000\t\n\r\r N\u0000\u0001\u0001\u0000"+
+ "\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001"+
+ "\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001"+
+ "\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+
+ "\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007\u0001"+
+ "\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b"+
+ "\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001"+
+ "\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+
+ "\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001"+
+ "\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\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\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\u0013\u0001\u0000\u0000\u0000\u0000\u0015\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"+
- "\u0003 \u0001\u0000\u0000\u0000\u0005#\u0001\u0000\u0000\u0000\u0007&"+
- "\u0001\u0000\u0000\u0000\t*\u0001\u0000\u0000\u0000\u000b.\u0001\u0000"+
- "\u0000\u0000\r8\u0001\u0000\u0000\u0000\u000f>\u0001\u0000\u0000\u0000"+
- "\u0011@\u0001\u0000\u0000\u0000\u0013B\u0001\u0000\u0000\u0000\u0015D"+
- "\u0001\u0000\u0000\u0000\u0017F\u0001\u0000\u0000\u0000\u0019H\u0001\u0000"+
- "\u0000\u0000\u001bJ\u0001\u0000\u0000\u0000\u001d\u001e\u0005=\u0000\u0000"+
- "\u001e\u001f\u0005>\u0000\u0000\u001f\u0002\u0001\u0000\u0000\u0000 !"+
- "\u0005&\u0000\u0000!\"\u0005&\u0000\u0000\"\u0004\u0001\u0000\u0000\u0000"+
- "#$\u0005|\u0000\u0000$%\u0005|\u0000\u0000%\u0006\u0001\u0000\u0000\u0000"+
- "&\'\u0005(\u0000\u0000\'(\u0005)\u0000\u0000(\b\u0001\u0000\u0000\u0000"+
- ")+\u0007\u0000\u0000\u0000*)\u0001\u0000\u0000\u0000+,\u0001\u0000\u0000"+
- "\u0000,*\u0001\u0000\u0000\u0000,-\u0001\u0000\u0000\u0000-\n\u0001\u0000"+
- "\u0000\u0000.2\u0005\"\u0000\u0000/1\b\u0001\u0000\u00000/\u0001\u0000"+
- "\u0000\u000014\u0001\u0000\u0000\u000020\u0001\u0000\u0000\u000023\u0001"+
- "\u0000\u0000\u000035\u0001\u0000\u0000\u000042\u0001\u0000\u0000\u0000"+
- "56\u0005\"\u0000\u00006\f\u0001\u0000\u0000\u000079\u0007\u0002\u0000"+
- "\u000087\u0001\u0000\u0000\u00009:\u0001\u0000\u0000\u0000:8\u0001\u0000"+
- "\u0000\u0000:;\u0001\u0000\u0000\u0000;<\u0001\u0000\u0000\u0000<=\u0006"+
- "\u0006\u0000\u0000=\u000e\u0001\u0000\u0000\u0000>?\u0005(\u0000\u0000"+
- "?\u0010\u0001\u0000\u0000\u0000@A\u0005)\u0000\u0000A\u0012\u0001\u0000"+
- "\u0000\u0000BC\u0005:\u0000\u0000C\u0014\u0001\u0000\u0000\u0000DE\u0005"+
- ";\u0000\u0000E\u0016\u0001\u0000\u0000\u0000FG\u0005,\u0000\u0000G\u0018"+
- "\u0001\u0000\u0000\u0000HI\u0005{\u0000\u0000I\u001a\u0001\u0000\u0000"+
- "\u0000JK\u0005}\u0000\u0000K\u001c\u0001\u0000\u0000\u0000\u0004\u0000"+
- ",2:\u0001\u0006\u0000\u0000";
+ "\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000"+
+ "\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000"+
+ "#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001"+
+ "\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000"+
+ "\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u0000"+
+ "1\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001"+
+ "\u0000\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000"+
+ "\u0000\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000"+
+ "?\u0001\u0000\u0000\u0000\u0001A\u0001\u0000\u0000\u0000\u0003D\u0001"+
+ "\u0000\u0000\u0000\u0005G\u0001\u0000\u0000\u0000\u0007J\u0001\u0000\u0000"+
+ "\u0000\tM\u0001\u0000\u0000\u0000\u000bU\u0001\u0000\u0000\u0000\r\\\u0001"+
+ "\u0000\u0000\u0000\u000f`\u0001\u0000\u0000\u0000\u0011f\u0001\u0000\u0000"+
+ "\u0000\u0013m\u0001\u0000\u0000\u0000\u0015t\u0001\u0000\u0000\u0000\u0017"+
+ "|\u0001\u0000\u0000\u0000\u0019\u0081\u0001\u0000\u0000\u0000\u001b\u0086"+
+ "\u0001\u0000\u0000\u0000\u001d\u008d\u0001\u0000\u0000\u0000\u001f\u0097"+
+ "\u0001\u0000\u0000\u0000!\u009f\u0001\u0000\u0000\u0000#\u00a8\u0001\u0000"+
+ "\u0000\u0000%\u00ac\u0001\u0000\u0000\u0000\'\u00b5\u0001\u0000\u0000"+
+ "\u0000)\u00bf\u0001\u0000\u0000\u0000+\u00c6\u0001\u0000\u0000\u0000-"+
+ "\u00dc\u0001\u0000\u0000\u0000/\u00de\u0001\u0000\u0000\u00001\u00e0\u0001"+
+ "\u0000\u0000\u00003\u00e2\u0001\u0000\u0000\u00005\u00e4\u0001\u0000\u0000"+
+ "\u00007\u00e6\u0001\u0000\u0000\u00009\u00e8\u0001\u0000\u0000\u0000;"+
+ "\u00ea\u0001\u0000\u0000\u0000=\u00ec\u0001\u0000\u0000\u0000?\u00ee\u0001"+
+ "\u0000\u0000\u0000AB\u0005=\u0000\u0000BC\u0005>\u0000\u0000C\u0002\u0001"+
+ "\u0000\u0000\u0000DE\u0005&\u0000\u0000EF\u0005&\u0000\u0000F\u0004\u0001"+
+ "\u0000\u0000\u0000GH\u0005|\u0000\u0000HI\u0005|\u0000\u0000I\u0006\u0001"+
+ "\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 =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/src/main/java/org/lumijiez/parser/SoftwareRequirementsLexer.tokens b/src/main/java/org/lumijiez/parser/SoftwareRequirementsLexer.tokens
index 5f62f43..1eb4d46 100644
--- a/src/main/java/org/lumijiez/parser/SoftwareRequirementsLexer.tokens
+++ b/src/main/java/org/lumijiez/parser/SoftwareRequirementsLexer.tokens
@@ -2,24 +2,57 @@ T__0=1
T__1=2
T__2=3
T__3=4
-ID=5
-STRING=6
-WS=7
-LPAREN=8
-RPAREN=9
-COLON=10
-SEMICOLON=11
-COMMA=12
-LBRACE=13
-RBRACE=14
+T__4=5
+T__5=6
+T__6=7
+T__7=8
+T__8=9
+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
'=>'=1
'&&'=2
'||'=3
'()'=4
-'('=8
-')'=9
-':'=10
-';'=11
-','=12
-'{'=13
-'}'=14
+'Access '=5
+'Return'=6
+'INT'=7
+'FLOAT'=8
+'DOUBLE'=9
+'STRING'=10
+'BOOLEAN'=11
+'CHAR'=12
+'VOID'=13
+'PUBLIC'=14
+'PROTECTED'=15
+'PRIVATE'=16
+'DEFAULT'=17
+'('=24
+')'=25
+':'=26
+';'=27
+','=28
+'{'=29
+'}'=30
+'~'=31
+'!'=32
diff --git a/src/main/java/org/lumijiez/parser/SoftwareRequirementsListener.java b/src/main/java/org/lumijiez/parser/SoftwareRequirementsListener.java
index 89c7218..b64c0de 100644
--- a/src/main/java/org/lumijiez/parser/SoftwareRequirementsListener.java
+++ b/src/main/java/org/lumijiez/parser/SoftwareRequirementsListener.java
@@ -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;
/**
@@ -17,15 +18,25 @@ public interface SoftwareRequirementsListener extends ParseTreeListener {
*/
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
*/
- 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
*/
- 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}.
* @param ctx the parse tree
@@ -76,6 +87,36 @@ public interface SoftwareRequirementsListener extends ParseTreeListener {
* @param ctx the parse tree
*/
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}.
* @param ctx the parse tree
@@ -96,4 +137,24 @@ public interface SoftwareRequirementsListener extends ParseTreeListener {
* @param ctx the parse tree
*/
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);
}
\ No newline at end of file
diff --git a/src/main/java/org/lumijiez/parser/SoftwareRequirementsParser.java b/src/main/java/org/lumijiez/parser/SoftwareRequirementsParser.java
index 26628b3..6222a54 100644
--- a/src/main/java/org/lumijiez/parser/SoftwareRequirementsParser.java
+++ b/src/main/java/org/lumijiez/parser/SoftwareRequirementsParser.java
@@ -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.dfa.DFA;
import org.antlr.v4.runtime.*;
@@ -16,31 +17,40 @@ public class SoftwareRequirementsParser extends Parser {
protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache();
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,
- COLON=10, SEMICOLON=11, COMMA=12, LBRACE=13, RBRACE=14;
+ 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,
+ 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
- RULE_program = 0, RULE_requirement = 1, RULE_predicate = 2, RULE_expression = 3,
- RULE_term = 4, RULE_logical_op = 5, RULE_functionSpec = 6, RULE_parameter_list = 7,
- RULE_parameter = 8;
+ RULE_program = 0, RULE_requirementSpec = 1, RULE_description = 2, RULE_predicate = 3,
+ RULE_expression = 4, RULE_term = 5, RULE_logical_op = 6, RULE_functionSpec = 7,
+ 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() {
return new String[] {
- "program", "requirement", "predicate", "expression", "term", "logical_op",
- "functionSpec", "parameter_list", "parameter"
+ "program", "requirementSpec", "description", "predicate", "expression",
+ "term", "logical_op", "functionSpec", "access_modifier", "return_types",
+ "return", "parameter_list", "parameter", "type", "access_modifiers"
};
}
public static final String[] ruleNames = makeRuleNames();
private static String[] makeLiteralNames() {
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 String[] makeSymbolicNames() {
return new String[] {
- null, null, null, null, null, "ID", "STRING", "WS", "LPAREN", "RPAREN",
- "COLON", "SEMICOLON", "COMMA", "LBRACE", "RBRACE"
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ 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();
@@ -96,11 +106,11 @@ public class SoftwareRequirementsParser extends Parser {
@SuppressWarnings("CheckReturnValue")
public static class ProgramContext extends ParserRuleContext {
- public List requirement() {
- return getRuleContexts(RequirementContext.class);
+ public List requirementSpec() {
+ return getRuleContexts(RequirementSpecContext.class);
}
- public RequirementContext requirement(int i) {
- return getRuleContext(RequirementContext.class,i);
+ public RequirementSpecContext requirementSpec(int i) {
+ return getRuleContext(RequirementSpecContext.class,i);
}
public List functionSpec() {
return getRuleContexts(FunctionSpecContext.class);
@@ -134,32 +144,32 @@ public class SoftwareRequirementsParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(20);
+ setState(32);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
- setState(20);
+ setState(32);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
case 1:
{
- setState(18);
- requirement();
+ setState(30);
+ requirementSpec();
}
break;
case 2:
{
- setState(19);
+ setState(31);
functionSpec();
}
break;
}
}
- setState(22);
+ setState(34);
_errHandler.sync(this);
_la = _input.LA(1);
- } while ( _la==ID );
+ } while ( _la==ID || _la==EXCLAM );
}
}
catch (RecognitionException re) {
@@ -174,45 +184,70 @@ public class SoftwareRequirementsParser extends Parser {
}
@SuppressWarnings("CheckReturnValue")
- public static class RequirementContext extends ParserRuleContext {
+ public static class RequirementSpecContext extends ParserRuleContext {
public TerminalNode ID() { return getToken(SoftwareRequirementsParser.ID, 0); }
- public TerminalNode COLON() { return getToken(SoftwareRequirementsParser.COLON, 0); }
public PredicateContext predicate() {
return getRuleContext(PredicateContext.class,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);
}
- @Override public int getRuleIndex() { return RULE_requirement; }
+ @Override public int getRuleIndex() { return RULE_requirementSpec; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).enterRequirement(this);
+ if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).enterRequirementSpec(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).exitRequirement(this);
+ if ( listener instanceof SoftwareRequirementsListener ) ((SoftwareRequirementsListener)listener).exitRequirementSpec(this);
}
@Override
public 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);
}
}
- public final RequirementContext requirement() throws RecognitionException {
- RequirementContext _localctx = new RequirementContext(_ctx, getState());
- enterRule(_localctx, 2, RULE_requirement);
+ public final RequirementSpecContext requirementSpec() throws RecognitionException {
+ RequirementSpecContext _localctx = new RequirementSpecContext(_ctx, getState());
+ enterRule(_localctx, 2, RULE_requirementSpec);
+ int _la;
try {
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);
- setState(25);
- match(COLON);
- setState(26);
+ setState(42);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==COLON) {
+ {
+ setState(40);
+ match(COLON);
+ setState(41);
+ description();
+ }
+ }
+
+ setState(44);
predicate();
- setState(27);
+ setState(45);
match(SEMICOLON);
}
}
@@ -227,6 +262,49 @@ public class SoftwareRequirementsParser extends Parser {
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 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")
public static class PredicateContext extends ParserRuleContext {
public List expression() {
@@ -256,15 +334,15 @@ public class SoftwareRequirementsParser extends Parser {
public final PredicateContext predicate() throws RecognitionException {
PredicateContext _localctx = new PredicateContext(_ctx, getState());
- enterRule(_localctx, 4, RULE_predicate);
+ enterRule(_localctx, 6, RULE_predicate);
try {
enterOuterAlt(_localctx, 1);
{
- setState(29);
+ setState(49);
expression();
- setState(30);
+ setState(50);
match(T__0);
- setState(31);
+ setState(51);
expression();
}
}
@@ -314,26 +392,26 @@ public class SoftwareRequirementsParser extends Parser {
public final ExpressionContext expression() throws RecognitionException {
ExpressionContext _localctx = new ExpressionContext(_ctx, getState());
- enterRule(_localctx, 6, RULE_expression);
+ enterRule(_localctx, 8, RULE_expression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(33);
+ setState(53);
term();
- setState(39);
+ setState(59);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__1 || _la==T__2) {
{
{
- setState(34);
+ setState(54);
logical_op();
- setState(35);
+ setState(55);
term();
}
}
- setState(41);
+ setState(61);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -352,11 +430,11 @@ public class SoftwareRequirementsParser extends Parser {
@SuppressWarnings("CheckReturnValue")
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() {
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 TermContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
@@ -379,26 +457,26 @@ public class SoftwareRequirementsParser extends Parser {
public final TermContext term() throws RecognitionException {
TermContext _localctx = new TermContext(_ctx, getState());
- enterRule(_localctx, 8, RULE_term);
+ enterRule(_localctx, 10, RULE_term);
try {
- setState(47);
+ setState(67);
_errHandler.sync(this);
switch (_input.LA(1)) {
- case LPAREN:
+ case LBRACE:
enterOuterAlt(_localctx, 1);
{
- setState(42);
- match(LPAREN);
- setState(43);
+ setState(62);
+ match(LBRACE);
+ setState(63);
expression();
- setState(44);
- match(RPAREN);
+ setState(64);
+ match(RBRACE);
}
break;
case STRING:
enterOuterAlt(_localctx, 2);
{
- setState(46);
+ setState(66);
match(STRING);
}
break;
@@ -440,12 +518,12 @@ public class SoftwareRequirementsParser extends Parser {
public final Logical_opContext logical_op() throws RecognitionException {
Logical_opContext _localctx = new Logical_opContext(_ctx, getState());
- enterRule(_localctx, 10, RULE_logical_op);
+ enterRule(_localctx, 12, RULE_logical_op);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(49);
+ setState(69);
_la = _input.LA(1);
if ( !(_la==T__1 || _la==T__2) ) {
_errHandler.recoverInline(this);
@@ -472,12 +550,22 @@ public class SoftwareRequirementsParser extends Parser {
public static class FunctionSpecContext extends ParserRuleContext {
public TerminalNode ID() { return getToken(SoftwareRequirementsParser.ID, 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() {
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 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) {
super(parent, invokingState);
}
@@ -499,23 +587,56 @@ public class SoftwareRequirementsParser extends Parser {
public final FunctionSpecContext functionSpec() throws RecognitionException {
FunctionSpecContext _localctx = new FunctionSpecContext(_ctx, getState());
- enterRule(_localctx, 12, RULE_functionSpec);
+ enterRule(_localctx, 14, RULE_functionSpec);
+ int _la;
try {
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);
- setState(52);
+ setState(75);
match(T__3);
- setState(53);
+ setState(76);
match(COLON);
- setState(54);
- match(LPAREN);
- setState(55);
+ setState(78);
+ _errHandler.sync(this);
+ _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();
- setState(56);
- match(RPAREN);
- setState(57);
+ setState(86);
+ match(RBRACE);
+ setState(87);
match(SEMICOLON);
}
}
@@ -530,6 +651,184 @@ public class SoftwareRequirementsParser extends Parser {
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 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 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 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 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 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")
public static class Parameter_listContext extends ParserRuleContext {
public List parameter() {
@@ -563,26 +862,26 @@ public class SoftwareRequirementsParser extends Parser {
public final Parameter_listContext parameter_list() throws RecognitionException {
Parameter_listContext _localctx = new Parameter_listContext(_ctx, getState());
- enterRule(_localctx, 14, RULE_parameter_list);
+ enterRule(_localctx, 22, RULE_parameter_list);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(59);
+ setState(109);
parameter();
- setState(64);
+ setState(114);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
- setState(60);
+ setState(110);
match(COMMA);
- setState(61);
+ setState(111);
parameter();
}
}
- setState(66);
+ setState(116);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -606,6 +905,8 @@ public class SoftwareRequirementsParser extends Parser {
return getToken(SoftwareRequirementsParser.STRING, i);
}
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) {
super(parent, invokingState);
}
@@ -627,16 +928,127 @@ public class SoftwareRequirementsParser extends Parser {
public final ParameterContext parameter() throws RecognitionException {
ParameterContext _localctx = new ParameterContext(_ctx, getState());
- enterRule(_localctx, 16, RULE_parameter);
+ enterRule(_localctx, 24, RULE_parameter);
+ int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(67);
+ setState(117);
match(STRING);
- setState(68);
+ setState(118);
match(COLON);
- setState(69);
- match(STRING);
+ setState(119);
+ _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 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 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) {
@@ -651,47 +1063,73 @@ public class SoftwareRequirementsParser extends Parser {
}
public static final String _serializedATN =
- "\u0004\u0001\u000eH\u0002\u0000\u0007\u0000\u0002\u0001\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\u0007\u0002"+
- "\b\u0007\b\u0001\u0000\u0001\u0000\u0004\u0000\u0015\b\u0000\u000b\u0000"+
- "\f\u0000\u0016\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
- "\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003"+
- "\u0001\u0003\u0001\u0003\u0005\u0003&\b\u0003\n\u0003\f\u0003)\t\u0003"+
- "\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0003\u0004"+
- "0\b\u0004\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0006"+
- "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007"+
- "\u0001\u0007\u0001\u0007\u0005\u0007?\b\u0007\n\u0007\f\u0007B\t\u0007"+
- "\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0000\u0000\t\u0000\u0002\u0004"+
- "\u0006\b\n\f\u000e\u0010\u0000\u0001\u0001\u0000\u0002\u0003C\u0000\u0014"+
- "\u0001\u0000\u0000\u0000\u0002\u0018\u0001\u0000\u0000\u0000\u0004\u001d"+
- "\u0001\u0000\u0000\u0000\u0006!\u0001\u0000\u0000\u0000\b/\u0001\u0000"+
- "\u0000\u0000\n1\u0001\u0000\u0000\u0000\f3\u0001\u0000\u0000\u0000\u000e"+
- ";\u0001\u0000\u0000\u0000\u0010C\u0001\u0000\u0000\u0000\u0012\u0015\u0003"+
- "\u0002\u0001\u0000\u0013\u0015\u0003\f\u0006\u0000\u0014\u0012\u0001\u0000"+
- "\u0000\u0000\u0014\u0013\u0001\u0000\u0000\u0000\u0015\u0016\u0001\u0000"+
- "\u0000\u0000\u0016\u0014\u0001\u0000\u0000\u0000\u0016\u0017\u0001\u0000"+
- "\u0000\u0000\u0017\u0001\u0001\u0000\u0000\u0000\u0018\u0019\u0005\u0005"+
- "\u0000\u0000\u0019\u001a\u0005\n\u0000\u0000\u001a\u001b\u0003\u0004\u0002"+
- "\u0000\u001b\u001c\u0005\u000b\u0000\u0000\u001c\u0003\u0001\u0000\u0000"+
- "\u0000\u001d\u001e\u0003\u0006\u0003\u0000\u001e\u001f\u0005\u0001\u0000"+
- "\u0000\u001f \u0003\u0006\u0003\u0000 \u0005\u0001\u0000\u0000\u0000!"+
- "\'\u0003\b\u0004\u0000\"#\u0003\n\u0005\u0000#$\u0003\b\u0004\u0000$&"+
- "\u0001\u0000\u0000\u0000%\"\u0001\u0000\u0000\u0000&)\u0001\u0000\u0000"+
- "\u0000\'%\u0001\u0000\u0000\u0000\'(\u0001\u0000\u0000\u0000(\u0007\u0001"+
- "\u0000\u0000\u0000)\'\u0001\u0000\u0000\u0000*+\u0005\b\u0000\u0000+,"+
- "\u0003\u0006\u0003\u0000,-\u0005\t\u0000\u0000-0\u0001\u0000\u0000\u0000"+
- ".0\u0005\u0006\u0000\u0000/*\u0001\u0000\u0000\u0000/.\u0001\u0000\u0000"+
- "\u00000\t\u0001\u0000\u0000\u000012\u0007\u0000\u0000\u00002\u000b\u0001"+
- "\u0000\u0000\u000034\u0005\u0005\u0000\u000045\u0005\u0004\u0000\u0000"+
- "56\u0005\n\u0000\u000067\u0005\b\u0000\u000078\u0003\u000e\u0007\u0000"+
- "89\u0005\t\u0000\u00009:\u0005\u000b\u0000\u0000:\r\u0001\u0000\u0000"+
- "\u0000;@\u0003\u0010\b\u0000<=\u0005\f\u0000\u0000=?\u0003\u0010\b\u0000"+
- "><\u0001\u0000\u0000\u0000?B\u0001\u0000\u0000\u0000@>\u0001\u0000\u0000"+
- "\u0000@A\u0001\u0000\u0000\u0000A\u000f\u0001\u0000\u0000\u0000B@\u0001"+
- "\u0000\u0000\u0000CD\u0005\u0006\u0000\u0000DE\u0005\n\u0000\u0000EF\u0005"+
- "\u0006\u0000\u0000F\u0011\u0001\u0000\u0000\u0000\u0005\u0014\u0016\'"+
- "/@";
+ "\u0004\u0001 ~\u0002\u0000\u0007\u0000\u0002\u0001\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\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\u0002\u000e\u0007\u000e\u0001\u0000\u0001\u0000\u0004"+
+ "\u0000!\b\u0000\u000b\u0000\f\u0000\"\u0001\u0001\u0003\u0001&\b\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0003\u0001+\b\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003"+
+ "\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+
+ "\u0005\u0004:\b\u0004\n\u0004\f\u0004=\t\u0004\u0001\u0005\u0001\u0005"+
+ "\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005D\b\u0005\u0001\u0006"+
+ "\u0001\u0006\u0001\u0007\u0003\u0007I\b\u0007\u0001\u0007\u0001\u0007"+
+ "\u0001\u0007\u0001\u0007\u0003\u0007O\b\u0007\u0001\u0007\u0003\u0007"+
+ "R\b\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
+ "\u0001\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001"+
+ "\t\u0001\t\u0005\tc\b\t\n\t\f\tf\t\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001"+
+ "\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0005\u000bq\b\u000b\n"+
+ "\u000b\f\u000bt\t\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001"+
+ "\r\u0001\u000e\u0001\u000e\u0001\u000e\u0000\u0000\u000f\u0000\u0002\u0004"+
+ "\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u0000\u0004"+
+ "\u0001\u0000\u0002\u0003\u0002\u0000\u0013\u0013\u0016\u0017\u0001\u0000"+
+ "\u0007\r\u0001\u0000\u000e\u0011y\u0000 \u0001\u0000\u0000\u0000\u0002"+
+ "%\u0001\u0000\u0000\u0000\u0004/\u0001\u0000\u0000\u0000\u00061\u0001"+
+ "\u0000\u0000\u0000\b5\u0001\u0000\u0000\u0000\nC\u0001\u0000\u0000\u0000"+
+ "\fE\u0001\u0000\u0000\u0000\u000eH\u0001\u0000\u0000\u0000\u0010Y\u0001"+
+ "\u0000\u0000\u0000\u0012]\u0001\u0000\u0000\u0000\u0014j\u0001\u0000\u0000"+
+ "\u0000\u0016m\u0001\u0000\u0000\u0000\u0018u\u0001\u0000\u0000\u0000\u001a"+
+ "y\u0001\u0000\u0000\u0000\u001c{\u0001\u0000\u0000\u0000\u001e!\u0003"+
+ "\u0002\u0001\u0000\u001f!\u0003\u000e\u0007\u0000 \u001e\u0001\u0000\u0000"+
+ "\u0000 \u001f\u0001\u0000\u0000\u0000!\"\u0001\u0000\u0000\u0000\" \u0001"+
+ "\u0000\u0000\u0000\"#\u0001\u0000\u0000\u0000#\u0001\u0001\u0000\u0000"+
+ "\u0000$&\u0005 \u0000\u0000%$\u0001\u0000\u0000\u0000%&\u0001\u0000\u0000"+
+ "\u0000&\'\u0001\u0000\u0000\u0000\'*\u0005\u0012\u0000\u0000()\u0005\u001a"+
+ "\u0000\u0000)+\u0003\u0004\u0002\u0000*(\u0001\u0000\u0000\u0000*+\u0001"+
+ "\u0000\u0000\u0000+,\u0001\u0000\u0000\u0000,-\u0003\u0006\u0003\u0000"+
+ "-.\u0005\u001b\u0000\u0000.\u0003\u0001\u0000\u0000\u0000/0\u0005\u0014"+
+ "\u0000\u00000\u0005\u0001\u0000\u0000\u000012\u0003\b\u0004\u000023\u0005"+
+ "\u0001\u0000\u000034\u0003\b\u0004\u00004\u0007\u0001\u0000\u0000\u0000"+
+ "5;\u0003\n\u0005\u000067\u0003\f\u0006\u000078\u0003\n\u0005\u00008:\u0001"+
+ "\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 =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/src/main/java/org/lumijiez/parser/SoftwareRequirementsVisitor.java b/src/main/java/org/lumijiez/parser/SoftwareRequirementsVisitor.java
index d547400..50ae93b 100644
--- a/src/main/java/org/lumijiez/parser/SoftwareRequirementsVisitor.java
+++ b/src/main/java/org/lumijiez/parser/SoftwareRequirementsVisitor.java
@@ -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;
/**
@@ -16,11 +17,17 @@ public interface SoftwareRequirementsVisitor extends ParseTreeVisitor {
*/
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
* @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}.
* @param ctx the parse tree
@@ -51,6 +58,24 @@ public interface SoftwareRequirementsVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
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}.
* @param ctx the parse tree
@@ -63,4 +88,16 @@ public interface SoftwareRequirementsVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
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);
}
\ No newline at end of file
diff --git a/src/main/resources/TestProgram.txt b/src/main/resources/TestProgram.txt
index 99d6e84..412b02c 100644
--- a/src/main/resources/TestProgram.txt
+++ b/src/main/resources/TestProgram.txt
@@ -1,5 +1,9 @@
-DatabaseAccess:
-("UserIsAuthenticated" && "UserHasPermission") => ("AccessToAdminPanel" || "AccessToModeratorPanel");
+!DatabaseAccess:
+~This is for comments, or descriptions~
+{"UserIsAuthenticated" && "UserHasPermission"} => {"AccessToAdminPanel" || "AccessToModeratorPanel"};
GetUserList():
-("Return" : "int x, float y", "Execution Time" : "<1s");
\ No newline at end of file
+~This is for comments, or descriptions~
+Access PRIVATE;
+Return (INT x, FLOAT v);
+{"Execution Time" : "<1s", "MaxValue" : 100};