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

View File

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

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

View File

@@ -29,13 +29,25 @@ public class SoftwareRequirementsBaseListener implements SoftwareRequirementsLis
*
* <p>The default implementation does nothing.</p>
*/
@Override public void enterRequirement(SoftwareRequirementsParser.RequirementContext ctx) { }
@Override public void enterRequirementSpec(SoftwareRequirementsParser.RequirementSpecContext ctx) { }
/**
* {@inheritDoc}
*
* <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}
*
@@ -96,6 +108,42 @@ public class SoftwareRequirementsBaseListener implements SoftwareRequirementsLis
* <p>The default implementation does nothing.</p>
*/
@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}
*
@@ -120,6 +168,30 @@ public class SoftwareRequirementsBaseListener implements SoftwareRequirementsLis
* <p>The default implementation does nothing.</p>
*/
@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}

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;
/**
@@ -24,7 +25,14 @@ public class SoftwareRequirementsBaseVisitor<T> extends AbstractParseTreeVisitor
* <p>The default implementation returns the result of calling
* {@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}
*
@@ -60,6 +68,27 @@ public class SoftwareRequirementsBaseVisitor<T> extends AbstractParseTreeVisitor
* {@link #visitChildren} on {@code ctx}.</p>
*/
@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}
*
@@ -74,4 +103,18 @@ public class SoftwareRequirementsBaseVisitor<T> extends AbstractParseTreeVisitor
* {@link #visitChildren} on {@code ctx}.</p>
*/
@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.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 {

View File

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

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

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.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<RequirementContext> requirement() {
return getRuleContexts(RequirementContext.class);
public List<RequirementSpecContext> 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<FunctionSpecContext> 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> 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> 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<ExpressionContext> 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> 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")
public static class Parameter_listContext extends ParserRuleContext {
public List<ParameterContext> 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> 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) {
@@ -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 {

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;
/**
@@ -16,11 +17,17 @@ public interface SoftwareRequirementsVisitor<T> extends ParseTreeVisitor<T> {
*/
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<T> extends ParseTreeVisitor<T> {
* @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<T> extends ParseTreeVisitor<T> {
* @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);
}