⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 docify.ll

📁 Doc++,可以根据你的C/C++和java的源码文件中的注释行自动生成Html说明文件的工具
💻 LL
字号:
/*  docify.ll  Copyright (c) 1996 Roland Wunderling, Malte Zoeckler  Copyright (c) 1998 Michael Meeks  Copyright (c) 1998-2001 Dragos Acostachioaie  This file is part of DOC++.  DOC++ is free software; you can redistribute it and/or  modify it under the terms of the GNU General Public  License as published by the Free Software Foundation; either  version 2 of the license, or (at your option) any later version.  This program is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  General Public License for more details.  You should have received a copy of the GNU General Public  License along with this library; if not, write to the Free  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*/%{#include <assert.h>#include <stdio.h>#include "McString.h"#include "portability.h"McString	yyText;FILE*		out;bool		docified = false;int		braCnt = 0;bool		fastNotSmall = false;extern "C" {    int yywrap()	{	return 1;	}};void yyMore(){    yyText += yytext;}void yyDump(){    fprintf(out, "%s", yyText.c_str());    yyText.clear();}void docify(){    if(!docified)	{	if(yyText.size() && yyText[0] == '/')	    {	    if(yyText[1] == '/')		fprintf(out, "///");	    else		fprintf(out, "/**");	    yyText.remove(0, 2);	    yyDump();	    }	else	    {	    yyDump();	    for(int i = 0; yytext[i] == ' ' || yytext[i] == '\n'; i++)		fprintf(out, "%c", yytext[i]);	    fprintf(out, "///\n");	    }	}    yyMore();    docified = false;}#undef	ECHO#define	ECHO%}%s	Start%x	Comment%x	CPP%x	Code%x	Bracket%%<Start>[ \t\n]		{			ECHO;			yyMore();			}<Start>"//*"[^*].*\n	{			ECHO;			docified = true;			yyMore();			}<Start>"//*\n"		{			ECHO;			docified = true;			yyMore();			}<Start>"///"[^/].*\n	{			ECHO;			docified = true;			yyMore();			}<Start>"///\n"		{			ECHO;			docified = true;			yyMore();			}<Start>"//@".*\n	{			ECHO;			docified = true;			yyMore();			}<Start>"/**"[^*/]	{			ECHO;			docified = true;			yyMore();			BEGIN(Comment);			}<Start>"/*/"[^*/]	{			ECHO;			docified = true;			yyMore();			BEGIN(Comment);			}<Start>"/*@"		{			ECHO;			docified = true;			yyMore();			BEGIN(Comment);			}<Comment>.		{			ECHO;			yyMore();			}<Comment>\n		{			ECHO;			yyMore();			}<Comment>"*/"		{			ECHO;			yyMore();			BEGIN(Start);			}<Start>"//".*\n		{			ECHO;			yyDump();			yyMore();			}<Start>"/*"		{			ECHO;			yyDump();			yyMore();			BEGIN(Comment);			}<Start>"#"		{			ECHO;			yyMore();			BEGIN(CPP);			}<CPP>.			{			ECHO;			yyMore();			}<CPP>"\\\n"		{			ECHO;			yyMore();			}<CPP>[ \t]*		{			ECHO;			yyMore();			}<CPP>\n			{			ECHO;                        yyMore();			yyDump();			docified = false;			BEGIN(Start);			}<Start>[ \t]*template[ \t\n]?[^{]*"{"	{			ECHO;			docify();			}<Start>[ \t]*"class".*	{			ECHO;			docify();			}<Start>[ \t]*"struct"[ \t\n][^{]*"{"	{			ECHO;			docify();			}<Start>[ \t]*"typedef".*";"	{			ECHO;			docify();			}<Start>[ \t]*"public:"	{			ECHO;			yyMore();			}<Start>[ \t]*"protected:"	{			ECHO;			yyMore();			}<Start>[ \t]*"private:"	{			ECHO;			yyMore();			}<Start>[ \t]*[a-zA-Z_~]	{			ECHO;			docify();			BEGIN(Code);			}<Code>"{"		{			ECHO;			yyMore();			BEGIN(Bracket);			}<Code>";"		{			ECHO;			yyMore();			yyDump();			BEGIN(Start);			}<Code>.			{			ECHO;			yyMore();			}<Code>\n		{			ECHO;			yyMore();			}<Bracket>"{"		{			ECHO;			yyMore();			braCnt++;			}<Bracket>"}"		{			ECHO;			yyMore();			if(braCnt)			    braCnt--;			else			    {			    yyDump();			    BEGIN(Start);			    }			}<Bracket>\n		{			ECHO;			yyMore();			}<Bracket>.		{			ECHO;			yyMore();			}<Start>.		{			ECHO;			yyMore();			}%%int main(int argc, char **argv){    FILE *ain;    FILE *aout;    yyin = stdin;    out  = stdout;    if(argc > 1)	{	if(argv[1][0] == '-')	    {	    fprintf(stderr, "Usage: docify [infile [outfile]]\n");	    return 0;	    }	ain = fopen(argv[1], "r");	if(ain)	    yyin = ain;	else	    fprintf(stderr, "Could not open file `%s' for reading; using stdin as default\n",		argv[1]);	}    if(argc > 2)	{	aout = fopen(argv[2], "w");	if(aout)	    {	    yyout = aout;	    out = aout;	    }	else	    fprintf(stderr, "Could not open file `%s' for writing; using stdout as default\n",		argv[2]);	}    BEGIN(Start);    yylex();    yyDump();    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -