diff --git a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java index c242bcc..2c45b8d 100644 --- a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java +++ b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java @@ -171,9 +171,9 @@ if(extension.contains(".model")) { openModel(file); } else { - ParserDTRAM parserDTRAM = new ParserDTRAM(); + ParserDTRAM parserDTRAM = new ParserDTRAM(new BufferedReader(new FileReader(file))); try { - model = parserDTRAM.doParseModel(new BufferedReader(new FileReader(file))); + model = parserDTRAM.doParseModel(); graph = constructGraph(model); parserDTRAM.doParseGeometry(graph); curFilePath = file.getAbsolutePath(); @@ -197,10 +197,10 @@ public DataFlowModel openModel(File file) { try { - Parser parser = new Parser(); + Parser parser = new Parser(new BufferedReader(new FileReader(file))); try { - model = parser.doParse(new BufferedReader(new FileReader(file))); + model = parser.doParse(); curFilePath = file.getAbsolutePath(); curFileName = file.getName(); if (!UpdateConflictCheck.run(model)) return null; @@ -590,14 +590,14 @@ public void setChannelCode(DataflowChannelGenerator ch, String code) { ch.setSourceText(code); - Parser parser = new Parser(); - TokenStream stream = parser.new TokenStream(); - + TokenStream stream = new Parser.TokenStream(); + Parser parser = new Parser(stream); + for (String line: code.split("\n")) { stream.addLine(line); } try { - DataflowChannelGenerator ch2 = parser.parseChannel(stream, getModel()); + DataflowChannelGenerator ch2 = parser.parseChannel(getModel()); for (ChannelMember chm2: ch2.getInputChannelMembers()) { for (ChannelMember chm: ch.getInputChannelMembers()) { if (chm2.getIdentifierTemplate() == chm.getIdentifierTemplate()) { diff --git a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/WebServiceEditor.java b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/WebServiceEditor.java index f6c02aa..1b0c7f1 100644 --- a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/WebServiceEditor.java +++ b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/WebServiceEditor.java @@ -1,21 +1,16 @@ package graphicalrefactor.editor; -import static org.junit.Assert.assertThrows; - import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; -import javax.management.remote.SubjectDelegationPermission; - import com.mxgraph.view.mxGraph; import algorithms.UpdateConflictCheck; import models.dataFlowModel.DataFlowModel; import models.webServices.Service; import models.webServices.WebServicesInfo; -import parser.ParserDTRAM; import parser.ParserDTRAMForWebService; import parser.exceptions.ExpectedAssignment; import parser.exceptions.ExpectedChannel; @@ -40,16 +35,16 @@ /**-------------------------------------------------------------------------------- * this class is called when you design of Web services. +/**-------------------------------------------------------------------------------- * - * @author k-Fujii - * + * @author k-fujii */ public class WebServiceEditor extends Editor{ - private WebServicesInfo webServicesInfo = null; + private WebServicesInfo webServices = null; /**-------------------------------------------------------------------------------- - * [Constructor] + * [constructor] /**-------------------------------------------------------------------------------- * * @param graph : the editor of generate prototype tool. @@ -57,7 +52,8 @@ */ public WebServiceEditor(final mxGraph graph) { super(graph); - this.webServicesInfo = new WebServicesInfo(); + + this.webServices = new WebServicesInfo(); } /**-------------------------------------------------------------------------------- @@ -69,7 +65,6 @@ @Override public DataFlowModel open(final File file) { String extension =""; - if(file != null && file.exists()) { String name = file.getName(); extension = name.substring(name.lastIndexOf(".")); @@ -77,27 +72,32 @@ if(extension.contains(".model")) { openModel(file); } else { - ParserDTRAMForWebService parser = new ParserDTRAMForWebService(); - try { - model = parser.doParseModel(new BufferedReader(new FileReader(file))); - graph = constructGraph(model); + try { + ParserDTRAMForWebService parser = new ParserDTRAMForWebService(new BufferedReader(new FileReader(file))); + try { + model = parser.doParseModel(); + graph = constructGraph(model); - parser.doParseGeometry(graph); - parser.doParseWebService(this,model); + parser.doParseGeometry(graph); + parser.doParseWebService(this,model); - curFilePath = file.getAbsolutePath(); - curFileName = file.getName(); + curFilePath = file.getAbsolutePath(); + curFileName = file.getName(); - if (!UpdateConflictCheck.run(model)) return null; + if (!UpdateConflictCheck.run(model)) return null; - updateResourceDependencyGraph(model); + updateResourceDependencyGraph(model); - return model; - } catch (ExpectedChannel | ExpectedChannelName | ExpectedLeftCurlyBracket | ExpectedInOrOutOrRefKeyword - | ExpectedStateTransition | ExpectedEquals | ExpectedRHSExpression | WrongLHSExpression - | WrongRHSExpression | ExpectedRightBracket | ExpectedAssignment | FileNotFoundException - | ExpectedModel | ExpectedGeometry | ExpectedNode | ExpectedResource | ExpectedFormulaChannel | ExpectedIoChannel - | ExpectedWebService | ExpectedBaseURL| ExpectedResources e) { + return model; + } catch (ExpectedChannel | ExpectedChannelName | ExpectedLeftCurlyBracket | ExpectedInOrOutOrRefKeyword + | ExpectedStateTransition | ExpectedEquals | ExpectedRHSExpression | WrongLHSExpression + | WrongRHSExpression | ExpectedRightBracket | ExpectedAssignment + | ExpectedModel | ExpectedGeometry | ExpectedNode | ExpectedResource + | ExpectedFormulaChannel | ExpectedIoChannel + | ExpectedWebService | ExpectedBaseURL| ExpectedResources e) { + e.printStackTrace(); + } + }catch(FileNotFoundException e) { e.printStackTrace(); } } @@ -106,11 +106,12 @@ } /**-------------------------------------------------------------------------------- - * add service to webServicesInfo - * + * setter + /**-------------------------------------------------------------------------------- + /** + * @param service */ - public void addService(Service service) { - if(this.webServicesInfo == null) new NullPointerException("webServicesInfo is null"); - this.webServicesInfo = this.webServicesInfo.addService(service); + public void addWebService(final Service service) { + this.webServices.addService(service); } } diff --git a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorCellEditor.java b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorCellEditor.java index 2849211..547b1af 100644 --- a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorCellEditor.java +++ b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorCellEditor.java @@ -1,18 +1,13 @@ package graphicalrefactor.views; -import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; -import java.awt.GridLayout; -import java.awt.Panel; import java.awt.Rectangle; import java.util.EventObject; import java.util.List; import javax.swing.BorderFactory; import javax.swing.JComboBox; -import javax.swing.JEditorPane; -import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; @@ -119,8 +114,8 @@ JOptionPane.OK_CANCEL_OPTION, // �I�v�V�����i�{�^���̎�ށj JOptionPane.QUESTION_MESSAGE); // ���b�Z�[�W�^�C�v�i�A�C�R���̎�ށj if(r == JOptionPane.OK_OPTION) { - Parser parser = new Parser(); - TokenStream stream = parser.new TokenStream(); + TokenStream stream = new Parser.TokenStream(); + Parser parser = new Parser(stream); String formula = formulaText.getText(); stream.addLine(formula.split(Parser.EQUALS)[1]); diff --git a/AlgebraicDataflowArchitectureModel/src/parser/Parser.java b/AlgebraicDataflowArchitectureModel/src/parser/Parser.java index df161a3..ea9738b 100644 --- a/AlgebraicDataflowArchitectureModel/src/parser/Parser.java +++ b/AlgebraicDataflowArchitectureModel/src/parser/Parser.java @@ -1,5 +1,6 @@ package parser; +import java.awt.image.DataBufferDouble; import java.io.BufferedReader; import java.io.IOException; import java.util.ArrayList; @@ -30,6 +31,8 @@ import parser.exceptions.WrongRHSExpression; public class Parser { + protected TokenStream stream; + public static final String CHANNEL = "channel"; public static final String INIT = "init"; public static final String LEFT_CURLY_BRACKET = "{"; @@ -58,9 +61,12 @@ public static final String COLON = ":"; - public DataFlowModel doParse(final BufferedReader reader) - throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment { - TokenStream stream = new TokenStream(); + public Parser(final TokenStream stream) { + this.stream = stream; + } + + public Parser(final BufferedReader reader) { + this.stream = new TokenStream(); try { String line; while ((line = reader.readLine()) != null) { @@ -69,17 +75,19 @@ reader.close(); } catch (IOException e) { e.printStackTrace(); - return null; } - - return parseDataFlowModel(stream); + } + + public DataFlowModel doParse() + throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment { + return parseDataFlowModel(); } - public DataFlowModel parseDataFlowModel(final TokenStream stream) + public DataFlowModel parseDataFlowModel() throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment { DataFlowModel model = new DataFlowModel(); DataflowChannelGenerator channel; - while ((channel = parseChannel(stream, model)) != null) { + while ((channel = parseChannel(model)) != null) { if (channel.getInputChannelMembers().size() == 0) { model.addIOChannelGenerator(channel); } else { @@ -89,19 +97,24 @@ return model; } - public DataflowChannelGenerator parseChannel(final TokenStream stream, final DataFlowModel model) - throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment { + public DataflowChannelGenerator parseChannel(final DataFlowModel model) + throws + ExpectedLeftCurlyBracket, ExpectedRightBracket, ExpectedAssignment, + ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, + ExpectedChannel, ExpectedChannelName, ExpectedInOrOutOrRefKeyword, + ExpectedStateTransition, ExpectedEquals + { if (!stream.hasNext()) return null; - if (stream.checkNext().equals(RIGHT_CURLY_BRACKET)) { - return null; - } + if (stream.checkNext().equals(RIGHT_CURLY_BRACKET)) return null; + String channelOrInitKeyword = stream.next(); if (!channelOrInitKeyword.equals(CHANNEL)) { if (!channelOrInitKeyword.equals(INIT)) throw new ExpectedChannel(stream.getLine()); - parseInit(stream, model); + parseInit(model); channelOrInitKeyword = stream.next(); } if (!stream.hasNext()) throw new ExpectedChannelName(stream.getLine()); + String channelName = stream.next(); if (channelName.equals(LEFT_CURLY_BRACKET)) throw new ExpectedChannelName(stream.getLine()); @@ -109,21 +122,22 @@ DataflowChannelGenerator channel = new DataflowChannelGenerator(channelName); String leftBracket = stream.next(); if (!leftBracket.equals(LEFT_CURLY_BRACKET)) throw new ExpectedLeftCurlyBracket(stream.getLine()); + String inOrOutOrRef = null; while (stream.hasNext() && !(inOrOutOrRef = stream.next()).equals(RIGHT_CURLY_BRACKET)) { ChannelMember channelMember = null; if (inOrOutOrRef.equals(IN)) { - channelMember = parseChannelMember(stream, model, inOrOutOrRef); + channelMember = parseChannelMember(model, inOrOutOrRef); if (channelMember != null) { channel.addChannelMemberAsInput(channelMember); } } else if (inOrOutOrRef.equals(OUT)) { - channelMember = parseChannelMember(stream, model, inOrOutOrRef); + channelMember = parseChannelMember(model, inOrOutOrRef); if (channelMember != null) { channel.addChannelMemberAsOutput(channelMember); } } else if (inOrOutOrRef.equals(REF)) { - channelMember = parseChannelMember(stream, model, inOrOutOrRef); + channelMember = parseChannelMember(model, inOrOutOrRef); if (channelMember != null) { channel.addChannelMemberAsReference(channelMember); } @@ -136,8 +150,10 @@ return channel; } - public void parseInit(final TokenStream stream, final DataFlowModel model) - throws ExpectedLeftCurlyBracket, ExpectedAssignment, ExpectedRHSExpression, WrongRHSExpression, ExpectedRightBracket { + public void parseInit(final DataFlowModel model) + throws + ExpectedLeftCurlyBracket, ExpectedAssignment, ExpectedRHSExpression, WrongRHSExpression, ExpectedRightBracket + { String leftBracket = stream.next(); if (!leftBracket.equals(LEFT_CURLY_BRACKET)) throw new ExpectedLeftCurlyBracket(stream.getLine()); String resourceName = null; @@ -167,8 +183,11 @@ } } - public ChannelMember parseChannelMember(final TokenStream stream, final DataFlowModel model, final String inOrOutOrRef) - throws ExpectedRightBracket, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression { + public ChannelMember parseChannelMember(final DataFlowModel model, final String inOrOutOrRef) + throws + ExpectedRightBracket, ExpectedStateTransition, ExpectedEquals, + ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression + { if (!stream.hasNext()) throw new ExpectedStateTransition(stream.getLine()); Expression leftTerm = parseTerm(stream, model); if (leftTerm == null || !(leftTerm instanceof Term)) throw new WrongLHSExpression(stream.getLine()); @@ -220,7 +239,9 @@ return channelMember; } - public Expression parseTerm(final TokenStream stream, final DataFlowModel model) throws ExpectedRightBracket { + public Expression parseTerm(final TokenStream stream, final DataFlowModel model) + throws ExpectedRightBracket + { ArrayList expressions = new ArrayList<>(); ArrayList operators = new ArrayList<>(); String operator = null; @@ -359,17 +380,16 @@ * @param token * @param specificTokenName */ - protected Boolean isMatchSpecificToken(final String token, final String specificTokenName) { + protected Boolean isMatchSpecificToken(final String token, final Token specificToken) { if(token == null) return false; - return (token.equals(specificTokenName)); + return (token.equals(specificToken.getStringValue())); } /**-------------------------------------------------------------------------------- * [inner class] - * - * "TokenStream" has a token what is readed from description of "Architecture Language Model". + * "TokenStream" has a token what is read from description of "Architecture Language Model". */ - public class TokenStream { + public static class TokenStream { private ArrayList> tokens = new ArrayList<>(); private ArrayList lines = new ArrayList<>(); private int line = 0; diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAM.java b/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAM.java index 854694a..05b90c3 100644 --- a/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAM.java +++ b/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAM.java @@ -30,9 +30,6 @@ import parser.exceptions.WrongRHSExpression; public class ParserDTRAM extends Parser { - - protected TokenStream stream = null; - private final String MODEL = "model"; private final String GEOMETRY = "geometry"; private final String NODE = "node"; @@ -42,23 +39,31 @@ private final String IO_CHANNEL = "ioc"; /**-------------------------------------------------------------------------------- + * [Constructor] + /**-------------------------------------------------------------------------------- + * + * @param stream + */ + public ParserDTRAM(final TokenStream stream) { + super(stream); + } + /**-------------------------------------------------------------------------------- * * @param reader */ - public DataFlowModel doParseModel(final BufferedReader reader) + public ParserDTRAM(final BufferedReader reader) { + super(reader); + } + + /**-------------------------------------------------------------------------------- + * [public] + /**-------------------------------------------------------------------------------- + * + * @param reader + */ + public DataFlowModel doParseModel() throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment, ExpectedModel, ExpectedGeometry { - stream = new TokenStream(); - try { - String line; - while ((line = reader.readLine()) != null) { - stream.addLine(line); - } - reader.close(); - } catch (IOException e) { - e.printStackTrace(); - return null; - } - DataFlowModel model = getParsedModel(stream); + DataFlowModel model = getParsedModel(); return model; } @@ -69,16 +74,16 @@ public void doParseGeometry(final mxGraph graph) throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment, ExpectedModel, ExpectedGeometry, ExpectedNode, ExpectedResource, ExpectedFormulaChannel, ExpectedIoChannel{ - parseGeometry(stream, graph); + parseGeometry(graph); } /**-------------------------------------------------------------------------------- - * private + * [private] /**-------------------------------------------------------------------------------- * * @param stream */ - private DataFlowModel getParsedModel(final TokenStream stream) + private DataFlowModel getParsedModel() throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment, ExpectedModel, ExpectedGeometry { if (!stream.hasNext()) throw new NullPointerException(); @@ -89,8 +94,8 @@ String leftBracket = stream.next(); if (!leftBracket.equals(LEFT_CURLY_BRACKET)) throw new ExpectedLeftCurlyBracket(stream.getLine()); - - DataFlowModel model = parseDataFlowModel(stream); + + DataFlowModel model = parseDataFlowModel(); String rightBracket = stream.next(); if(!rightBracket.equals(RIGHT_CURLY_BRACKET))throw new ExpectedRightBracket(stream.getLine()); @@ -103,7 +108,7 @@ * @param stream * @param graph */ - private void parseGeometry(final TokenStream stream, final mxGraph graph) + private void parseGeometry(final mxGraph graph) throws ExpectedRightBracket, ExpectedChannel, ExpectedChannelName, ExpectedLeftCurlyBracket, ExpectedInOrOutOrRefKeyword, ExpectedStateTransition, ExpectedEquals, ExpectedRHSExpression, WrongLHSExpression, WrongRHSExpression, ExpectedAssignment,ExpectedModel, ExpectedGeometry, ExpectedNode, ExpectedResource, ExpectedFormulaChannel, ExpectedIoChannel { String geometoryToken = stream.next(); diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAMForWebService.java b/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAMForWebService.java index bfbcde2..5385a79 100644 --- a/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAMForWebService.java +++ b/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAMForWebService.java @@ -1,5 +1,7 @@ package parser; +import java.io.BufferedReader; + import graphicalrefactor.editor.WebServiceEditor; import models.dataConstraintModel.IdentifierTemplate; import models.dataFlowModel.DataFlowModel; @@ -11,12 +13,30 @@ import parser.exceptions.webService.ExpectedResources; import parser.exceptions.webService.ExpectedWebService; +/**-------------------------------------------------------------------------------- + * + * + * @author k-Fujii + */ public class ParserDTRAMForWebService extends ParserDTRAM { - private final String SERVICES = "services"; - private final String SERVICE = "service"; - private final String BASE_URL = "baseURL"; - private final String RESOURCES = "resources"; + /**-------------------------------------------------------------------------------- + * [constructor] + /**-------------------------------------------------------------------------------- + * + * @param reader + */ + public ParserDTRAMForWebService(final TokenStream stream) { + super(stream); + } + + /**-------------------------------------------------------------------------------- + * + * @param reader + */ + public ParserDTRAMForWebService(final BufferedReader reader) { + super(reader); + } /**-------------------------------------------------------------------------------- * [public] @@ -27,10 +47,11 @@ * @param model */ public void doParseWebService(final WebServiceEditor editor, final DataFlowModel model) - throws ExpectedWebService, ExpectedBaseURL, ExpectedResources, + throws + ExpectedWebService, ExpectedBaseURL, ExpectedResources, ExpectedLeftCurlyBracket, ExpectedRightBracket, ExpectedAssignment { - parseWebService(stream, editor, model); + parseWebService(editor, model); } /**-------------------------------------------------------------------------------- @@ -40,26 +61,26 @@ * * @param stream */ - private void parseWebService(final TokenStream stream, final WebServiceEditor editor, final DataFlowModel model) - throws ExpectedWebService, ExpectedBaseURL, ExpectedResources, + private void parseWebService(final WebServiceEditor editor, final DataFlowModel model) + throws + ExpectedWebService, ExpectedBaseURL, ExpectedResources, ExpectedLeftCurlyBracket, ExpectedRightBracket, ExpectedAssignment { - if(!isMatchSpecificToken(stream.next(),SERVICES)) throw new ExpectedWebService(stream.getLine()); - if(!isMatchSpecificToken(stream.next(),LEFT_CURLY_BRACKET)) throw new ExpectedLeftCurlyBracket(stream.getLine()); + if(!isMatchSpecificToken(stream.next(), Token.DTRAM_SERVICES_KEYWORD)) throw new ExpectedWebService(stream.getLine()); + if(!isMatchSpecificToken(stream.next(), Token.LEFT_CURLY_BRACKET))throw new ExpectedLeftCurlyBracket(stream.getLine()); String serviceTokenNode = stream.next(); - while(isMatchSpecificToken(serviceTokenNode, SERVICE)) { - + while(isMatchSpecificToken(serviceTokenNode, Token.DTRAM_SERVICE_KEYWORD)) { String serviceName = stream.next(); // it gets a service name here. - if(!isMatchSpecificToken(stream.next(), LEFT_CURLY_BRACKET)) throw new ExpectedLeftCurlyBracket(stream.getLine()); - if(!isMatchSpecificToken(stream.next(), BASE_URL)) throw new ExpectedBaseURL(stream.getLine()); - if(!isMatchSpecificToken(stream.next(), COLON)) throw new ExpectedAssignment(stream.getLine()); + if(!isMatchSpecificToken(stream.next(), Token.LEFT_CURLY_BRACKET))throw new ExpectedLeftCurlyBracket(stream.getLine()); + if(!isMatchSpecificToken(stream.next(), Token.DTRAM_SERVICE_BASE_URL_KEYWORD)) throw new ExpectedBaseURL(stream.getLine()); + if(!isMatchSpecificToken(stream.next(), Token.COLON)) throw new ExpectedAssignment(stream.getLine()); String baseURL = stream.next(); // it gets a service's base URL here. - if(!isMatchSpecificToken(stream.next(), RESOURCES)) throw new ExpectedResources(stream.getLine()); - if(!isMatchSpecificToken(stream.next(), COLON)) throw new ExpectedAssignment(stream.getLine()); + if(!isMatchSpecificToken(stream.next(), Token.DTRAM_SERVICE_RESOURCES_KEYWORD))throw new ExpectedResources(stream.getLine()); + if(!isMatchSpecificToken(stream.next(), Token.COLON))throw new ExpectedAssignment(stream.getLine()); // get specific resources from DataFlowModel. Service service = new Service(serviceName, baseURL); @@ -68,21 +89,20 @@ // generate here. String resourceName = stream.next(); IdentifierTemplate identifierTemplate = model.getIdentifierTemplate(resourceName); - service = service.addIdentifireTemplate(identifierTemplate); - - if(!isMatchSpecificToken(stream.checkNext(), COMMA)) break; - + + if(!isMatchSpecificToken(stream.checkNext(), Token.COMMA)) break; + stream.next(); // advance to next token } - editor.addService(service); // reflect to instance of "WebServiceEditor". - - if(!isMatchSpecificToken(stream.next(), RIGHT_CURLY_BRACKET)) throw new ExpectedRightBracket(stream.getLine()); + editor.addWebService(service); // reflect to instance of "WebServiceEditor". - serviceTokenNode = stream.next(); // store "}" token. + if(!isMatchSpecificToken(stream.next(), Token.RIGHT_CURLY_BRACKET)) throw new ExpectedRightBracket(stream.getLine()); + + serviceTokenNode = stream.next(); // here stores "}" token. } - if(!isMatchSpecificToken(serviceTokenNode, RIGHT_CURLY_BRACKET)) throw new ExpectedRightBracket(stream.getLine()); + if(!isMatchSpecificToken(serviceTokenNode, Token.RIGHT_CURLY_BRACKET)) throw new ExpectedRightBracket(stream.getLine()); } } diff --git a/AlgebraicDataflowArchitectureModel/src/parser/Token.java b/AlgebraicDataflowArchitectureModel/src/parser/Token.java new file mode 100644 index 0000000..f53634a --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/parser/Token.java @@ -0,0 +1,78 @@ +package parser; + +/**-------------------------------------------------------------------------------------------------------------------- + * These elements are utilized during the parsing of "model" of "dtram" files. + * + * @author k-fujii + */ + +public enum Token { + /* keywords */ + CHANNEL_KEYWORD("channel"), + INIT_KEYWORD("init"), + IN_KEYWORD("in"), + OUT_KEYWORD("out"), + REF_KEYWORD("ref"), + + DTRAM_MODEL_KEYWORD("model"), + DTRAM_GEOMETORY_KEYWORD("geometory"), + DTRAM_NODE_KEYWORD("node"), + DTRAM_RESOURCE_KEYWORD("r"), + DTRAM_CHANNEL_KEYWORD("c"), + DTRAM_FORMULA_CHANNEL_KEYWORD("fc"), + DTRAM_IO_CHANNEL("ioc"), + + DTRAM_SERVICES_KEYWORD("services"), + DTRAM_SERVICE_KEYWORD("service"), + DTRAM_SERVICE_BASE_URL_KEYWORD("baseURL"), + DTRAM_SERVICE_RESOURCES_KEYWORD("resources"), + + /* operators */ + ADD("+"), + MUL("*"), + SUB("-"), + DIV("/"), + MINUS("-"), + ADD_REGEX("\\+"), + MUL_REGEX("\\*"), + SUB_REGEX("\\-"), + DIV_REGEX("/"), + EQUALS("=="), + ASSIGNMENT("="), + + /* punctators */ + COMMA(","), + COLON(":"), + LEFT_CURLY_BRACKET("{"), + RIGHT_CURLY_BRACKET("}"), + LEFT_CURLY_BRACKET_REGX("\\{"), + RIGHT_CURLY_BRACKET_REGX("\\}"), + LEFT_BRACKET("("), + RIGHT_BRACKET(")"), + LEFT_BRACKET_REGX("\\("), + RIGHT_BRACKET_REGX("\\)"); + + /**-------------------------------------------------------------------------------- + * [fields] + /**-------------------------------------------------------------------------------- + */ + private String value; + + /**-------------------------------------------------------------------------------- + * [constructor] + /**-------------------------------------------------------------------------------- + * + * @param you give a String value. + */ + Token(final String value) { + this.value = value; + } + + /**-------------------------------------------------------------------------------- + * + * @return an Enum's value as String + */ + public String getStringValue(){ + return this.value; + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java b/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java index 31d2a31..6791346 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java @@ -27,10 +27,10 @@ public static void main(String[] args) { File file = new File("models/POS.model"); try { - Parser parser = new Parser(); + Parser parser = new Parser(new BufferedReader(new FileReader(file))); DataFlowModel model; try { - model = parser.doParse(new BufferedReader(new FileReader(file))); + model = parser.doParse(); ResourceDependencyGraph graph = NecessityOfStoringResourceStates.doDecide(model); SelectableDataTransfers.init(graph); FinalDecisionOfStoringResourceStates.doDecide(graph); diff --git a/AlgebraicDataflowArchitectureModel/src/tests/DataStorageDecisionTest.java b/AlgebraicDataflowArchitectureModel/src/tests/DataStorageDecisionTest.java index c3169c6..8bb75ca 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/DataStorageDecisionTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/DataStorageDecisionTest.java @@ -25,10 +25,10 @@ public static void main(String[] args) { File file = new File("models/POS2.model"); try { - Parser parser = new Parser(); + Parser parser = new Parser(new BufferedReader(new FileReader(file))); DataFlowModel model = null; try { - model = parser.doParse(new BufferedReader(new FileReader(file))); + model = parser.doParse(); System.out.println(model); ResourceDependencyGraph graph = NecessityOfStoringResourceStates.doDecide(model); SelectableDataTransfers.init(graph); diff --git a/AlgebraicDataflowArchitectureModel/src/tests/DataStorageNecessityTest.java b/AlgebraicDataflowArchitectureModel/src/tests/DataStorageNecessityTest.java index 6aaf67a..feed8ab 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/DataStorageNecessityTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/DataStorageNecessityTest.java @@ -25,10 +25,10 @@ public static void main(String[] args) { File file = new File("models/POS2.model"); try { - Parser parser = new Parser(); + Parser parser = new Parser(new BufferedReader(new FileReader(file))); DataFlowModel model; try { - model = parser.doParse(new BufferedReader(new FileReader(file))); + model = parser.doParse(); System.out.println(model); ResourceDependencyGraph graph = NecessityOfStoringResourceStates.doDecide(model); for (Node n:graph.getNodes()) { diff --git a/AlgebraicDataflowArchitectureModel/src/tests/EdgeTransitionSelectableTest.java b/AlgebraicDataflowArchitectureModel/src/tests/EdgeTransitionSelectableTest.java index 293a555..f4d9077 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/EdgeTransitionSelectableTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/EdgeTransitionSelectableTest.java @@ -25,10 +25,10 @@ public static void main(String[] args) { File file = new File("models/POS2.model"); try { - Parser parser = new Parser(); + Parser parser = new Parser(new BufferedReader(new FileReader(file))); DataFlowModel model; try { - model = parser.doParse(new BufferedReader(new FileReader(file))); + model = parser.doParse(); System.out.println(model); ResourceDependencyGraph graph = NecessityOfStoringResourceStates.doDecide(model); SelectableDataTransfers.init(graph); diff --git a/AlgebraicDataflowArchitectureModel/src/tests/InverseTest.java b/AlgebraicDataflowArchitectureModel/src/tests/InverseTest.java index 8935d9b..277948d 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/InverseTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/InverseTest.java @@ -27,9 +27,9 @@ DataFlowModel model = new DataFlowModel(); try { String rhs = "(a * x + b) * c"; - - Parser parser = new Parser(); - TokenStream stream = parser.new TokenStream(); + + TokenStream stream = new Parser.TokenStream(); + Parser parser = new Parser(stream); stream.addLine(rhs); Expression rhsExp = parser.parseTerm(stream, model); diff --git a/AlgebraicDataflowArchitectureModel/src/tests/UpdateConflictCheckTest.java b/AlgebraicDataflowArchitectureModel/src/tests/UpdateConflictCheckTest.java index 957774e..30c985c 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/UpdateConflictCheckTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/UpdateConflictCheckTest.java @@ -24,9 +24,9 @@ public static void main(String[] args) { File file = new File("models/POS2.model"); try { - Parser parser = new Parser(); + Parser parser = new Parser(new BufferedReader(new FileReader(file))); try { - DataFlowModel model = parser.doParse(new BufferedReader(new FileReader(file))); + DataFlowModel model = parser.doParse(); System.out.println(UpdateConflictCheck.run(model)); } catch (ExpectedRightBracket e) { // TODO Auto-generated catch block diff --git a/AlgebraicDataflowArchitectureModel/src/tests/parser/ParseTest.java b/AlgebraicDataflowArchitectureModel/src/tests/parser/ParseTest.java index 102aedf..f7d923b 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/parser/ParseTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/parser/ParseTest.java @@ -31,10 +31,10 @@ public static void main(String[] args) { File file = new File("models/POS.model"); try { - Parser parser = new Parser(); + Parser parser = new Parser(new BufferedReader(new FileReader(file))); DataFlowModel model; try { - model = parser.doParse(new BufferedReader(new FileReader(file))); + model = parser.doParse(); System.out.println(model); for (ChannelGenerator c: model.getChannelGenerators()) {