📄 cstylecommentstrip.java
字号:
package fri.patterns.interpreter.parsergenerator.lexer.examples;import java.io.*;import fri.patterns.interpreter.parsergenerator.Token;import fri.patterns.interpreter.parsergenerator.Lexer;import fri.patterns.interpreter.parsergenerator.syntax.*;import fri.patterns.interpreter.parsergenerator.lexer.*;import fri.patterns.interpreter.parsergenerator.syntax.builder.SyntaxSeparation;/** Sample for a Lexer built from blocks of StandardLexerRules. Removes comments from Java/C source. @author (c) 2002, Fritz Ritzberger*/public class CStyleCommentStrip{ private static Lexer lexer; static { try { String [][] rules = { { Token.TOKEN, "others" }, // define what we want to receive { Token.TOKEN, "`stringdef`" }, // need this rule, as string definitions could contain comments { Token.IGNORED, "`cstylecomment`" }, { "others", "others", "other" }, { "others", "other" }, { "other", "`char`", Token.BUTNOT, "`cstylecomment`", Token.BUTNOT, "`stringdef`" }, }; Syntax syntax = new Syntax(rules); // LexerBuilder makes unique SyntaxSeparation separation = new SyntaxSeparation(syntax); LexerBuilder builder = new LexerBuilder(separation.getLexerSyntax(), separation.getIgnoredSymbols()); lexer = builder.getLexer(); //lexer.setDebug(true); // dumps scanner consumer lists lexer.setTerminals(separation.getTokenSymbols()); } catch (Exception e) { e.printStackTrace(); } } /** Stripping C-style comments from an input reader and writing to output writer. Both in and out get closed when finished. */ public CStyleCommentStrip(Reader in, Writer out) throws LexerException, IOException { try { lexer.setInput(in); Token t; do { t = lexer.getNextToken(null); if (t.symbol == null) lexer.dump(System.err); else if (t.text != null) out.write(t.text.toString()); } while (t.symbol != null && Token.isEpsilon(t) == false); } finally { try { in.close(); } catch (Exception e) { e.printStackTrace(); } try { out.close(); } catch (Exception e) { e.printStackTrace(); } } } /** Example implementation: Stripping C-style comments from Java files, passed as arguments. */ public static void main(String [] args) { if (args.length <= 0) { System.err.println("SYNTAX: java "+CStyleCommentStrip.class.getName()+" file.java [file.java ...]"); System.err.println(" Strips // C-style /* comments */ from C/Java sources."); } else { try { for (int i = 0; i < args.length; i++) { PrintWriter out = new PrintWriter(System.out); Reader in = new BufferedReader(new FileReader(args[i])); new CStyleCommentStrip(in, out); } } catch (Exception e) { e.printStackTrace(); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -