-- main script that runs application logic and flow USB_IN = 0x80 --device to host USB_OUT = 0x00 --host to device -- read all the C shared_dict*.h files and create tables with all values -- This isn't 'Nam there are rules! -- dictionary #define that start with underscore are skipped this skips over header and special cases -- currently only finds lowercase #define statements (seems C does too!) -- multiline comments /* comment */ are not permitted, will throw error! -- #define statements must have a numeric value such as: #define FOO 4 -- #define without number will error like this: "#define FOO BAR" or "#define FOO BAR - 100" is bad too! -- fills passed in table with keys and values to be used for making usb dictionary calls -- accepts decimal or hex when 0x00 format function create_dict_tables( table, file ) assert(io.input(file, "r")) local count = 0 local define = 0 local define_end = 0 local comment = 0 for line in io.lines() do count = count + 1 --search for multiline comment opening, starting at index 1, plain search = true if string.find( line, "/*", 1, true) then print("\n\n!!!ERROR!!!\nmultiline comment found line number", count) print("while parsing file:", file, "\nonly inline comments are permitted!!!\n") error("multiline comments not allowed in dictionary files!") end define, define_end = string.find( line, "#define") if define then comment = string.find(line, "//") --check for comment following define, if present cut out comment if comment and (comment>define) then line = string.sub(line, 1, comment-1 ) end --check for comment prior to define, skip if present if not (comment and (comment