import org.antlr.runtime.tokenstream; //導入依賴的package包/類/** * Just call a parser method in {@link CqlParser} - does not do any error handling. */public static <R> R parseAnyUnhandled(CQLParserFunction<R> parserFunction, String input) throws RecognitionException{ // Lexer and parser ErrorCollector errorCollector = new ErrorCollector(input); CharStream stream = new ANTLRStringStream(input); CqlLexer lexer = new CqlLexer(stream); lexer.addErrorListener(errorCollector); TokenStream tokenStream = new CommonTokenStream(lexer); CqlParser parser = new CqlParser(tokenStream); parser.addErrorListener(errorCollector); // Parse the query string to a statement instance R r = parserFunction.parse(parser); // The errorCollector has queue up any errors that the lexer and parser may have encountered // along the way, if necessary, we turn the last error into exceptions here. errorCollector.throwFirstSyntaxError(); return r;}
import org.antlr.runtime.TokenStream; //導入依賴的package包/類/** * Returns true if there was an unexpected EOL. */public static boolean hasDisallowedEOL(Callback callback) {TokenStream input = callback.getInput();Token lt = input.LT(1);// Start on the position before the current token and scan backwards off channel tokens until the previous on// channel token.for (int ix = lt.getTokenIndex() - 1; ix > 0; ix--) {lt = input.get(ix);if (lt.getChannel() == Token.DEFAULT_CHANNEL) {// On channel token found: stop scanning.break;} else if (issemicolonEquivalent(lt)) {return true;}}return false;}
import org.antlr.runtime.TokenStream; //導入依賴的package包/類/** Creates a parser for a given term, generating trees of this kind. */public <P extends Parser> P createParser(Class<P> parserType, I info, String term) { try { // find the lexer type String parserName = parserType.getName(); String lexerName = parserName.substring(0, parserName.indexOf("Parser")) .concat("Lexer"); @SuppressWarnings("unchecked") Class<? extends Lexer> lexerType = (Class<? extends Lexer>) Class.forName(lexerName); Lexer lexer = createLexer(lexerType, info, term); // instantiate the parser CommonTokenStream tokenStream = new CommonTokenStream(lexer); Constructor<P> parserConstructor = parserType.getConstructor(TokenStream.class); P result = parserConstructor.newInstance(tokenStream); Method adaptorSetter = parserType.getMethod("setTreeAdaptor", TreeAdaptor.class); adaptorSetter.invoke(result, new ParseTreeAdaptor<>(this, info, tokenStream)); callInitialise(result, info); return result; } catch (Exception e) { throw toRuntime(e); }}
import org.antlr.runtime.TokenStream; //導入依賴的package包/類@Testpublic void test1() throws RecognitionException { CharStream input = new ANTLRStringStream("version(1.1.0)\n" + "minVer(1.1.0)\n" + "[ The Admin API is used to manipulate and access the low level entities in Rapture. Typically the methods in this API\n" + "are only used during significant setup events in a Rapture environment.]\n" + "api(Admin) {\n" + " [This method restores a user that has been deleted]\n" + " @entitle=/admin/main\n" + " @public Boolean restoreUser(String userName);\n" + "}\n" + "[A return value from a native query]\n" + "type RaptureQueryResult(@package=rapture.common) {\n" + " List(JsonContent) rows;\n" + "}\n"); TLexer lexer = new TLexer(input); TokenStream tokenInputStream = new CommonTokenStream(lexer); TParser parser = new TParser(tokenInputStream); hmxdef_return returnVal = parser.hmxdef(); System.out.println("Done " + returnVal.getTree().toStringTree()); TreeNodeStream treeInput = new CommonTreeNodeStream(returnVal.getTree()); TTree walker = new TTree(treeInput); walker.setTemplateLib(TemplateRepo.getApiTemplates("Java")); com.incapture.rapgen.TTree.hmxdef_return walkerResult = walker.hmxdef(); System.out.println("Done, result=" + walkerResult.toString());}
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
成都有哪些大超市?家樂福、伊藤洋華堂、北京華聯、沃爾瑪、麥德龍、歐尚等。排名靠前的公司有家樂福、沃爾瑪和麥德龍。成都規模最大,比連鎖店方便?肯定是本地超市:紅旗連鎖!成都最大的超市是什么超市?成都最大的超市是位于武侯區八寶街1號的家樂福超市。全國最大的超市?國內最大的單店超市是成都的迪卡儂天府商場。最大是華潤萬家。成都永輝超市最大是哪家?339電視塔附近的永輝超市應該算是目前最大的了。永輝超市很多...
成都銀行在全國哪些地方有網點?成都銀行的網點主要集中在成都市行政區域,然后在四川其他地級市設立分行。除四川外其他省份未設立分公司。成都銀行在全國哪些地方有網點?目前有重慶和Xi。除成都外,成都銀行還在四川省內的眉山、資陽、內江、宜賓、廣安、南充,省外的陜西省內的重慶、Xi安設有分行。區位優勢助力發展,提升區域戰略定位。受益于天府之國成都優越的地理位置,成都銀行發展勢頭強勁,近90%的營業收入來自成...
創維電視65g650電子版說明書?與連接模擬電視信號的第一步一樣,將天線或數字電視信號線連接到電視后端的RF輸入端子。2將本機電源和連接的設備插頭插入交流電源插座,打開電源開關。3按遙控器上的“Source”鍵。信號源菜單出現后,按左右導航鍵選擇信號源為“數字電視”,然后按“確定”鍵進入。連接帶有視頻的機頂盒或DVD設備。1使用本機自帶的音頻/視頻轉接線,線的一端連接到本機下方的“電腦/視頻2音頻...