1
0

refactor: refactor EnumsMigration but not finished

This commit is contained in:
2026-01-26 11:11:58 +08:00
parent e0e5c9b090
commit c68bdce37b
36 changed files with 669 additions and 409 deletions

View File

@@ -0,0 +1,72 @@
import org.antlr.v4.runtime.*;
/**
* The generic walker for collecting defines as a enum.
*/
public class DefinesWalker extends CKDefinesParserBaseListener {
public DefinesWalker(BufferedTokenStream tokenStream) {
mCommentsFinder = new CommentsFinder(tokenStream);
mResult = null;
mCurrentEnum = null;
mCurrentEntry = null;
}
public EnumsHelper.BEnum getEnum() {
return mResult;
}
private CommentsFinder mCommentsFinder;
private EnumsHelper.BEnum mResult;
private EnumsHelper.BEnum mCurrentEnum;
private EnumsHelper.BEnumEntry mCurrentEntry;
@Override
public void enterProg(CKDefinesParser.ProgContext ctx) {
mCurrentEnum = new EnumsHelper.BEnum();
}
@Override
public void exitProg(CKDefinesParser.ProgContext ctx) {
mResult = mCurrentEnum;
mCurrentEnum = null;
}
@Override
public void enterDefinePair(CKDefinesParser.DefinePairContext ctx) {
mCurrentEntry = new EnumsHelper.BEnumEntry();
}
@Override
public void exitDefinePair(CKDefinesParser.DefinePairContext ctx) {
// set values
mCurrentEntry.mEntryName = ctx.CKGENERAL_ID(0).getText();
mCurrentEntry.mEntryComment = mCommentsFinder.getComment(ctx.getStart(), ctx.getStop());
if (ctx.CKGENERAL_NUM() == null) {
// define with id
mCurrentEntry.mEntryValue = ctx.CKGENERAL_ID(1).getText();
} else {
// define with number
String num = ctx.CKGENERAL_NUM().getText();
mCurrentEntry.mEntryValue = num;
// check whether this enum can be unsigned
if (CommonHelper.isNegativeNumber(num)) {
mCurrentEnum.mCanUnsigned = false;
}
// if the number is in hex form, this enum MIGHT have flags feature
if (CommonHelper.isHexNumber(num)) {
mCurrentEnum.mUseFlags = true;
}
}
// add entry
mCurrentEnum.mEntries.add(mCurrentEntry);
mCurrentEntry = null;
}
}