Finally句の対応
PHPParserはhttps://javacc.java.net/の4.2を利用している。
PHPParser.jjを以下のように修正
finally句の定義を追加
/* Exceptions */ <PHPPARSING> TOKEN : { <TRY : "try"> | <CATCH : "catch"> | <THROW : "throw"> | <FINALLY : "finally"> }
tryStatement に finallyの処理を追加
(<FINALLY> {Block();} )?
をcatch句処理後に追加
tryToken = <TRY> block = Block() catchClause = catchClause() { catches.add(catchClause); } ( catchClause = catchClause() { catches.add(catchClause); } )* (<FINALLY> {Block();} )? { return new TryStatement(block, catches, tryToken.sourceStart, catchClause.getSourceEnd(), tryToken.beginLine, catchClause.getEndLine(), tryToken.beginColumn, catchClause.getEndColumn()); }
javaccの文法が合っているか自信ないけど、解析できているっぽい。
Tweet
最終更新時間:2016年05月29日 19時08分46秒