test_class.file: base/lang/src/test/java/leap/lang/text/scel/ScelParserTest.java
test_class.identifier: ScelParserTest
test_class.superclass: extends TestBase
test_case.body: @Test
      public void testSingleQuoteChar() {
          ScelExpr expr = ScelParser.parse("a.name eq 'not exists'");
          assertEquals("not exists", expr.nodes()[2].literal());
  
          expr = ScelParser.parse("a like %''%");
          assertEquals("%'%", expr.nodes()[2].literal());
  
          expr = ScelParser.parse("a like '%''%'");
          assertEquals("%'%", expr.nodes()[2].literal());
  
          expr = ScelParser.parse("a like %''");
          assertEquals("%'", expr.nodes()[2].literal());
  
          expr = ScelParser.parse("a like '%'''");
          assertEquals("%'", expr.nodes()[2].literal());
  
          expr = ScelParser.parse("a like %''_''%");
          assertEquals("%'_'%", expr.nodes()[2].literal());
  
          expr = ScelParser.parse("a like '%''_''%'");
          assertEquals("%'_'%", expr.nodes()[2].literal());
  
          expr = ScelParser.parse("a like %''''%");
          assertEquals("%''%", expr.nodes()[2].literal());
  
          expr = ScelParser.parse("a like '%''''%'");
          assertEquals("%''%", expr.nodes()[2].literal());
      }
test_case.class_method_signature: ScelParserTest.testSingleQuoteChar()
test_case.full_signature: @Test public void testSingleQuoteChar()
test_case.identifier: testSingleQuoteChar
test_case.invocations: parse assertEquals literal nodes parse assertEquals literal nodes parse assertEquals literal nodes parse assertEquals literal nodes parse assertEquals literal nodes parse assertEquals literal nodes parse assertEquals literal nodes parse assertEquals literal nodes parse assertEquals literal nodes
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testSingleQuoteChar()
focal_class.declarator: OPS    = new HashMap<>()
focal_class.modifier: private static final
focal_class.original_string: private static final Map<String, ScelToken> OPS    = new HashMap<>();
focal_class.type: Map<String, ScelToken>
focal_class.var_name: OPS
focal_class.declarator: LPAREN = new ScelNode(ScelToken.LPAREN, "(")
focal_class.modifier: private static final
focal_class.original_string: private static final ScelNode               LPAREN = new ScelNode(ScelToken.LPAREN, "(");
focal_class.type: ScelNode
focal_class.var_name: LPAREN
focal_class.declarator: RPAREN = new ScelNode(ScelToken.RPAREN, ")")
focal_class.modifier: private static final
focal_class.original_string: private static final ScelNode               RPAREN = new ScelNode(ScelToken.RPAREN, ")");
focal_class.type: ScelNode
focal_class.var_name: RPAREN
focal_class.declarator: AND    = new ScelNode(ScelToken.AND, ",")
focal_class.modifier: private static final
focal_class.original_string: private static final ScelNode               AND    = new ScelNode(ScelToken.AND, ",");
focal_class.type: ScelNode
focal_class.var_name: AND
focal_class.declarator: EQ     = new ScelNode(ScelToken.EQ, ":")
focal_class.modifier: private static final
focal_class.original_string: private static final ScelNode               EQ     = new ScelNode(ScelToken.EQ, ":");
focal_class.type: ScelNode
focal_class.var_name: EQ
focal_class.declarator: allowSingleExpr = false
focal_class.modifier: private
focal_class.original_string: private boolean allowSingleExpr = false;
focal_class.type: boolean
focal_class.var_name: allowSingleExpr
focal_class.declarator: nodes = new ArrayList<>()
focal_class.modifier: private final
focal_class.original_string: private final List<ScelNode> nodes = new ArrayList<>();
focal_class.type: List<ScelNode>
focal_class.var_name: nodes
focal_class.file: base/lang/src/main/java/leap/lang/text/scel/ScelParser.java
focal_class.identifier: ScelParser
focal_class.class_method_signature: ScelParser.op(ScelToken token)
focal_class.full_signature: private static final void op(ScelToken token)
focal_class.identifier: op
focal_class.modifiers: private static final
focal_class.parameters: (ScelToken token)
focal_class.return: void
focal_class.signature: void op(ScelToken token)
focal_class.class_method_signature: ScelParser.op(ScelToken token, String s)
focal_class.full_signature: private static final void op(ScelToken token, String s)
focal_class.identifier: op
focal_class.modifiers: private static final
focal_class.parameters: (ScelToken token, String s)
focal_class.return: void
focal_class.signature: void op(ScelToken token, String s)
focal_class.class_method_signature: ScelParser.parse(String expr)
focal_class.full_signature: public static ScelExpr parse(String expr)
focal_class.identifier: parse
focal_class.modifiers: public static
focal_class.parameters: (String expr)
focal_class.return: ScelExpr
focal_class.signature: ScelExpr parse(String expr)
focal_class.class_method_signature: ScelParser.ScelParser(String expr)
focal_class.full_signature: public  ScelParser(String expr)
focal_class.identifier: ScelParser
focal_class.modifiers: public
focal_class.parameters: (String expr)
focal_class.signature:  ScelParser(String expr)
focal_class.class_method_signature: ScelParser.expr()
focal_class.full_signature: public ScelExpr expr()
focal_class.identifier: expr
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: ScelExpr
focal_class.signature: ScelExpr expr()
focal_class.class_method_signature: ScelParser.scanName()
focal_class.full_signature: private boolean scanName()
focal_class.identifier: scanName
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean scanName()
focal_class.class_method_signature: ScelParser.scanOperator()
focal_class.full_signature: private Boolean scanOperator()
focal_class.identifier: scanOperator
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: Boolean
focal_class.signature: Boolean scanOperator()
focal_class.class_method_signature: ScelParser.preProcessOp(String op)
focal_class.full_signature: protected boolean preProcessOp(String op)
focal_class.identifier: preProcessOp
focal_class.modifiers: protected
focal_class.parameters: (String op)
focal_class.return: boolean
focal_class.signature: boolean preProcessOp(String op)
focal_class.class_method_signature: ScelParser.processOperator(ScelToken token, String op)
focal_class.full_signature: private boolean processOperator(ScelToken token, String op)
focal_class.identifier: processOperator
focal_class.modifiers: private
focal_class.parameters: (ScelToken token, String op)
focal_class.return: boolean
focal_class.signature: boolean processOperator(ScelToken token, String op)
focal_class.class_method_signature: ScelParser.scanInValues(List<ScelNode> values)
focal_class.full_signature: private String scanInValues(List<ScelNode> values)
focal_class.identifier: scanInValues
focal_class.modifiers: private
focal_class.parameters: (List<ScelNode> values)
focal_class.return: String
focal_class.signature: String scanInValues(List<ScelNode> values)
focal_class.class_method_signature: ScelParser.scanInValue()
focal_class.full_signature: private void scanInValue()
focal_class.identifier: scanInValue
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void scanInValue()
focal_class.class_method_signature: ScelParser.scanInValues(List<ScelNode> values, boolean close)
focal_class.full_signature: private void scanInValues(List<ScelNode> values, boolean close)
focal_class.identifier: scanInValues
focal_class.modifiers: private
focal_class.parameters: (List<ScelNode> values, boolean close)
focal_class.return: void
focal_class.signature: void scanInValues(List<ScelNode> values, boolean close)
focal_class.class_method_signature: ScelParser.scanInValueNode(boolean close)
focal_class.full_signature: private ScelNode scanInValueNode(boolean close)
focal_class.identifier: scanInValueNode
focal_class.modifiers: private
focal_class.parameters: (boolean close)
focal_class.return: ScelNode
focal_class.signature: ScelNode scanInValueNode(boolean close)
focal_class.class_method_signature: ScelParser.scanValueOnly()
focal_class.full_signature: private ScelNode scanValueOnly()
focal_class.identifier: scanValueOnly
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: ScelNode
focal_class.signature: ScelNode scanValueOnly()
focal_class.class_method_signature: ScelParser.scanValue()
focal_class.full_signature: private void scanValue()
focal_class.identifier: scanValue
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void scanValue()
focal_class.class_method_signature: ScelParser.scanAndOr()
focal_class.full_signature: private void scanAndOr()
focal_class.identifier: scanAndOr
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void scanAndOr()
focal_class.class_method_signature: ScelParser.scanIdentifier(boolean dot)
focal_class.full_signature: private String scanIdentifier(boolean dot)
focal_class.identifier: scanIdentifier
focal_class.modifiers: private
focal_class.parameters: (boolean dot)
focal_class.return: String
focal_class.signature: String scanIdentifier(boolean dot)
focal_class.class_method_signature: ScelParser.nextLiteral()
focal_class.full_signature: private String nextLiteral()
focal_class.identifier: nextLiteral
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String nextLiteral()
focal_class.class_method_signature: ScelParser.setAllowSingleExpr(boolean allowSingleExpr)
focal_class.full_signature: public void setAllowSingleExpr(boolean allowSingleExpr)
focal_class.identifier: setAllowSingleExpr
focal_class.modifiers: public
focal_class.parameters: (boolean allowSingleExpr)
focal_class.return: void
focal_class.signature: void setAllowSingleExpr(boolean allowSingleExpr)
focal_class.superclass: extends AbstractStringParser
focal_method.body: public static ScelExpr parse(String expr) {
          return new ScelParser(expr).expr();
      }
focal_method.class_method_signature: ScelParser.parse(String expr)
focal_method.full_signature: public static ScelExpr parse(String expr)
focal_method.identifier: parse
focal_method.invocations: expr
focal_method.modifiers: public static
focal_method.parameters: (String expr)
focal_method.return: ScelExpr
focal_method.signature: ScelExpr parse(String expr)