📄 scanner.l
字号:
%{#ifndef lintstatic char RCSid[] = "$Header: scanner.l,v 2.1 86/07/29 06:48:21 jqj Exp $";#endif/* * scanner.l -- scanner for the XNS courier compiler *//* $Log: scanner.l,v $ * Revision 2.1 86/07/29 06:48:21 jqj * added support for 37D style comments. * * Revision 2.0 85/11/21 07:21:45 jqj * 4.3BSD standard release * * Revision 1.1 85/11/20 12:56:17 jqj * Initial revision * * Revision 1.3 85/03/11 16:40:08 jqj * Public alpha-test version, released 11 March 1985 * * Revision 1.2 85/02/21 11:05:51 jqj * alpha test version * * Revision 1.1 85/02/15 13:55:58 jqj * Initial revision * */#include "compiler.h"#include "y.tab.h"%}%%"--"$ |"----" |\-(\-[^\n-]+)+(\n|"--") |[ \t\n] /* whitespace */;ARRAY { return (ARRAY); }BEGIN { return (_BEGIN); }BOOLEAN { return (BOOLEAN); }CARDINAL { return (CARDINAL); }CHOICE { return (CHOICE); }DEPENDS { return (DEPENDS); }END { return (END); }ERROR { return (ERROR); }INTEGER { return (INTEGER); }LONG { return (LONG); }OF { return (OF); }PROCEDURE { return (PROCEDURE); }PROGRAM { return (PROGRAM); }RECORD { return (RECORD); }REPORTS { return (REPORTS); }RETURNS { return (RETURNS); }SEQUENCE { return (SEQUENCE); }STRING { return (STRING); }TYPE { return (TYPE); }UNSPECIFIED { return (UNSPECIFIED); }UPON { return (UPON); }VERSION { return (VERSION); }TRUE { return (TRUE); }FALSE { return (FALSE); }"=>" { return (_CHOOSES); }"-"?[0-9]+ { /* * decimal constant. */ yylval.stringvalue = copy(yytext); return (number); }"-"?[0-9]+[Dd] { /* * decimal constant. */ yytext[yyleng-1] = '\0'; yylval.stringvalue = copy(yytext); return (number); }"-"?[0-7]+[Bb] { char buf[BUFSIZ]; /* * octal constant. * change to C representation */ yytext[yyleng-1] = '\0'; if (*yytext != '-') sprintf(buf,"0%s", yytext); else sprintf(buf,"-0%s", yytext+1); yylval.stringvalue = copy(buf); return (number); }"-"?[0-9][0-9A-Fa-f]*[Xx] { char buf[BUFSIZ]; /* * hex constant. * change to C representation */ yytext[yyleng-1] = '\0'; if (*yytext != '-') sprintf(buf,"0x%s", yytext); else sprintf(buf,"-0x%s", yytext+1); yylval.stringvalue = copy(buf); return (number); }\"[^"\n"]*\" { /* * string constant */ yylval.stringvalue = copy(yytext); return (string); }\"([^\n"]|\"\")*\" { register char *p; /* * string constant with embedded "" */ for (p=yytext+1; p<yytext+yyleng-1; p++) if (*p == '"') *p++='\\'; yylval.stringvalue = copy(yytext); return (string); }[a-zA-Z_][a-zA-Z0-9_]* { yylval.stringvalue = copy(yytext); return (identifier); }. { return ((int) yytext[0]); }%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -