Cobus.Debeer@p0.f1.n491.z5.fidonet.org (Cobus Debeer) (10/29/90)
Grammer continued ....
for_statement : FOR ident colon_equals expression TO expression by_opt
DO statement_list END;
by_opt : | by;
by : BY const_expression;
with_statement : WITH designator DO statement_list END;
expression : simple_expression | simple_expression relation
simple_expression;
simple_expression : sign_opt term | simple_expression add_operator term;
add_operator : plus | minus | OR;
sign_opt : | sign;
sign : plus | minus;
term : factor | term mul_operator factor;
mul_operator : asterisk | slash | DIV | MOD | AND | ampersand;
factor : number | string | set | designator actual_parameters_opt |
left_parenthesis expression right_parenthesis | NOT factor;
number : integer | real;
set : qualident_opt left_curley_bracket element_list_opt
right_curley_bracket;
qualident_opt : | qualident;
element_list_opt : | element_list;
element_list : element | element_list comma element;
element : case_label;
%%
#include <stdio.h>
char *filename="-";
main(argc, argv)
int argc;
char *argv[];
{
register int rc=0;
extern int yynerrs;
extern int yylineno;
if (argc <= 1)
yyparse();
else
{
while (argc > 1)
{ if (freopen(argv[1], "r", stdin)==NULL) {
fprintf(stderr, "m2c: %s: cannot open\n", argv[1]);
rc++; }
else {
filename=argv[1];
yylineno=1;
yyparse(); }
argc--; argv++;
}
}
if (yynerrs > 0) rc++;
return(rc);
}
#include "lex.yy.c"
yyerror(s)
char *s;
{
fprintf(stderr, "\"%s\", line %d: %s\n",
filename, yylineno, s);
}
====makefile
m2c : m2c.l m2c.y
lex m2c.l; yacc m2c.y; cc y.tab.c -ll -o m2c
====m2c.1 (=man page)
.\" $Header: m2c.1, 87/05/26 corn Stab $
.de SB
.\" SuBheader
.sp 1
.nr Sf \\n(.f
.ft B
.PP
\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
.ft \\n(Sf
.sp 1
..
.TH M2C I
.ad
.SH NAME
m2c \- Modula 2 Syntax Checker
.SH SYNOPSIS
\fBm2c\fP [file...]
.SH DESCRIPTION
.PP
.PP
.PP
.PP
\fIm2c\fP accepts any number of file arguments.
.PP
.SH "SEE ALSO"
.PD 0
.br
.nf
.fi
.PP
.SH KNOWN BUGS/BODGES/LIMITATIONS
.PP
m2c does not always recover from syntax errors.
.PP
Feel free to distribute m2c further but please acknowledge use/references.
.PP
.SH AUTHOR
.PP
.nf
Cornelia Boldyreff
Department of Computer Science
Brunel University
Uxbridge UB8 3PH
The United Kingdom
.br
Regards
- Cobus de Beer
--
uucp: uunet!m2xenix!puddle!5!491!1.0!Cobus.Debeer
Internet: Cobus.Debeer@p0.f1.n491.z5.fidonet.org