// Path: src/main/java/com/yanglinkui/ab/dsl/Lexer.java
// public abstract class Lexer {
// 
//     public static final char EOF = (char) -1;
// 
//     protected final String input;
//     protected int p = 0;
//     protected char c;
// 
//     public Lexer(String input) {
//         this.input = input;
//         c = input.charAt(p);
//     }
// 
//     protected void consume() {
//         p++;
//         if (p >= input.length()) c = EOF;
//         else c = input.charAt(p);
//     }
// 
//     protected void match(char x) {
//         if (c == x) {
//             consume();
//         } else {
//             throw new Error("Expecting " + x + "; found " + c);
//         }
//     }
// 
//     protected abstract Token nextToken();
// 
//     protected void WS() {
//         while (isWS(c)) {
//             consume();
//         }
//     }
// 
//     protected boolean isWS(char c) {
//         return (c==' ' || c=='\t' || c=='\n' || c=='\r');
//     }
// 
// }
// 
// Path: src/main/java/com/yanglinkui/ab/dsl/Token.java
// public abstract class Token {
//     protected int type;
//     protected String text;
//     protected String name;
// 
//     public Token(int type, String name, String text) {
//         this.type=type;
//         this.name = name;
//         this.text=text;
//     }
// 
//     public String toString() {
//         return "<'" + text + "'," + name + ">";
//     }
// 
//     public int getType() {
//         return type;
//     }
// 
//     public void setType(int type) {
//         this.type = type;
//     }
// 
//     public String getText() {
//         return text;
//     }
// 
//     public void setText(String text) {
//         this.text = text;
//     }
// }


import com.yanglinkui.ab.dsl.Lexer;
import com.yanglinkui.ab.dsl.Token;

                    throw new Error("Invalid character: " + c);
            }
        }
        return new ServiceToken(ServiceToken.TOKEN_EOF, "<EOF>");
    }

    Token OP() {
        StringBuilder buf = new StringBuilder(4);
        char c1 = c;
        consume();

        buf.append(c1);

        if (c1 == '!' && c == '=') {
            buf.append(c);
            consume();
        } else if (c1 == '!') {
            throw new Error("Expecting [!=] = found " + c);
        }

        if ((c1 == '>' || c1 == '<') && c == '=') {
            buf.append(c);
            consume();
        }

        return new ServiceToken(ServiceToken.TOKEN_OP, buf.toString());
    }


// Path: src/main/java/com/yanglinkui/ab/dsl/Lexer.java
// public abstract class Lexer {
// 
//     public static final char EOF = (char) -1;
// 
//     protected final String input;
//     protected int p = 0;
//     protected char c;
// 
//     public Lexer(String input) {
//         this.input = input;
//         c = input.charAt(p);
//     }
// 
//     protected void consume() {
//         p++;
//         if (p >= input.length()) c = EOF;
//         else c = input.charAt(p);
//     }
// 
//     protected void match(char x) {
//         if (c == x) {
//             consume();
//         } else {
//             throw new Error("Expecting " + x + "; found " + c);
//         }
//     }
// 
//     protected abstract Token nextToken();
// 
//     protected void WS() {
//         while (isWS(c)) {
//             consume();
//         }
//     }
// 
//     protected boolean isWS(char c) {
//         return (c==' ' || c=='\t' || c=='\n' || c=='\r');
//     }
// 
// }
// 
// Path: src/main/java/com/yanglinkui/ab/dsl/Token.java
// public abstract class Token {
//     protected int type;
//     protected String text;
//     protected String name;
// 
//     public Token(int type, String name, String text) {
//         this.type=type;
//         this.name = name;
//         this.text=text;
//     }
// 
//     public String toString() {
//         return "<'" + text + "'," + name + ">";
//     }
// 
//     public int getType() {
//         return type;
//     }
// 
//     public void setType(int type) {
//         this.type = type;
//     }
// 
//     public String getText() {
//         return text;
//     }
// 
//     public void setText(String text) {
//         this.text = text;
//     }
// }


// Path: src/main/java/com/yanglinkui/ab/dsl/service/ServiceLexer.java
import com.yanglinkui.ab.dsl.Lexer;
import com.yanglinkui.ab.dsl.Token;


                    throw new Error("Invalid character: " + c);
            }
        }
        return new ServiceToken(ServiceToken.TOKEN_EOF, "<EOF>");
    }

    Token OP() {
        StringBuilder buf = new StringBuilder(4);
        char c1 = c;
        consume();

        buf.append(c1);

        if (c1 == '!' && c == '=') {
            buf.append(c);
            consume();
        } else if (c1 == '!') {
            throw new Error("Expecting [!=] = found " + c);
        }

        if ((c1 == '>' || c1 == '<') && c == '=') {
            buf.append(c);
            consume();
        }

        return new ServiceToken(ServiceToken.TOKEN_OP, buf.toString());
    }


    Token NAMEORNUMBER() {