home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / c64 / programming / BASIC-Syntaxer.DaveJB.readme < prev    next >
Encoding:
Text File  |  2001-01-13  |  16.7 KB  |  353 lines

  1.  
  2.             basic sYNTAXER V1.01 WITH sYNTAXER eDITOR FOR c64
  3.                   (c) h{$f3}DI gYULA, hUNGARY, 1988,1991
  4.  
  5.     tHIS SOFTWARE PACKAGE IS NOW DECLARED TO freeware. pLEASE SHARE IT
  6. WITHOUT MAKING MODIFICATIONS.
  7.  
  8.  
  9.  
  10.         iNTRODUCTION
  11.  
  12.     mOST OF US HAS ALREADY WRITTEN basic PROGRAMS. sUPPOSE YOU ARE TESTING
  13. YOUR NEW PROGRAM, YOU HAVE ENTERED A LOT OF DATA, OR USE IT FOR SEVERAL
  14. MINUTES, AND ONCE IT HALTED WITH THE WELL KNOWN AND BELOVED "sYNTAX ERROR
  15. IN ..." MESSAGE. yOU SEE THE GIVEN LINE, AND SAY "dAM'D, i LEFT OUT A COLON
  16. HERE!", START AGAIN THE WHOLE TEST. fIVE MINUTES LATER: "oH gOD, i DIDN'T
  17. CLOSE THIS PARENTHESIS!", AND SEE ABOVE. fAMILIAR?
  18.     uNFORTUNATELY THE c64 os DISCOVERS THE ERRORS ONLY WHEN RUNS THE
  19. PROGRAM, ALTHOUGH THE MOST OF THEM COULD BE FOUND BEFORE STARTING EXECUTION.
  20. sO THE basic sYNTAXER IS WRITTEN TO CHECK SYNTACTICALLY THE PROGRAM LINES
  21. JUST WHEN THEY'RE ENTERED, OR LATER.
  22.     eSSENTIALLY THE METHOD IS MAKING COMPARISON BETWEEN THE PROGRAM LINES
  23. AND A DATA SEQUENCE STORED IN MEMORY, WHICH IS DEPICTING THE FORMS OF ALL
  24. POSSIBLE PROGRAM LINES. wHEN A PROGRAM LINE DOES NOT FIT TO ANY OF THE
  25. LEGAL CASES THEN THE LINE IS INCORRECT. iF WE CHANGE THE ENCODED FORM
  26. DESCRIPTION THEN sYNTAXER WILL BE ABLE TO CHECK PROGRAM LINES WRITTEN IN
  27. OTHER LANGUAGES, LIKE sIMON'S basic, OR A SELF-MADE basic EXTENSION WEDGE.
  28. fOR MAKING CHANGES OF THIS KIND THE sYNTAXER eDITOR IS PRESENTED.
  29.  
  30.  
  31.  
  32.  
  33. --------------------------------------------------------------------------
  34.  
  35.  
  36.  
  37.                             basic sYNTAXER
  38.  
  39. uSE THIS PROGRAM TO CHECK THE PROGRAM LINES ONE-BY-ONE, IMMEDIATELY AFTER
  40. ENTERING THEM, OR TO CHECK THE WHOLE PROGRAM, LATER, AT ANY TIME. tHE
  41. sYNTAXER CAN IDENTIFY syntax errorS AND type mismatch errorS, AND CAN MARK
  42. THEIR PLACES.
  43.  
  44.  
  45.  
  46.         lOADING
  47.  
  48.    sIMPLY LOAD AND RUN THE syntaxer, IT WILL LOAD AND SET UP THE REMAINING
  49. PART OF THE PROGRAM. bUT IF YOU DON'T WANT TO DAMAGE A basic PROGRAM ALREADY
  50. LOADED THEN FOLLOW THESE STEPS:
  51.   load "sxr1",8,1
  52.   load "sxr2",8,1
  53.   load "default    .sx64",8,1    (OR OTHER)
  54.   load "old*",8,1
  55.   new
  56.   sys 680
  57. wITH THESE YOU LOAD THE COMPONENTS OF THE sYNTAXER, AND THE old, WHICH
  58. RESETS THE MAIN basic POINTERS AND REVIVES THE PREVIOUSLY LOADED PROGRAM.
  59.  
  60.  
  61.  
  62.         iNSTRUCTIONS
  63.  
  64. uSAGE:    sys 53000
  65. tHIS WAY YOU TURN sYNTAXER ON OR OFF.
  66.  
  67. uSAGE:    sys 53000, PARAMETERS
  68.  
  69. tHE 'PARAMETERS' CAN BE COMPOSED OF THE FOLLOWINGS:
  70.   b  : DURING THE PROCESS THE SCREEN BORDER IS FILLED WITH STRIPES
  71.   nb : DISABLE 'b' (BORDER) FUNCTION
  72.   w  : WHEN AN ERROR IS DETECTED THE SCREEN FLASHES, AND A GONG SOUNDS
  73.   nw : DISABLE 'w' (WARNING) FUNCTION
  74.   e  : IN CASE OF ERROR AN ERROR MESSAGE IS DISPLAYED
  75.   ne : DISABLE 'e' (ERROR) FUNCTION
  76.          eRROR MESSAGES
  77.       ?:error                         (I.E. SYNTAX OR TYPE MISMATCH ERROR)
  78.       ):bracket error
  79.       ":not unquoted error
  80.       *:too complex to check          (TRY TO SIMPLIFY THE PROGRAM LINE)
  81.   p  : IN CASE OF ERROR THE PROGRAM MARKS THE LAST POINT TILL WHERE THE
  82.        LINE SEEMS TO BE ACCEPTABLE; THE REAL PLACE OF THE ERROR IS OFTEN
  83.        SOMEWHERE BEFORE THAT
  84.   np : DISABLE 'p' (POINT) FUNCTION
  85.   x  : TURN OFF sYNTAXER (YOU CAN TURN IT ON AGAIN)
  86.   NUMBER - NUMBER : CHECK THE PROGRAM LINES IN THE GIVEN INTERVAL (USE
  87.        LINE NUMBERS AS IN list COMMANDS); ALWAYS RUNS IN nw,e,np MODE.
  88.        tO CHECK THE COMPLETE PROGRAM GIVE A SINGLE '-'.
  89.  
  90.     iF YOU TRY TO DISABLE ALL WARNINGS WITH nw AND np PARAMETERS THEN THE
  91. PROGRAM AUTOMATICALLY SWITCHES TO w MODE. yOU DON'T HAVE TO TURN ON sYNTAXER
  92. WITH A SEPARATE COMMAND, IT'S DONE WHEN YOU DEFINE THE FUNCTIONS. wHEN TURN
  93. OFF, NONE OF THE FUNCTIONS ARE CHANGED, TURNING ON AGAIN YOU GET THE LAST
  94. STATUS. tHE DEFAULT STATUS IS b,w,ne,np.
  95.     tHE ELEMENTS OF THE 'PARAMETERS' MAY (BUT DON'T HAVE TO) BE SEPARATED
  96. WITH SPACES OR COMMAS. fOR EXAMPLE:
  97.   sys 53000,nb,  w ne,p
  98.   sys 53000,nbwnep
  99.   sys 53000,-                      (CHECK ALL LINES)
  100.   sys 53000,1-17                   (CHECK ONLY THIS INTERVAL)
  101.   sys 53000,nb-110,p130b191-       (CHECK FROM TOP TO LINE 110 AND LINE 130
  102.                                     IN nb MODE, FROM LINE 191 TO BOTTOM IN
  103.     b MODE, AND FINALLY SWITCH ON p MODE,
  104.     KEEP b MODE ON)
  105.   sys 53000,nb,-110,130,b,191-,p   (SAME AS ABOVE)
  106.   sys 53000
  107.  
  108.     iF sYNTAXER IS ON, THEN EVERY PROGRAM LINE (BEGINNING WITH NUMBER) WILL
  109. BE CHECKED IMMEDIATELY AFTER YOU ENTERED THAT, BUT IT WILL BE STORED IN THE
  110. PROGRAM HOWEVER, INDEPENDENTLY OF ERRORS. sO YOU ALSO CAN ENTER INCORRECT
  111. LINES (MAYBE WRITTEN IN EXTENDED basic), AND IGNORE WARNINGS. sYNTAXER
  112. CHECKS THE LINES TILL THEIR FIRST ERRORS ONLY.
  113.     sYNTAXER PASSES NEARLY ALL GRAMMATIC STRUCTURES WHICH ARE DEPARTING FROM
  114. THE OFFICIAL basic LANGUAGE RULES BUT ARE ACCEPTED BY THE INTERPRETER.
  115. tHERE ARE SOME HARMLESS BUT USELESS, PROBABLY MISTAKEN STATEMENTS, WHICH
  116. PRODUCE ERROR WARNINGS, E.G: input : print a<>=b : on a goto , :  ETC.
  117.     sOME OF THE basic EXTENSIONS USE THE SAME MEMORY AREA AS ONE OF THE
  118. sYNTAXER'S COMPONENTS.  tHIS MEANS YOU CAN'T USE sYNTAXER TO CHECK SUCH KIND
  119. OF YOUR PROGRAMS WHILE EDITING THEM, YOU HAVE TO CHECK THEM OCCASIONALLY, IN
  120. A SEPARATE ACTION, AFTER YOU DEACTIVATED THE basic EXTENSION.
  121.  
  122.  
  123.  
  124.  
  125. --------------------------------------------------------------------------
  126.  
  127.  
  128.  
  129.                              sYNTAXER eDITOR
  130.  
  131.  
  132.  
  133.         bnf DESCRIPTIVE LANGUAGE
  134.  
  135.     fOR SHORTLY DEFINING THE SYNTAX RULES A SPECIAL CODE LANGUAGE IS USED,
  136. IT'S CALLED bnf (bACKUS-nAUR FORM).
  137.     a bnf DESCRIPTION CONSISTS OF LABELS, EACH LABEL STANDS FOR A DEFINI-
  138. TION. tHE POSSIBLE ELEMENTS OF A DEFINITION ARE LABELS, CHARACTERS AND bnf
  139. SYMBOLS. wHERE YOU SEE A LABEL IN A DEFINITION, THERE sYNTAXER SUBSTITUTES
  140. THAT WITH THE DEFINITION WHICH IT'S STANDS FOR. lET'S SEE AN EXAMPLE:
  141.   bOOK         ::= cOVER{CBM-Q}pAGE{CBM-F}bACKCOVER
  142.   pAGE         ::= {CBM-Q}sENTENCE{CBM-F}
  143.   sENTENCE     ::= iNITIALWORD{CBM-Q} wORD{CBM-F}<...{$7c}.{$7c}!{$7c}?>          (SEE THAT SPACE?)
  144.   iNITIALWORD  ::= cAPITAL{CBM-Q}lETTER{CBM-F}
  145.   wORD         ::= lETTER{CBM-Q}lETTER{CBM-F}
  146.   lETTER       ::= <A{$7c}B{$7c}C{$7c}D{$7c}E{$7c}F{$7c}G{$7c}               ...  AND SO ON.
  147.  
  148. (aTTENTION! iN sYNTAXER eDITOR YOU WILL SEE BOLDED SQUARE BRACKETS INSTEAD
  149. OF {CBM-Q} AND {CBM-F} SYMBOLS, WHICH ARE USED IN THIS DOCUMENTATION ONLY.)
  150.  
  151.     hERE YOU SEE THE DESCRIPTION OF "BOOK", RATHER BRIEFLY, OF COURSE. tHE
  152. LABELS SEEN SIDE-BY-SIDE SHOULD BE READ AS YOU SAY "AND" BETWEEN THEM. a bnf
  153. DESCRIPTION IS NOT A PROGRAM, IT CAN'T BE EXECUTED, IT DEFINES CONCEPTS. tHE
  154. ORDER AND PRESENCE OF WORDS AND CHARACTERS ARE VERY SIGNIFICANT, FOR
  155. INSTANCE A PERIOD MUST BE PLACED AT THE END OF A SENTENCE, NOT ANYWHERE
  156. ELSE.
  157.  
  158.  
  159.  
  160.         mEANINGS OF bnf SYMBOLS
  161.  
  162. <SIGN1{$7c}SIGN2{$7c}SIGN3> : EXACTLY ONE OF THOSE THREE SIGNS MUST BE USED
  163.                       (READ AS SIGN1 OR SIGN2 OR SIGN3)
  164. [SIGN]              : THE SIGN IS OPTIONAL, NOT REQUIRED (OPTION-BRACKETS)
  165. {CBM-Q}SIGN{CBM-F}              : THE SIGN IS OPTIONAL, AND MAY BE REPEATED AT WILL
  166.                       (REPEAT-BRACKETS)  (rEMEMBER: BOLD []!)
  167. {$7b}TEXT{$7d}              : THE NUMBER OF OPENING AND CLOSING ROUND PARENTHESES
  168.                       HAS TO BE THE SAME BETWEEN THESE CURLY BRACKETS
  169.  
  170.     wITH THESE SYMBOLS AND TOOLS YOU CAN DESCRIBE ALL THE RULES OF THE
  171. LANGUAGE YOU USE, AND YOU CAN USE IT WITH sYNTAXER TO CHECK YOUR PROGRAMS.
  172. pROBABLY YOU SHOULD STUDY THE DESCRIPTIONS PLACED ON DISK WITH eDITOR FOR
  173. BETTER UNDERSTANDING THIS METHOD. dON'T FORGET: WHEN YOU DESIGN A DESCRIP-
  174. TION, YOU MUST TRY TO COMPOSE PHRASES WHICH DEFINE ALL THE LEGAL CASES AND
  175. PASS NONE OF THE ILLEGAL CASES OF THAT PROGRAMMING LANGUAGE.
  176.     aLWAYS TAKE CARE OF USING bnf SYMBOLS IN CORRECT ORDER AND WELL NESTED,
  177. OTHERWISE THE sYNTAXER WILL SURELY MAKE MISTAKES. uSE c=/v FUNCTION TO AVOID
  178. THIS TYPE OF ERRORS WHEN EDITING (SEE LATER).
  179.     wHEN THERE IS A SIMPLE CHARACTER (NOT A LABEL OR bnf SYMBOL) IN A
  180. DEFINITION THEN THIS CHARACTER IS REQUIRED, EXACTLY AT THAT POINT OF PROGRAM
  181. LINES. pROGRAMS CAN CONTAIN ANY TYPE OF CHARACTERS, THAT'S WHY eDITOR USES
  182. SPECIAL ATTRIBUTES FOR LABELS AND bnf SYMBOLS.
  183.  
  184.  
  185.  
  186.         wORKING WITH sYNTAXER eDITOR
  187.  
  188.     yOU CAN LOAD AND RUN THIS PROGRAM ON THE NORMAL WAY. tHE eDITOR
  189. DEACTIVATES EXTENSION WEDGES, BUT TRIES TO LEAVE FAST LOADERS.
  190.     eDITOR STARTS IN cATALOG mODE. hERE YOU CAN MOVE ON EXISTING LABELS,
  191. MAKE NEW LABELS, DELETE NEEDLESS ONES, USE DISK OR TAPE DEVICES, ETC. oN
  192. THE BOTTOM OF THE SCREEN YOU SEE THE NUMBER OF CURRENT LABEL (WITHIN ITS
  193. GROUP), THE CURRENT GROUP, THE NUMBER OF FREE BYTES AND FREE LABELS. wHEN
  194. YOU SELECT A LABEL AND PRESS rETURN, YOU SWITCH TO eDITOR mODE, WHERE THE
  195. SELECTED LABEL'S DEFINITION CAN BE EDITED.
  196.  
  197.     tHE LABELS ARE ARRANGED INTO FOUR GROUPS: (AUXILIARY) DEFINITIONS (def),
  198. STATEMENTS (stm), NUMERIC FUNCTIONS (fn%), STRING FUNCTIONS (fn$). tHIS WAY
  199. IN A DEFINITION YOU CAN REFER TO ALL LABELS IN stm, fn% OR fn$ GROUP BY
  200. USING ONE COLLECTIVE LABEL. fOR INSTANCE: IN "NUMKIF" (NUMERIC EXPRESSION)
  201. DEFINITION YOU WILL SEE THE LABEL " FN% " WHICH MEANS ANY OF THE NUMERIC
  202. FUNCTIONS FOUND IN fn% GROUP.
  203.     tHE DESCRIPTION'S ENTRY POINT (THIS WAS "bOOK" IN THE EXAMPLE ABOVE) IS
  204. ALWAYS THE LABEL NAMED " LINE ", THIS MEANS 'A PROGRAM LINE'. sYNTAXER WILL
  205. START THE ANALYZING PROCESS WITH EACH LINE RIGHT HERE, SO THIS LABEL IS
  206. STRICTLY NEEDED, THAT'S WHY YOU CAN'T DELETE THIS ONE.
  207.     iN eDITOR mODE ALL CONSTANT CHARACTERS WILL APPEAR IN GREEN, LABELS IN
  208. INVERTED BLUE AND bnf SYMBOLS IN LIGHT GREEN. iF YOU ENTER A CHARACTER WHICH
  209. HAS A CODE OUT OF $21-$5f RANGE (I.E. NOT A LETTER, NUMBER OR COMMON TYPE-
  210. WRITER CHARACTER), THEN IT WILL BE DISPLAYED BY ITS CODE, IN INVERTED RED
  211. FIELD AND IN HEXADECIMAL FORM. tHIS IS BECAUSE YOU NEED TO DEFINE basic
  212. EXPRESSIONS IN EXACTLY THE SAME SHAPE AS THEY ARE STORED IN MEMORY. c64
  213. basic (AND MANY EXTENSIONS) USES TOKENS FOR STATEMENTS AND OPERATORS, WHICH
  214. HAVE SPECIAL CODES, AND THIS IS THE EASIEST WAY TO IDENTIFY THEM BY SIGHT.
  215. (tHE TOKENS' CODETABLE CAN BE FOUND IN basic rEFERENCE bOOKS.) bUT IF YOU
  216. ENTER A CHARACTER WITH ITS CODE IN THIS $21-$5f RANGE THEN eDITOR WILL
  217. DISPLAY IT IN ITS COMMON CHARACTER SHAPE.
  218.     nEVER PLACE A 'SPACE' ($20) IN A DEFINITION TO SEPARATE ELEMENTS OF A
  219. LINE OR AN EXPRESSION, BECAUSE THE INTERPRETER AND ALSO THE sYNTAXER STEPS
  220. OVER SPACE CHARACTERS. basic USES $00 TO MARK eND-OF-LINE, SO NEITHER USE
  221. THAT IN YOUR DEFINITIONS.
  222.  
  223.     tHERE ARE SOME SPECIAL "PRINCIPAL" LABELS, WHICH YOU CAN'T MAKE OR
  224. FIND IN cATALOG (WITH " LINE " EXCEPTED), AND WHICH CAN BE ENTERED IN A
  225. DEFINITION BY HOTKEYS. hERE THEY ARE:
  226.   " LINE " : PROGRAM LINE, THIS IS THE DESCRIPTION'S ENTRY POINT
  227.   " STM "  : STATEMENT, INITIATING ELEMENT OF basic LINE SEGMENTS
  228.   " FN% "  : NUMERIC FUNCTION, WHICH RETURNS A NUMBER
  229.   " FN$ "  : STRING FUNCTION, WHICH RETURNS A STRING
  230.   " NUM "  : DIGIT (0-9)
  231.   " ABC "  : LETTER (a-z)
  232.   " CHR "  : ANY CHARACTER EXCEPT $00 AND $22 (")
  233.   " BYT "  : ANY CHARACTER EXCEPT $00
  234.  
  235.     wHEN YOU FINISHED EDITING A DEFINITION THEN PRESSING c=/rETURN YOU CAN
  236. SWITCH BACK TO cATALOG mODE. iF YOU MADE ANY CHANGES IN THAT DEFINITION THEN
  237. THE eDITOR AUTOMATICALLY KEEPS THE NEW VERSION (ONLY), AND SEARCHES EVERY
  238. LABELS OF THIS DEFINITION IN THE cATALOG. iF A NOT EXISTING LABEL IS FOUND,
  239. THE PROGRAM WILL AUTOMATICALLY CREATE THAT IN def GROUP, AND eDITOR WARNS
  240. YOU WITH A FLASHING OF SCREEN. iF THERE ISN'T ENOUGH FREE SPACE TO REGISTER
  241. CHANGES, PROGRAM STAYS IN eDITOR mODE.
  242.     dELETING A LABEL (IN cATALOG mODE) REQUIRES THE GREATEST CARE, BECAUSE
  243. IF YOU MAKE A MISTAKE HERE, YOU NEED A HARD WORK TO CORRECT IT. yOU CAN
  244. DELETE ONLY AN EMPTY LABEL (WHICH HAS TOTALLY EMPTY DEFINITION). iF YOU
  245. DELETED A LABEL WHICH IS REFERRED FROM ELSEWHERE, THEN LOOKING AT THOSE
  246. DEFINITIONS YOU WILL SEE " ?" LABELS STANDING FOR THIS DELETED ONE, BUT
  247. ONLY UNTIL YOU EDIT THEM. wHEN YOU RE-CREATE THE DELETED LABEL IN cATALOG,
  248. THE eDITOR CAN NOT SEE THE CONNECTION BETWEEN THE NEW AND THE RELIEF LABELS,
  249. SO IT DOES NOT CORRECT AUTOMATICALLY THE DEFINITIONS, YOU HAVE TO DO IT
  250. MANUALLY. nEVER LEAVE DISCONNECTED OR EMPTY LABELS IN A DESCRIPTION, BECAUSE
  251. THIS MAY CAUSE FAULT ANALYSIS OR ENDLESS LOOP FOR sYNTAXER.
  252.  
  253.     tHE COMPLETE DESCRIPTION CAN BE SAVED ON DISK OR TAPE. iF YOU WANT TO
  254. USE IT WITH sYNTAXER THEN LOAD THIS (".sx64"-ENDED) FILE INSTEAD OF
  255. "default*", AS YOU'VE SEEN ABOVE. tHERE ARE FOUR COMPLETE DESCRIPTIONS IN
  256. THIS PACKAGE. default IS FOR STANDARD c64 basic, THE OTHERS FOR sIMON'S
  257. basic, gRAPHICS basic AND sUPERGRAFIK. tRY THESE FILES, AND IF YOU FIND ANY
  258. PROBLEM WITH YOUR VERSIONS THEN YOU CAN MAKE APPROPRIATE CHANGES WITH
  259. eDITOR.
  260.  
  261.  
  262.  
  263.         mAIN FUNCTIONS IN cATALOG mODE
  264.            (ABBREVIATIONS:  = -> c= , C -> cTRL , {$7c} -> OR)
  265.  
  266.   f1 {$7c} rIGHT     : NEXT GROUP RIGHT
  267.   f2 {$7c} lEFT      : NEXT GROUP LEFT
  268.   f3 {$7c} dOWN      : STEP DOWN IN SAME GROUP
  269.   f4 {$7c} uP        : STEP UP IN SAME GROUP
  270.   hOME           : JUMP TO FIRST LABEL IN GROUP
  271.   cLR            : JUMP TO LAST LABEL IN GROUP
  272.   LETTER {$7c} NUMBER: JUMP TO NEXT LABEL STARTING WITH THIS CHARACTER
  273.   =hOME          : JUMP TO " LINE " LABEL
  274.   rETURN         : EDIT THE SELECTED LABEL'S DEFINITION (eDITOR mODE)
  275.   sPACE          : ENTER NEW LABEL (TYPE ITS NAME, AND rETURN)
  276.   =- THEN dEL    : DELETE SELECTED (!) LABEL
  277.   =n             : JUMP TO NEXT EMPTY LABEL (DISPLAYED IN RED)
  278.   =v             : CHECK NESTING ORDER OF BRACKETS
  279.                    (IN CASE OF ERROR eDITOR mODE FOLLOWS WITH THE WRONG
  280.                     DEFINITION)
  281.   @              : DISPLAY dos MESSAGE (OF DISK DRIVE)
  282.   =@             : EDIT AND SEND dos COMMAND
  283.   =4             : LIST DISK DIRECTORY ON SCREEN
  284.   =l             : LOAD DESCRIPTION FILE
  285.   =s             : SAVE DESCRIPTION INTO FILE
  286.   =sTOP          : EXIT sYNTAXER eDITOR (NO WARNING ABOUT CHANGES)
  287.  
  288.  
  289.  
  290.         mAIN FUNCTIONS IN eDITOR mODE
  291.  
  292.   C,{$7c}C.{$7c}C/{$7c}C:{$7c}   : ENTER ONE OF bnf SYMBOLS
  293.    {$7c}C;{$7c}C*{$7c}C^{$7c}C8{$7c}C9
  294.   sPACE          : ENTER A LABEL
  295.   Ca{$7c}Cb{$7c}Cc{$7c}Cl{$7c}   : ENTER ONE OF "PRINCIPAL" LABELS
  296.    {$7c}Cn{$7c}Cs{$7c}C4{$7c}C5
  297.   CdEL           : ENTER A CHARACTER BY ITS HEX CODE
  298.   dEL            : ERASE CHARACTER AT LEFT TO CURSOR (BACKSPACE)
  299.   cRSR...        : CURSOR MOVING
  300.   f5 {$7c} cLR       : JUMP TO END OF DEFINITION
  301.   f6 {$7c} hOME      : JUMP TO START OF DEFINITION
  302.   =rETURN        : EXIT eDITOR mODE, KEEP CHANGES
  303.   =lEFTaRROW     : QUIT eDITOR mODE, LOSE CHANGES
  304.   f1...f4        : SAME AS IN cATALOG mODE (CHANGES ARE KEPT)
  305.   =-             : CUT (AND STORE ON CLIPBOARD) ALL TEXT FROM CURSOR
  306.                    POSITION TO THE END OF DEFINITION
  307.   =+             : INSERT (PASTE) CLIPBOARD'S CONTENT AT CURSOR POSITION
  308.   =v             : CHECK NESTING ORDER OF BRACKETS IN CURRENT DEFINITION
  309.                    (IN CASE OF ERROR THE BORDER IS RED, CURSOR IS AT THE
  310.                     ERROR POINT)
  311.  
  312.  
  313.  
  314.         aDDITIONAL COMMENTS
  315.  
  316.     wITH THIS eDITOR YOU CAN MAKE DESCRIPTIONS ONLY FOR LANGUAGES WHICH USE
  317. THE SAME INTERNAL PROGRAM STRUCTURE AS c64 basic. tHE PROGRAMS (IN MEMORY OR
  318. IN FILE) ARE DIVIDED INTO LINES. eACH LINE HAS TO BEGIN WITH FOUR INDIFFER-
  319. ENT BYTES (POINTER AND LINE NUMBER), AND HAS TO END WITH $00. tHE END OF
  320. PROGRAM IS MARKED WITH $0000. sOME SYSTEMS (E.G: lOGO, fORTH, pROLOG) ARE
  321. DESIGNED FOR DIFFERENT STRUCTURE.
  322.     wHEN YOU CREATE A NEW DESCRIPTION FILE, IT'S RECOMMENDED TO BEGIN WITH
  323. default, AND MAKE CHANGES ON ITS COPY. mODIFYING stm, fn% OR fn$ GROUPS AND
  324. THEIR LABELS IS NOT TOO DANGEROUS, BUT BE CAREFUL WHEN CHANGING def GROUP,
  325. THERE ARE IMPORTANT BASIC DEFINITIONS.
  326.     iF YOU FIND sYNTAXER WORKING FOR SECONDS WITH ONE LINE, AND THE BORDER
  327. SHOWS A REPETITIVE SERIES OF STRIPES (OR A SINGLE COLOUR), THEN THE
  328. DESCRIPTION HAS A SECTION WHICH FITS INFINITELY LONG TO A PART OF THAT
  329. PROGRAM LINE. bREAK THE PROCESS WITH sTOP/rESTORE, AND IMPROVE THE
  330. DESCRIPTION WITH eDITOR. fOR EXAMPLE: IF YOU PLACE A {CBM-Q}{CBM-F} ELEMENT IN A
  331. DEFINITION (REPEAT-BRACKETS AROUND NOTHING) THEN sYNTAXER CAN REPEAT THE
  332. 'NOTHING' INFINITELY AND STILL FINDS NO DEPARTURE FROM THE CURRENT PROGRAM
  333. LINE SEGMENT. lET'S SEE SOME OTHER CONSIDERATIONS.
  334.     iF THERE ARE TWO TEXTS IN 'OR' CONNECTION AND ONE IS THE OTHER'S FIRST
  335. PART (E.G: <ABC{$7c}AB>) THEN PUT THE LONGER TEXT ON FIRST PLACE. iF sYNTAXER
  336. WOULD CHECK AN "ABC" LINE BASED ON AN INCORRECT "<AB{$7c}ABC>" DEFINITION, THEN
  337. "AB" PART WOULD BE PASSED, AND "C" PART SHOULD BE COMPARED WITH THE NEXT
  338. (AND MAYBE NOT EXISTING) SEGMENT OF THIS DEFINITION, WHICH MEANS A MISTAKEN
  339. ANALYSIS.
  340.     sUPPOSE THERE IS A DEFINITION CONTAINING "{CBM-Q}({CBM-F}(NUMEXP)" PATTERN. hERE YOU
  341. CAN SEE AN APPEARANCE OF "(" AFTER A REPETITIVE DEFINITION OF THE SAME SIGN.
  342. wHEN sYNTAXER TRIES TO ANALYZE "(a+2)*3" EXPRESSION BY THIS DEFINITION, THE
  343. OPENING PARENTHESIS IS PASSED AS THE REPETITIVE ITEM ALLOWS IT, BUT THEN THE
  344. REMAINING OBLIGATORY PARENTHESIS DOES NOT FIT TO THE FOLLOWING "a" SIGN, SO
  345. AN ERROR WARNING WILL BE DISPLAYED.
  346.     (rEMARK: sYNTAXER FOLLOWS A PREORDER 'BACKTRACK' ALGORITHM, BUT
  347. BACKTRACKS ONLY TILL THE ACTUAL PARENTHESIS LEVEL. iF THE DESCRIPTION'S
  348. GRAPH IS NOT A REGULAR TREE, OR THE DEFINED CODE IS INFINITE OR NOT
  349. LEFT-PREFIX, THEN THE COMPARISON COULD FAIL OR CAUSE AN ENDLESS LOOP.)
  350.     tHE COMPONENTS OF THE sYNTAXER ARE LOADED TO THE FOLLOWING AREAS:
  351. $cc2e-cff0 (sxr1), e000-e52e (sxr2), a000-... (*.sx64).
  352.  
  353.