On 01/13/2012 07:59 PM, Robert Epprecht wrote:
> Matthias Trute<mtr...@web.de>  writes:

>> Another tool to use is am4up with minicom (a small
>
>> The downside is that it does not honor the include commands.
> No problem. I think putting the include logic into the upload
> tool might be questionable design anyway.


ACK! I added these lines into the makefile

TARGET=main
CONSOLE=/dev/ttyUSB0
...

upload_file:
         cat $(TARGET).fs | unfold_fs > $(TARGET).fs.unfold
         trim_fs $(TARGET).fs.unfold  > $(TARGET).fs.upload
upload: upload_file
         amforth-upload.py  -t ${CONSOLE} $(TARGET).fs.upload


to produce the following commands

$ make -n upload
cat main.fs | unfold_fs > main.fs.unfold
trim_fs main.fs.unfold  > main.fs.upload
amforth-upload.py  -t /dev/ttyUSB0 main.fs.upload

unfold_fs treats all include directives adding comment lines
(begin end of file X) and the content of file X into the
output stream. trim_fs removes all comments of form
\ ... line
or
  ... ( comment ) ...
and it compresses consecutive spaces, possibly in undesired places.


Please find the two scripts below for anyone's use
Comments and patches are, of course, welcome.

Cheers,
Erich


# ----------------------------------------------------------------
$ cat ~/bin/unfold_fs
#!/usr/bin/perl -w
# 2007-12-08 EW
#
# filter, read all input, expand lines like
#   "^.include filename$"
# with the content found in filename
#
# this is written unfold amforth projects before
# transferring them to the target controller.

use strict;
my $Prog=$0;
my $file="";

my $pattern='^[#]*include\s+(\S+)';
my $comment='\ ---';

my $verbose=0;

while (<>)
{
     if (m/$pattern/)
     {
        $file = "$1";
        print STDERR "  $file\n" if ($verbose);
        if (not -r $file)
        {
            print STDERR "$Prog: file $file not found!\n";
            exit 2;
        }
        print "$comment include begin $file\n";
        system("$Prog $file") == 0 or  die "failed.\n";
        print "$comment include end $file\n";
     }
     else
     {
        print $_;
     }
}

# ----------------------------------------------------------------
$ cat ~/bin/trim_fs
#!/usr/bin/perl -w
# 2007-12-08 EW
# trim_fs
#
# filter, remove comments, leading and trailing whitespace and empty lines
#
# this is written to trim unfolded amforth projects

use strict;
my $Prog=$0;

while (<>)
{
     chomp;
     s/\\[ \t].*$//;            # remove line comments
     s/\( .* \)//;      # remove inline comments

     #s/^\s+//;         # delete leading whitespace / well no, keep indendation
     s/\s+$//;          # delete trailing whitespace
     s/\b\s+/ /g;       # compress white space after first word
     next if /^$/;      # delete empty lines

     print "$_\n";
}

# ----------------------------------------------------------------

------------------------------------------------------------------------------
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
_______________________________________________
Amforth-devel mailing list for http://amforth.sf.net/
Amforth-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amforth-devel

Reply via email to