Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package ch.qos.logback.core.subst;
  
  
  
  import java.util.List;
  
  // E = TE|T
 //   = T(E|~)
 // E = TEopt where Eopt = E|~
 // T = LITERAL | { E } |'${' V '}'
 // V = (E|E :- E)
 //   = E(':-'E|~)
 public class Parser {
 
   final List<TokentokenList;
   int pointer = 0;
 
   public Parser(List<TokentokenList) {
     this. = tokenList;
   }
 
   public Node parse() throws ScanException {
     return E();
   }
 
   private Node E() throws ScanException {
     Node t = T();
     if (t == null) {
       return null;
     }
     Node eOpt = Eopt();
     if (eOpt != null) {
       appendNode(teOpt);
     }
     return t;
   }
 
   // Eopt = E|~
   private Node Eopt() throws ScanException {
     Token next = getCurentToken();
     // System.out.println("Current token is " + next);
     if (next == null) {
       return null;
     } else {
       return E();
     }
   }
 
   // T = LITERAL | '${' V '}'
   private Node T() throws ScanException {
     Token t = getCurentToken();
 
     switch (t.type) {
       case :
         advanceTokenPointer();
         return new Node(..t.payload);
       case :
         advanceTokenPointer();
         Node inner = E();
         Token right = getCurentToken();
         expectCurlyRight(right);
         advanceTokenPointer();
         Node curlyLeft = new Node(...);
         curlyLeft.next = inner;
         Node curlyRightNode = new Node(...);
         if(inner == null)
           curlyLeft.next = curlyRightNode;
         else
           appendNode(innercurlyRightNode);
         return curlyLeft;
       case :
         advanceTokenPointer();
         Node v = V();
         Token w = getCurentToken();
         expectCurlyRight(w);
         advanceTokenPointer();
         return v;
       default:
         return null;
     }
   }
 
   private void appendNode(Node nodeNode additionalNode) {
      Node n = node;
      while(true) {
        if(n.next == null) {
          n.next = additionalNode;
          return;
        }
        n = n.next;
      }
   }
 
 
   // V = E(':='E|~)
   private Node V() throws ScanException {
     Node e = E();
    Node variable = new Node(..e);
    Token t = getCurentToken();
    if (t != null && t.type == ..) {
      advanceTokenPointer();
      Node def = E();
      variable.defaultPart = def;
    }
    return variable;
  }
  void advanceTokenPointer() {
    ++;
  }
  void expectNotNull(Token tString expected) {
    if (t == null) {
      throw new IllegalArgumentException("All tokens consumed but was expecting \""
              + expected + "\"");
    }
  }
  void expectCurlyRight(Token tthrows ScanException {
    expectNotNull(t"}");
    if (t.type != ..) {
      throw new ScanException("Expecting }");
    }
  }
    if ( < .size()) {
      return (Token.get();
    }
    return null;
  }
New to GrepCode? Check out our FAQ X