diff options
-rw-r--r-- | fpgaedit.l | 6 | ||||
-rw-r--r-- | fpgaedit.y | 19 |
2 files changed, 23 insertions, 2 deletions
@@ -30,6 +30,12 @@ quit { return EXIT; } +h | +help { + if (debug > 4) printf ("HELP\n"); + return HELP; +} + m[dm](\.[biw])* { if (strlen (yytext) == 2) yylval.val = 4; else switch (*(yytext + 3)) { @@ -23,6 +23,8 @@ variable *vlist; void set_variable (char *param, int val); int get_variable (char *param); void hex_output (int offset, int len, int count); +void print_help (void); + extern void yyerror (const char *s); extern int yylex (void); %} @@ -49,8 +51,10 @@ char *tptr; %left <val> MD %left <val> MM %left <val> EQ -%left <val> EXIT -%left <val> CR +%token <val> EXIT +%token <val> HELP +%token <val> CR + %type <val> num @@ -64,6 +68,7 @@ line: CR | open CR | close CR | EXIT CR { exit(EXIT_SUCCESS); } + | HELP CR { print_help(); } | NAME CR { printf ("%s = %d\n", $1, get_variable($1)); free($1); } | mem CR | NAME EQ num CR { set_variable ($1, $3); free($1); } @@ -140,6 +145,16 @@ num: NUM ; %% +void print_help (void) { + printf ("help:\n"); + printf ("open <file>\n\topen file <file>\n"); + printf ("close\n\tclose file\n"); + printf ("md [<start> [<end>]]\n\tdisplay from current position or <start> to <end>\n"); + printf ("mm <offset> <val1> .. <valN>\n\tmodify from value <offset>\n"); + printf ("<var> = <expr>\n\tset variable <var> to <expr>\n"); + printf ("<var>\n\tprint variable <var>\n"); +} + void set_variable (char *param, int val) { variable *l, *tmp; |