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

Java TokenStream类代码示例

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

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



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

示例1: dumpTokens

import jdk.nashorn.internal.parser.TokenStream; //导入依赖的package包/类
/**
 * Dump a token stream to stdout
 *
 * TODO: most other bugging goes to stderr, change?
 *
 * @param source the source
 * @param lexer  the lexer
 * @param stream the stream to dump
 */
public static void dumpTokens(final Source source, final Lexer lexer, final TokenStream stream) {
    TokenType type;
    int k = 0;
    do {
        while (k > stream.last()) {
            // Get more tokens.
            lexer.lexify();
        }

        final long token = stream.get(k);
        type = Token.descType(token);
        System.out.println("" + k + ": " + Token.toString(source, token, true));
        k++;
    } while(type != EOF);
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:25,代码来源:Debug.java


示例2: getCommentsTokens

import jdk.nashorn.internal.parser.TokenStream; //导入依赖的package包/类
/**
 * Extracts the comments tokens from a JavaScript source.
 *
 * @param aSource a source
 * @return a list of comment tokens
 */
public static List<Long> getCommentsTokens(String aSource) {
    TokenStream tokens = new TokenStream();
    Lexer lexer = new Lexer(Source.sourceFor("", aSource), tokens);//NOI18N
    long t;
    TokenType tt = TokenType.EOL;
    int i = 0;
    List<Long> commentsTokens = new ArrayList<>();
    while (tt != TokenType.EOF) {
        // Get next token in nashorn's parser way
        while (i > tokens.last()) {
            if (tokens.isFull()) {
                tokens.grow();
            }
            lexer.lexify();
        }
        t = tokens.get(i++);
        tt = Token.descType(t);
        if (tt == TokenType.COMMENT) {
            commentsTokens.add(t);
        }
    }
    return commentsTokens;
}
 
开发者ID:marat-gainullin,项目名称:platypus-js,代码行数:30,代码来源:Scripts.java


示例3: parseJs

import jdk.nashorn.internal.parser.TokenStream; //导入依赖的package包/类
public static ParsedJs parseJs(String aJsContent) {
    Source source = Source.sourceFor("", aJsContent);//NOI18N
    Options options = new Options(null);
    ScriptEnvironment env = new ScriptEnvironment(options, null, null);
    ErrorManager errors = new ErrorManager();
    //
    Map<Long, Long> prevComments = new HashMap<>();
    Parser p = new Parser(env, source, errors) {
        @Override
        public FunctionNode parse(String scriptName, int startPos, int len, boolean allowPropertyFunction) {
            prevComments.clear();
            stream = new TokenStream() {
                protected long prevToken;

                @Override
                public void put(long token) {
                    if (Token.descType(token) != TokenType.EOL) {
                        if (Token.descType(prevToken) == TokenType.COMMENT) {
                            prevComments.put(token, prevToken);
                        }
                        prevToken = token;
                    }
                    super.put(token);
                }

            };
            lexer = new Lexer(source, stream, false);

            // Set up first token (skips opening EOL.)
            k = -1;
            next();
            // Begin parse.
            try {
                Method program = Parser.class.getDeclaredMethod("program", new Class[]{String.class, boolean.class});
                program.setAccessible(true);
                return (FunctionNode) program.invoke(this, new Object[]{scriptName, true});
            } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
                Logger.getLogger(Scripts.class.getName()).log(Level.WARNING, null, ex);
                return null;
            }
        }
    };
    FunctionNode jsAst = p.parse();
    return jsAst != null ? new ParsedJs(jsAst, prevComments) : null;
}
 
开发者ID:marat-gainullin,项目名称:platypus-js,代码行数:46,代码来源:Scripts.java



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Java CounterId类代码示例发布时间:2022-05-22
下一篇:
Java BlockRecord类代码示例发布时间: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