Skip to content

Method: AssignmentIdentifierState()

1: package parser.states.assignmentstates;
2:
3: import model.RouterConfiguration;
4: import parser.AssignmentFileParser;
5: import parser.ParserException;
6: import parser.states.GlobalFunctions;
7: import parser.tempparserobjects.TempVariableAssignment;
8: import symbols.AbstractSymbol;
9: import symbols.EqualSignSymbol;
10: import symbols.IdentifierSymbol;
11: import basic.Buffer;
12:
13: /**
14: *
15: * @author Muri
16: *
17: */
18: public class AssignmentIdentifierState extends AbstractAssignmentState {
19:
20:         /**
21:          *
22:          * @param tVA
23:          * TempVariableAssignment
24:          * @param buffer
25:          * Buffer<Symbol>
26:          * @param aFP
27:          * AssignmentFileParser
28:          * @throws InterruptedException
29:          * InterruptedException
30:          * @return
31:          * @throws ParserException
32:          * ParserException
33:          */
34:         @Override
35:         public void parse(final RouterConfiguration rc, final TempVariableAssignment tVA,
36:                         final Buffer<AbstractSymbol> buffer, final AssignmentFileParser aFP)
37:                         throws InterruptedException, ParserException {
38:                 final AbstractSymbol nextSymbol = buffer.peek();
39:                 if (nextSymbol instanceof IdentifierSymbol) {
40:                         tVA.setName(((IdentifierSymbol) nextSymbol).getText());
41:                         tVA.setPosition(nextSymbol.getPosition());
42:                         tVA.setVariableDefinition(GlobalFunctions.getTheInstance().searchVariableDefinition(
43:                                         rc.getRouterSoftware(), ((IdentifierSymbol) nextSymbol).getText()));
44:                         buffer.remove();
45:                         if (buffer.peek() instanceof EqualSignSymbol) {
46:                                 aFP.setState(new AssignmentValueState());
47:                                 buffer.remove();
48:                         } else {
49:                                 throw new ParserException("no expected symbol: "
50:                                                 + buffer.peek().getClass().getCanonicalName()
51:                                                 + " expected EqualSignSymbol");
52:                         }
53:                 } else {
54:                         throw new ParserException("no valid symbol: "
55:                                         + buffer.peek().getClass().getCanonicalName());
56:                 }
57:         }
58: }