morten@cs.qmw.ac.uk (Morten Ronseth) (08/13/90)
For the last couple of days, I've been trying to port flex to the MPW environment. Everything compiles just fine, no problems there. But, whatever *.l file i run flex on, it seems to gag and die. For example, on an empty input file, it does ---accepting rule: #116 fatal parse error at 1. falls over and dies. On a file containing %{ #include "hello.h" %} it spits out: ---accepting rule: #116 ---accepting rule: #116 ---accepting rule: #0 ---accepting rule: #16 syntax error at line 1: illegale character ---accepting rule: #116 ---accepting rule: #0 ---accepting rule: #115 flex: flex scanner jammed Now the state of the machine is: yy_act = 16 yytext = "%" yy_current_state = 51 yy_hold_char = 123 right after `yy_act = yy_accept[yy_current_state]' in the second `while (1)' loop in flexscan. Can anyone tell me why it chokes on an input like this? This might not be the correct group to post this to, but I thought I'd give it a go. Morten. -- ==================================================================== Morten Lerskau Ronseth UUCP: morten@qmw-cs.uucp Dept. of Computer Science JANET: morten@uk.ac.qmw.cs Queen Mary and Westfield College ARPA: morten%qmw.cs@ucl-cs.arpa Mile End Road Easylink: 19019285 London E1 4NS Tlf: 071 975 5220 England. Dept. fax: 081 980 6533
morten@cs.qmw.ac.uk (Morten Ronseth) (08/13/90)
I just realized that even lex falls over in the two cases I've mentioned. But that doesn't really make any difference, since my flex even dies on the `scan.l' file in the flex sources. So something is wrong... Morten. -- ==================================================================== Morten Lerskau Ronseth UUCP: morten@qmw-cs.uucp Dept. of Computer Science JANET: morten@uk.ac.qmw.cs Queen Mary and Westfield College ARPA: morten%qmw.cs@ucl-cs.arpa Mile End Road Easylink: 19019285 London E1 4NS Tlf: 071 975 5220 England. Dept. fax: 081 980 6533
earleh@microsoft.UUCP (Earle HORTON) (08/16/90)
In article <2632@sequent.cs.qmw.ac.uk> morten@cs.qmw.ac.uk (Morten Ronseth) writes: > >For the last couple of days, I've been trying to port flex to the MPW >environment. Everything compiles just fine, no problems there. >But, whatever *.l file i run flex on, it seems to gag and die. For >example, on an empty input file, it does... >... Can anyone tell me why it chokes on an input like this? > >This might not be the correct group to post this to, but I thought I'd give it >a go. It is probably because under the MPW C compiler, '\n' is actually 13, 0x0d, \015, more conventionally named '\r' under other C implementations. As far as the scanner tables in "scan.c" are concerned, however, the Macintosh end-of-line character is just some random control character, not needing the special consideration given to a "real" linefeed. Find the equivalence class translation table in "scan.c" and transpose the (zero-based) tenth and thirteenth elements. Then go through the code and fix up all the places where it is assumed that '\n' is equal to decimal 10. Then implement a bunch more fixes to allow Flex to scan Macintosh extended character set characters. Better yet, get a copy of the already-ported-to-the-Macintosh version. Available via ftp from apple.com and sumex-aim.stanford.edu. Also available from me in exchange for SASE, formatted 800k floppy, and sufficient postage to get it back to you. Earle Horton