Skip to content

Method: DefinitionVariableNState()

1: package parser.states.definitionstates;
2:
3: import model.RouterSoftware;
4: import model.definition.AbstractVariableDefinition;
5: import parser.DefinitionFileParser;
6: import parser.ParserException;
7: import parser.tempparserobjects.TempVariableDefinition;
8: import symbols.AbstractSymbol;
9: import symbols.EmptySymbol;
10: import symbols.IdentifierSymbol;
11: import basic.Buffer;
12:
13: /**
14: *
15: * @author Muri
16: *
17: */
18: public class DefinitionVariableNState extends AbstractDefinitionState {
19:
20:         /**
21:          *
22:          * @param tVD
23:          * TempVariableDefinition
24:          * @param dFP
25:          * DefinitionFileParser
26:          * @param buffer
27:          * Buffer<Symbol>
28:          * @return
29:          * @throws InterruptedException
30:          * InterruptedException
31:          * @throws ParserException
32:          * ParserException
33:          */
34:         @Override
35:         public void parse(final RouterSoftware rs, final TempVariableDefinition tVD,
36:                         final Buffer<AbstractSymbol> buffer, final DefinitionFileParser dFP)
37:                         throws InterruptedException, ParserException {
38:                 final AbstractSymbol nextSymbol = buffer.peek();
39:                 if (nextSymbol instanceof EmptySymbol) {
40:                         // TODO what to Do if no Vaiable Exists?
41:                         tVD.setVariableN(null);
42:                         tVD.setArrayElement(false);
43:                         dFP.setState(new DefinitionTypeState());
44:                         buffer.remove();
45:                 } else if (nextSymbol instanceof IdentifierSymbol) {
46:                         final AbstractVariableDefinition variableN =
47:                                         dFP.getVariableDefinitionList()
48:                                                         .get(((IdentifierSymbol) nextSymbol).getText());
49:                         tVD.setVariableN(variableN);
50:                         tVD.setArrayElement(true);
51:                         dFP.setState(new DefinitionTypeState());
52:                         buffer.remove();
53:                 } else {
54:                         throw new ParserException("no valid symbol: "
55:                                         + buffer.peek().getClass().getCanonicalName());
56:                 }
57:         }
58: }