LexerATNFactory.java 文件源码

java
阅读 23 收藏 0 点赞 0 评论 0

项目:codebuff 作者:
/** For a lexer, a string is a sequence of char to match.  That is,
 *  "fog" is treated as 'f' 'o' 'g' not as a single transition in
 *  the DFA.  Machine== o-'f'->o-'o'->o-'g'->o and has n+1 states
 *  for n characters.
 */
@Override
public Handle stringLiteral(TerminalAST stringLiteralAST) {
    String chars = stringLiteralAST.getText();
    chars = CharSupport.getStringFromGrammarStringLiteral(chars);
    int n = chars.length();
    ATNState left = newState(stringLiteralAST);
    ATNState prev = left;
    ATNState right = null;
    for (int i=0; i<n; i++) {
        right = newState(stringLiteralAST);
        prev.addTransition(new AtomTransition(right, chars.charAt(i)));
        prev = right;
    }
    stringLiteralAST.atnState = left;
    return new Handle(left, right);
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号