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

📄 joos.l

📁 雏形java的解释器源码。配合flex和bison可以工作
💻 L
字号:
/* * JOOS is Copyright (C) 1997 Laurie Hendren & Michael I. Schwartzbach * * Reproduction of all or part of this software is permitted for * educational or research use on condition that this copyright notice is * included in any copy. This software comes with no warranty of any * kind. In no event will the authors be liable for any damages resulting from * use of this software. * * email: hendren@cs.mcgill.ca, mis@brics.dk */%{#include "y.tab.h"#include <string.h>#include "tree.h"extern int lineno;%}%%[ \t]+                   /* ignore */;\n                       lineno++;\/\/[^\n]*\n             lineno++;abstract                 return tABSTRACT;boolean                  return tBOOLEAN;break                    return tBREAK;byte                     return tBYTE;case                     return tCASE;catch                    return tCATCH;char                     return tCHAR;class                    return tCLASS;const                    return tCONST;continue                 return tCONTINUE;default                  return tDEFAULT;do                       return tDO;double                   return tDOUBLE;else                     return tELSE;extends                  return tEXTENDS;extern                   return tEXTERN;final                    return tFINAL;finally                  return tFINALLY;float                    return tFLOAT;for                      return tFOR;goto                     return tGOTO;if                       return tIF;implements               return tIMPLEMENTS;import                   return tIMPORT;in                       return tIN;instanceof               return tINSTANCEOF;int                      return tINT;interface                return tINTERFACE;long                     return tLONG;main                     return tMAIN;native                   return tNATIVE;new                      return tNEW;null                     return tNULL;package                  return tPACKAGE;private                  return tPRIVATE;protected                return tPROTECTED;public                   return tPUBLIC;return                   return tRETURN;short                    return tSHORT;static                   return tSTATIC;super                    return tSUPER;switch                   return tSWITCH;synchronized             return tSYNCHRONIZED;this                     return tTHIS;throw                    return tTHROW;throws                   return tTHROWS;transient                return tTRANSIENT;try                      return tTRY;void                     return tVOID;volatile                 return tVOLATILE;while                    return tWHILE;"="                      return '=';">"                      return '>';"<"                      return '<';"!"                      return '!';"=="                     return tEQ;"<="                     return tLEQ;">="                     return tGEQ;"!="                     return tNEQ;"&&"                     return tAND;"||"                     return tOR;"+"                      return '+';"-"                      return '-';"*"                      return '*';"/"                      return '/';"%"                      return '%';"{"                      return '{';"}"                      return '}';";"                      return ';';"("                      return '(';")"                      return ')';"["                      return '[';"]"                      return ']';","                      return ',';"."                      return '.';"++"                     return tINC;'\\b'                  { yylval.charconst = '\b';                         return tCHARCONST; }'\\t'                  { yylval.charconst = '\t';                         return tCHARCONST; }'\\n'                  { yylval.charconst = '\n';                         return tCHARCONST; }'\\f'                  { yylval.charconst = '\f';                         return tCHARCONST; }'\\r'                  { yylval.charconst = '\r';                         return tCHARCONST; }'\\\"'                 { yylval.charconst = '\"';                         return tCHARCONST; }'\\''                  { yylval.charconst = '\'';                         return tCHARCONST; }'\\\\'                 { yylval.charconst = '\\';                         return tCHARCONST; }'\\[0-7][0-7][0-7]'    { yylval.charconst = 64*yytext[1]+8*yytext[2]+yytext[3]-73*'0';                         return tCHARCONST; }'''                      return tERROR;'\\'                     return tERROR;'.'                    { yylval.charconst = yytext[1];                         return tCHARCONST; }0|([1-9][0-9]*)        { yylval.intconst = atoi(yytext);                         return tINTCONST; }true                   { yylval.boolconst = 1;                         return tBOOLCONST; }false                  { yylval.boolconst = 0;                         return tBOOLCONST; }\"([^\"])*\"           { yylval.stringconst = (char*)malloc(strlen(yytext)-1);                         yytext[strlen(yytext)-1] = '\0';                         sprintf(yylval.stringconst,"%s",yytext+1);                         return tSTRINGCONST; }[a-zA-Z_][a-zA-Z0-9_]* { yylval.stringconst = (char *)malloc(strlen(yytext)+1);                         sprintf(yylval.stringconst,"%s",yytext);                          return tIDENTIFIER; }"import "([a-zA-Z_][a-zA-Z0-9_]*".")*("*"|[a-zA-Z_][a-zA-Z0-9_]*); return tPATH;.                        return tERROR;%%

⌨️ 快捷键说明

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