ฉันใช้ JavaCC เป็นครั้งแรก และฉันสังเกตเห็นว่ามันสร้างโค้ดที่ไม่ทำงานจำนวนมาก มีหลายบรรทัดที่ดูเหมือน (ขออภัยการเว้นวรรค มันเป็นอัตโนมัติ):
{if ("" != null) return result;}
throw new Error("Missing return statement in function");
}
เป็นไปได้ไหมที่จะหลีกเลี่ยงการสร้างโค้ดที่ไม่ทำงานนี้ มันทำให้เกิดคำเตือนของคอมไพเลอร์นับสิบรายการที่หวังว่าจะสามารถหลีกเลี่ยงได้
ขอบคุณ!
นี่เป็นตัวอย่างขั้นต่ำแบบเต็มจากไฟล์ .jj:
Statement UseStatement():
{
String dbName;
}
{
<USE> dbName=DbObjectName()
{
return new UseStatement(dbName);
}
}
ซึ่งก่อให้เกิด:
final public Statement UseStatement() throws ParseException {String dbName;
jj_consume_token(USE);
dbName = DbObjectName();
{if ("" != null) return new UseStatement(dbName);}
throw new Error("Missing return statement in function");
}
นอกจากนี้ JavaCC กำลังสร้างไฟล์ ParserTokenManager ซึ่งส่ง TokenMgrError - แต่โค้ดไม่ได้คอมไพล์ มันประกาศ protected int curChar
โดยที่ควรประกาศเป็น char
การใช้ Google วลีนี้แสดงตัวอย่างมากมายที่มีการแจ้งอย่างถูกต้องว่า char
- นี่เป็นเพียงผู้คนจำนวนมากที่แก้ไขผลลัพธ์ด้วยตนเองหรือไม่
LEGACY_EXCEPTION_HANDLING = false
หรือไม่ - person Theodore Norvell   schedule 27.05.2017curChar
ไม่ใช่ คุณไม่จำเป็นต้องแก้ไขด้วยมือมากนัก เวอร์ชัน 5 สร้างประเภทเป็นchar
- person Theodore Norvell   schedule 27.05.2017