TecKit mapping editor question

Why does this code produce “code space mismatch at line 25”. There is no line 25 in the file, the last line of code is line 23.

; This file was created by <author> using TECkitMappingEditorU.exe v4.0.0.0 on 12/2/2020.
;   Conversion Type = Legacy_to_from_Unicode
;   Left-hand side font = Courier New;11.25
;   Right-hand side font = Charis SIL;11.25
;   Main Window Position = 0,0,658,713
;   Left-hand side Character Map Window Position = 658,0,457,447
;   Right-hand side Character Map Window Position = 693,257,571,512

EncodingName            "a canonical name that uniquely identifies this mapping table from all others"
DescriptiveName         "a string that describes the mapping"
Version                 "1"
Contact                 "mailto:user@addr"
RegistrationAuthority   "the organization responsible for the encoding"
RegistrationName        "the name and version of the mapping, as recognized by that authority"
Copyright               "© 2020 <CompanyName>. All rights reserved."
LHSFlags                ()
RHSFlags                ()
ByteClass [abc] = (33..126)


 179 > latin_small_letter_c_with_cedilla

The line

ByteClass [abc] = (33…126)

Appears to be causing the error. I’m not a TECkit expert, but I spent an hour working with it yesterday, so it’s fresh. I define a character class inside a pass.


ByteClass [abc] = (33…126)

So that it is under the line


Makes the compile error go away. But check that definition again. Is (33…126) what you really want?

Thanks, I did get past the error by deleting the pass line (the task only needs one pass).
What the ByteClass was for was to specify all the “lower ANSI” punctuation and letters to be transformed into a matching Unicode class. I entered the numbers in decimal because that is what the program seems to expect for bytes. The table as I posted it had the class not being used at all, because I had not finished it. I posted it in that state because I was already getting the error.

The class definition has to be within a pass, however if there is no pass statement, TECkit assumes a pass(Byte_Unicode) statement. So, both solutions (deleting the pass statement or moving the class definition into the pass) work to resolve the error.

Details from TECkit_Language_2.1.pdf:
For compatibility with the original TECkit 1.0 language (as supported by the prototype TECkit release in 2000), in the case where the description requires just a single Byte_Unicode pass, the pass line may be omitted altogether; if class definitions and mapping rules are found with no pass line, an implicit pass(Byte_Unicode) is assumed.

You should be able to use a decimal number (33) or a hex number (0x21) or a quoted string (’!’) to specify a byte value.