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 testPr() {
          ScelExpr expr = ScelParser.parse("a pr");
          assertEquals("a pr", expr.toString());
  
          expr = ScelParser.parse("a pr and b pr");
          assertEquals("a pr and b pr", expr.toString());
      }
test_case.class_method_signature: ScelParserTest.testPr()
test_case.full_signature: @Test public void testPr()
test_case.identifier: testPr
test_case.invocations: parse assertEquals toString parse assertEquals toString
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testPr()
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)