• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java Parser类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.codehaus.jparsec.Parser的典型用法代码示例。如果您正苦于以下问题:Java Parser类的具体用法?Java Parser怎么用?Java Parser使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



Parser类属于org.codehaus.jparsec包,在下文中一共展示了Parser类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: enumMembersMany

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
public static Parser<List<EnumMemberExp>> enumMembersMany() {
       return enumMembers00().many().sepBy(term(","))
               .map(new org.codehaus.jparsec.functors.Map<List<List<EnumMemberExp>>, List<EnumMemberExp>>() {
                   @Override
                   public List<EnumMemberExp> map(List<List<EnumMemberExp>> arg0) {
					List<EnumMemberExp> cc = new ArrayList<>();
					for(List<EnumMemberExp> sub: arg0) {
						if (sub.size() > 1) {
							throw new IllegalArgumentException("Enum members must be separated by commas");
						}
						for(EnumMemberExp re: sub) {
							cc.add(re);
						}
					}
					return cc;
                   }
               });    
}
 
开发者ID:ianrae,项目名称:dnal-lang,代码行数:19,代码来源:TypeParser.java


示例2: packageDecl

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
public static Parser<PackageExp> packageDecl() {
    return Parsers.sequence(term("package"), VarParser.ident().many().sepBy(term(".")).
            map(new org.codehaus.jparsec.functors.Map<List<List<IdentExp>>, PackageExp>() {
                @Override
                public PackageExp map(List<List<IdentExp>> arg0) {
                    StringBuilder sb = new StringBuilder();
                    boolean flag = false;
                    if (! arg0.isEmpty()) {
                        for(List<IdentExp> sublist : arg0) {
                            if (! sublist.isEmpty()) {
                                if (flag) {
                                    sb.append('.');
                                }
                                sb.append(sublist.get(0).val);
                                flag = true;
                            }
                        }
                    }
                    return new PackageExp(sb.toString());
                }
            }));
}
 
开发者ID:ianrae,项目名称:dnal-lang,代码行数:23,代码来源:PackageParser.java


示例3: importDecl

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
public static Parser<ImportExp> importDecl() {
    return Parsers.sequence(term("import"), VarParser.ident().many().sepBy(term(".")).
            map(new org.codehaus.jparsec.functors.Map<List<List<IdentExp>>, ImportExp>() {
                @Override
                public ImportExp map(List<List<IdentExp>> arg0) {
                    StringBuilder sb = new StringBuilder();
                    boolean flag = false;
                    if (! arg0.isEmpty()) {
                        for(List<IdentExp> sublist : arg0) {
                            if (! sublist.isEmpty()) {
                                if (flag) {
                                    sb.append('.');
                                }
                                sb.append(sublist.get(0).val);
                                flag = true;
                            }
                        }
                    }
                    return new ImportExp(sb.toString());
                }
            }));
}
 
开发者ID:ianrae,项目名称:dnal-lang,代码行数:23,代码来源:PackageParser.java


示例4: structMembersMany

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
public static Parser<List<StructMemberExp>> structMembersMany() {
       return structMembers00().many().sepBy(term(","))
               .map(new org.codehaus.jparsec.functors.Map<List<List<StructMemberExp>>, List<StructMemberExp>>() {
                   @Override
                   public List<StructMemberExp> map(List<List<StructMemberExp>> arg0) {
					List<StructMemberExp> cc = new ArrayList<>();
					for(List<StructMemberExp> sub: arg0) {
						if (sub.size() > 1) {
							throw new IllegalArgumentException("Struct members must be separated by commas");
						}
						for(StructMemberExp re: sub) {
							cc.add(re);
						}
					}
					return cc;
                   }
               });    
}
 
开发者ID:ianrae,项目名称:dnal-lang,代码行数:19,代码来源:TypeParser.java


示例5: listvalueassign

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
public static Parser<ListAssignExp> listvalueassign() {
	return Parsers.between(term("["), listmemberRef.lazy().many().sepBy(term(",")), term("]")).
			map(new org.codehaus.jparsec.functors.Map<List<List<Exp>>, ListAssignExp>() {
				@Override
				public ListAssignExp map(List<List<Exp>> arg0) {
					List<Exp> list = new ArrayList<>();
					if (! arg0.isEmpty()) {
						for(List<Exp> sublist : arg0) {
							if (! sublist.isEmpty()) {
								list.add(sublist.get(0));
							}
						}
					}
					return new ListAssignExp(list);
				}
			});
}
 
开发者ID:ianrae,项目名称:dnal-lang,代码行数:18,代码来源:VarParser.java


示例6: structvalueassign

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
public static Parser<StructAssignExp> structvalueassign() {
	return Parsers.between(term("{"), 
			structmemberRef.lazy().many().sepBy(term(",")), term("}")).
			map(new org.codehaus.jparsec.functors.Map<List<List<Exp>>, StructAssignExp>() {
				@Override
				public StructAssignExp map(List<List<Exp>> arg0) {
					List<Exp> list = new ArrayList<>();
					for(List<Exp> sublist : arg0) {
						if (! sublist.isEmpty()) {
							list.add(sublist.get(0));
						}
					}
					return new StructAssignExp(list);
				}
			});
}
 
开发者ID:ianrae,项目名称:dnal-lang,代码行数:17,代码来源:VarParser.java


示例7: memberMany

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
public static Parser<List<ViewMemberExp>> memberMany() {
       return member().many().sepBy(term(","))
               .map(new org.codehaus.jparsec.functors.Map<List<List<ViewMemberExp>>, List<ViewMemberExp>>() {
                   @Override
                   public List<ViewMemberExp> map(List<List<ViewMemberExp>> arg0) {
					List<ViewMemberExp> cc = new ArrayList<>();
					for(List<ViewMemberExp> sub: arg0) {
						if (sub.size() > 1) {
							throw new IllegalArgumentException("View members must be separated by commas");
						}
						for(ViewMemberExp re: sub) {
							cc.add(re);
						}
					}
					return cc;
                   }
               });    
}
 
开发者ID:ianrae,项目名称:dnal-lang,代码行数:19,代码来源:ViewParser.java


示例8: ruleMany

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
public static Parser<List<RuleExp>> ruleMany() {
       return ruleExpr().many().sepBy(term(","))
               .map(new org.codehaus.jparsec.functors.Map<List<List<RuleExp>>, List<RuleExp>>() {
                   @Override
                   public List<RuleExp> map(List<List<RuleExp>> arg0) {
					List<RuleExp> cc = new ArrayList<>();
					for(List<RuleExp> sub: arg0) {
						if (sub.size() > 1) {
							throw new IllegalArgumentException("Rules must be separated by commas");
						}
						for(RuleExp re: sub) {
							cc.add(re);
						}
					}
					return cc;
                   }
               });    
}
 
开发者ID:ianrae,项目名称:dnal-lang,代码行数:19,代码来源:RuleParser.java


示例9: arithmetic

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
static Parser<Expression> arithmetic(Parser<Expression> atom) {
  Reference<Expression> reference = Parser.newReference();
  Parser<Expression> operand =
      Parsers.or(paren(reference.lazy()), functionCall(reference.lazy()), atom);
  Parser<Expression> parser = new OperatorTable<Expression>()
      .infixl(binary("/", Op.AGG_DIV), 5)
      .infixl(binary("<", Op.LESS), 7)
      .infixl(binary("<=", Op.LESS_EQ), 7)
      .infixl(binary("=", Op.EQ), 7)
      .infixl(binary("!=", Op.NOT_EQ), 7)
      .infixl(binary(">", Op.GREATER), 7)
      .infixl(binary(">=", Op.GREATER_EQ), 7)
      .infixl(binary("+", Op.PLUS), 10)
      .infixl(binary("-", Op.MINUS), 10)
      .infixl(binary("*", Op.MUL), 20)
      .infixl(binary("\\", Op.DIV), 20)
      .infixl(binary("%", Op.MOD), 20)
      .prefix(unary("-", Op.NEG), 30)
      .build(operand);
  reference.set(parser);
  return parser;
}
 
开发者ID:indeedeng,项目名称:iql,代码行数:23,代码来源:ExpressionParser.java


示例10: arrayClass

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
/**
 * Parser for internal array class names such as {@code [Z}, {@code [[[Ljava.lang.String;} etc.
 *
 * <p>.java files can only use {@code int[]} format, not the internal format. But we have to
 * be able to parse from internal format because {@link Type#toString} can produce it.
 */
private Parser<Class<?>> arrayClass() {
  Parser<Class<?>> arrayType = FQN.next(name -> {
      // Only invoked when we already see a "[" at the beginning.
      Class<?> primitiveArray = PRIMITIVE_ARRAY_TYPES.get("[" + name);
      if (primitiveArray != null) return Parsers.constant(primitiveArray);
      if (name.startsWith("L") && name.endsWith(";")) {
        String className = name.substring(1, name.length() - 1);
        return Parsers.constant(Types.newArrayType(loadClass(className)));
      } else {
        return Parsers.expect("array class internal name");
      }
    });
  return TERMS.token("[") // must be an array internal format from this point on.
      .next(arrayType.prefix(TERMS.token("[").retn(Types::newArrayType)));
}
 
开发者ID:jparsec,项目名称:jparsec-g,代码行数:22,代码来源:TypeParser.java


示例11: paren

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
static <T extends ExprNode> Parser<ExprNode> paren (Parser<T> e)
{
    return new Mapper<ExprNode>() {
        @SuppressWarnings("unused")
        public ExprNode map (T node)
        {
            ExprNode r = node;

            if (r == null) {
                r = new ConsNode.Tuple(Collections.<ExprNode>emptyList());
            } else if (!(r instanceof ConsNode.Tuple) && !(r instanceof PNode)) {
                r = new PNode(node);
            }

            return r;
        }
    }.sequence(any(e).optional().between(term("("), term(")")));
}
 
开发者ID:impl,项目名称:yashiro,代码行数:19,代码来源:ExpressionParser.java


示例12: argumentList

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
static <T extends ExprNode> Parser<InvArgListNode> argumentList (Parser<T> e)
{
    Parser<InvArgNode> namedArg = Mapper.<InvArgNode>curry(InvArgNode.Named.class).sequence(NAME_PARSER, term("="), e);
    Parser<InvArgNode> arg = namedArg.or(Mapper.curry(InvArgNode.Positional.class).sequence(e));

    Parser<InvArgNode> manyArgs = Mapper.<InvArgNode>curry(InvArgNode.ManyArgs.class).sequence(term("*"), e);
    Parser<InvArgNode> keywordArgs = Mapper.<InvArgNode>curry(InvArgNode.KeywordArgs.class).sequence(term("**"), e);

    /* Gleefully stolen from the Python grammar file. */
    Parser<List<InvArgNode>> parser;
    parser = Parsers2.collect(
            arg.sepEndBy(term(",")),
            Parsers.or(
                    Parsers2.collectN1(manyArgs, term(",").next(namedArg.sepBy1(term(","))).atomic().optional(), term(",").next(keywordArgs).optional()),
                    Parsers2.list(keywordArgs),
                    Parsers2.list(arg.followedBy(term(",")).optional())));
    parser = Parsers2.filter(parser, Predicates.<InvArgNode>notNull());

    return Mapper.curry(InvArgListNode.class).sequence(parser);
}
 
开发者ID:impl,项目名称:yashiro,代码行数:21,代码来源:ExpressionParser.java


示例13: data

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
Parser<DataNode> data ()
{
    return Marker.mark(Mapper.curry(DataNode.class).sequence(
            new Mapper<String>()
            {
                public String map(Stripping stripLeading, List<String> bodies, Stripping stripTrailing)
                {
                    String body = Joiner.on("").join(bodies);

                    if (stripLeading == Stripping.ALL)
                        body = CharMatcher.WHITESPACE.trimLeadingFrom(body);

                    if (stripTrailing == Stripping.ALL)
                        body = CharMatcher.WHITESPACE.trimTrailingFrom(body);
                    else if (stripTrailing == Stripping.LINE)
                        body = LINE_STRIP_PATTERN.matcher(body).replaceFirst("");

                    return body;
                }
            }.sequence(strip().optional(Stripping.NONE), Parsers.or(TagParsers.data(), Parsers.EOF.retn("")).many1(), strip().optional(Stripping.NONE))));
}
 
开发者ID:impl,项目名称:yashiro,代码行数:22,代码来源:BodyParser.java


示例14: parserOf

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
@SafeVarargs
public final <U extends T> Parser<?> parserOf (final U... expected)
{
    if (expected.length == 0) {
        return Parsers.never();
    } else if (expected.length == 1) {
        return parserOf(expected[0]);
    }

    Parser<?>[] parsers = new Parser<?>[expected.length];
    for (int i = 0; i < expected.length; i++)
    {
        parsers[i] = parserOf(expected[i]);
    }
    return Parsers.sequence(parsers);
}
 
开发者ID:impl,项目名称:yashiro,代码行数:17,代码来源:Tag.java


示例15: mapWith

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
public <T extends StmtNode> StatementParser mapWith (final Map<ContentMatchMap, T> map)
{
    checkNotNull(map);

    return new StatementParser()
    {
        @Override
        public String getPackage()
        {
            return callables.getPackageName();
        }

        @Override
        public String getName ()
        {
            return callables.getName();
        }

        @Override
        public Parser<T> parser (Cont cont)
        {
            ContentParserBuilder content = contents.getContent();
            return cont.name().next(content.parser().map(map));
        }
    };
}
 
开发者ID:impl,项目名称:yashiro,代码行数:27,代码来源:StatementWithoutBodyParserBuilder.java


示例16: indexsetCommand

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
private Parser<Void> indexsetCommand() {
	return Parsers.sequence(token("indexset"), STRING, STRING,
			token("list").next(token("(")).next(STRING.sepBy(token(",")))
					.followedBy(token(")")),
			new Map4<Token, String, String, List<String>, Void>() {
				public Void map(Token id, String full, String name,
						List<String> set) {
					if (indexSets.containsKey(full)) {
						throw createException("Redefining index set '%s'",
								name);
					}
					indexSets.put(full, new IndexSet(name, set));
					return null;
				}
			});
}
 
开发者ID:pgriffel,项目名称:pacioli,代码行数:17,代码来源:Machine.java


示例17: applicationDebugParser

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
private static Parser<Expression> applicationDebugParser(
		Parser<Expression> expParser) {
	return Parsers
			.sequence(
					token("application_debug").next(token("("))
							.next(STRING),
					token(",").next(STRING),
					token(",").next(STRING),
					token(",").next(expParser),
					token(",").next(expParser).many()
							.followedBy(token(")")),
					new Map5<String, String, String, Expression, List<Expression>, Expression>() {
						public Expression map(String text, String fullText,
								String trace, Expression fun,
								List<Expression> args) {
							return new ApplicationDebug(text, fullText,
									trace.equals("true"), fun, args);
						}
					});
}
 
开发者ID:pgriffel,项目名称:pacioli,代码行数:21,代码来源:Machine.java


示例18: fieldOrFunctionParser

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
protected Parser<QlField> fieldOrFunctionParser() {
	Parser.Reference<QlField> fieldOrFuncParserRef = Parser.newReference();
	Parser<Tuple3<String, QlField, Boolean>> simpleParser = simpleFieldParser();
	Parser<Tuple3<String, QlField, Boolean>> fieldParser = fieldParser(fieldOrFuncParserRef);
	Parser<QlField> fieldOrFuncParser = 
			Parsers.or(functionParser(fieldOrFuncParserRef), fieldParser, 
					simpleParser).map(
			new Map<Tuple3<String, QlField, Boolean>, QlField>() {
				@Override
				public QlField map(Tuple3<String, QlField, Boolean> fieldInfo) {
					return QlField.create(null, fieldInfo.a, fieldInfo.b,
							fieldInfo.c);
				}
			});
	fieldOrFuncParserRef.lazySet(fieldOrFuncParser);
	return fieldOrFuncParser;
}
 
开发者ID:lithiumtech,项目名称:starql,代码行数:18,代码来源:JparsecQueryMarkupManager.java


示例19: qualifiedFieldOrFunctionParser

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
protected Parser<QlField> qualifiedFieldOrFunctionParser() {
	Parser.Reference<QlField> fieldOrFuncParserRef = Parser.newReference();
	Parser<Tuple3<String, QlField, Boolean>> simpleParser = simpleFieldParser();
	Parser<Tuple3<String, QlField, Boolean>> fieldParser = fieldParser(fieldOrFuncParserRef);
	Parser<String> qualifierParser = regex("[a-zA-Z]+\\s+", false)
			.followedBy(regex("from", false).not().peek()).atomic().optional(null);
	Parser<QlField> fieldOrFuncParser = Parsers.pair(qualifierParser,
			Parsers.or(functionParser(fieldOrFuncParserRef), fieldParser, 
					simpleParser)).map(
			new Map<Pair<String, Tuple3<String, QlField, Boolean>>, QlField>() {
				@Override
				public QlField map(
						Pair<String, Tuple3<String, QlField, Boolean>> fieldInfo) {
					String qualifier = fieldInfo.a == null ? null : fieldInfo.a.trim();
					return QlField.create(qualifier, fieldInfo.b.a, fieldInfo.b.b,
							fieldInfo.b.c);
				}
			});
	fieldOrFuncParserRef.lazySet(fieldOrFuncParser);
	return fieldOrFuncParser;
}
 
开发者ID:lithiumtech,项目名称:starql,代码行数:22,代码来源:JparsecQueryMarkupManager.java


示例20: letParser

import org.codehaus.jparsec.Parser; //导入依赖的package包/类
private static Parser<ExpressionNode> letParser(
        Parser<ExpressionNode> expParser) {
    return Parsers
            .sequence(
            token("let"),
            letBindingParser(expParser).sepBy(token(",")),
            token("in").next(expParser).followedBy(token("end")),
            new Map3<Token, List<Callback<ExpressionNode, ExpressionNode>>, ExpressionNode, ExpressionNode>() {
        public ExpressionNode map(
                Token let,
                List<Callback<ExpressionNode, ExpressionNode>> bindings,
                ExpressionNode body) {
            ExpressionNode expr = body;
            for (int i = bindings.size() - 1; 0 <= i; i--) {
                expr = bindings.get(i).call(expr);
            }
            return expr;
        }
    });
}
 
开发者ID:pgriffel,项目名称:pacioli,代码行数:21,代码来源:Reader.java



注:本文中的org.codehaus.jparsec.Parser类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java NewImage类代码示例发布时间:2022-05-22
下一篇:
Java LexerToken类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap