⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csmacred.c

📁 www工具包
💻 C
📖 第 1 页 / 共 3 页
字号:
#include "wwwsys.h"#include "HTUtils.h"#include "HTString.h"#include "CSParse.h"#include "CSMR.h"#include "CSMRSt.h"#define GetCSMachRead(A) ((A)->target.pCSMachRead)#define SETNEXTSTATE(target, subState) \  pCSParse->pTargetObject = target; \  pCSParse->currentSubState = subState;struct CSMachRead_s {    CSMachReadData_t * pCSMachReadData;    MachRead_category_t * pCurrentMachRead_category;    MachRead_enum_t * pCurrentMachRead_enum;    BOOL inDefault;    MachReadTargetCallback_t * pMachReadTargetCallback;    MRErrorHandler_t * pMRErrorHandler;};PRIVATE TargetObject_t MachRead_targetObject;PRIVATE TargetObject_t Version_targetObject;PRIVATE TargetObject_t System_targetObject;PRIVATE TargetObject_t Service_targetObject;PRIVATE TargetObject_t Icon_targetObject;PRIVATE TargetObject_t Name_targetObject;PRIVATE TargetObject_t Description_targetObject;PRIVATE TargetObject_t Default_targetObject;PRIVATE TargetObject_t Min_targetObject;PRIVATE TargetObject_t Max_targetObject;PRIVATE TargetObject_t Multi_targetObject;PRIVATE TargetObject_t Unord_targetObject;PRIVATE TargetObject_t Integer_targetObject;PRIVATE TargetObject_t Labeled_targetObject;PRIVATE TargetObject_t Category_targetObject;PRIVATE TargetObject_t Transmit_as_targetObject;PRIVATE TargetObject_t Enum_targetObject;PRIVATE TargetObject_t Value_targetObject;PRIVATE Prep_t postValueState;PRIVATE Prep_t Category_next;PRIVATE Prep_t Multi_setTrue;PRIVATE Prep_t Unord_setTrue;PRIVATE Prep_t Integer_setTrue;PRIVATE Prep_t Labeled_setTrue;PRIVATE Check_t Version_get;PRIVATE Check_t System_get;PRIVATE Check_t Service_get;PRIVATE Check_t Icon_get;PRIVATE Check_t Name_get;PRIVATE Check_t Description_get;PRIVATE Check_t Min_get;PRIVATE Check_t Max_get;PRIVATE Check_t Multi_get;PRIVATE Check_t Unord_get;PRIVATE Check_t Integer_get;PRIVATE Check_t Labeled_get;PRIVATE Check_t Transmit_as_get;PRIVATE Check_t Value_get;PRIVATE Open_t MachRead_open;PRIVATE Open_t Category_open;PRIVATE Open_t Default_open;PRIVATE Open_t Enum_open;PRIVATE Close_t MachRead_close;PRIVATE Close_t Category_close;PRIVATE Close_t Default_close;PRIVATE Close_t Enum_close;PRIVATE Destroy_t MachRead_destroy;PRIVATE Destroy_t Category_destroy;PRIVATE Destroy_t Default_destroy;PRIVATE Destroy_t Enum_destroy;PRIVATE TargetChangeCallback_t targetChangeCallback;PRIVATE ParseErrorHandler_t parseErrorHandler;/* CSParse_doc states *//* M A C H I N E   R E A D A B L E   P A R S E R   S T A T E S *//* This contains all the states in the BNF for PICS service descriptions. * See User/Parsing.html for details. */PRIVATE StateToken_t MachRead_stateTokens[] = {     /* A: 1st we need a version       B: then a system       C: and a service       D: an open paren       E: could be icondef - category       F: back from category so open or close paren       G: open paren so it is a category */     {           "enter", SubState_N,    Punct_ALL, 0,             0, 0, 0, &MachRead_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     {"need version set", SubState_A, Punct_LPAREN, 0,             0, 0, 0, &Version_targetObject, SubState_N, 0, 0},     { "need system set", SubState_B, Punct_LPAREN, 0,             0, 0, 0, &System_targetObject, SubState_N, 0, 0},     {"need service set", SubState_C, Punct_LPAREN, 0,             0, 0, 0, &Service_targetObject, SubState_N, 0, 0},     {"need options set", SubState_D, Punct_LPAREN, 0,             0, 0, 0, &MachRead_targetObject, SubState_E, 0, 0},     {            "icon", SubState_E,  Punct_WHITE, 0,        "icon", 0, 0, &Icon_targetObject, SubState_N, 0, 0},     {            "name", SubState_E,  Punct_WHITE, 0,        "name", 0, 0, &Name_targetObject, SubState_N, 0, 0},     {     "description", SubState_E,  Punct_WHITE, 0, "description", 0, 0, &Description_targetObject, SubState_N, 0, 0},     {         "default", SubState_E, Punct_LPAREN, 0,     "default", 0, 0, &Default_targetObject, SubState_N, 0, 0},     {        "category", SubState_E, Punct_LPAREN, 0,    "category", 0, 0, &Category_targetObject, SubState_N, 0, 0},     {   "open category", SubState_F, Punct_LPAREN, 0,             0, 0, 0, &MachRead_targetObject, SubState_G, 0, 0},     {             "end", SubState_F, Punct_RPAREN, 0,             0, 0, 0, &MachRead_targetObject, SubState_N, Command_CLOSE, 0},     {        "category", SubState_G, Punct_LPAREN, 0,    "category", 0, 0, &Category_targetObject, SubState_N, 0, 0}    };PRIVATE TargetObject_t MachRead_targetObject = {"MachRead", &MachRead_open, &MachRead_close, &MachRead_destroy, MachRead_stateTokens, raysize(MachRead_stateTokens), CSMRTC_MACHREAD};PRIVATE StateToken_t Version_stateTokens[] = {     /* A: fresh Version       B: read value */     {"enter", SubState_N,    Punct_ALL, 0,              0, 0, 0, &Version_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     { "text", SubState_A,  Punct_WHITE, 0, "PICS-version", 0, 0, &Version_targetObject, SubState_B, 0, 0},     {"value", SubState_B, Punct_RPAREN, &Version_get,   0, 0, 0, &MachRead_targetObject, SubState_B, Command_CLOSE, 0}    };PRIVATE TargetObject_t Version_targetObject = {"Version", 0, 0, 0, Version_stateTokens, raysize(Version_stateTokens), CSMRTC_VERSION};PRIVATE StateToken_t System_stateTokens[] = {     /* A: fresh System       B: read value */     {"enter", SubState_N,    Punct_ALL, 0,               0, 0, 0, &System_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     { "text", SubState_A,  Punct_WHITE, 0, "rating-system", 0, 0, &System_targetObject, SubState_B, 0, 0},     {"value", SubState_B, Punct_RPAREN, &System_get,     0, 0, 0, &MachRead_targetObject, SubState_C, Command_CLOSE, 0}    };PRIVATE TargetObject_t System_targetObject = {"System", 0, 0, 0, System_stateTokens, raysize(System_stateTokens), CSMRTC_SYSTEM};PRIVATE StateToken_t Service_stateTokens[] = {     /* A: fresh Service       B: read value */     {"enter", SubState_N,    Punct_ALL, 0,                0, 0, 0, &Service_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     { "text", SubState_A,  Punct_WHITE, 0, "rating-service", 0, 0, &Service_targetObject, SubState_B, 0, 0},     {"value", SubState_B, Punct_RPAREN, &Service_get,     0, 0, 0, &MachRead_targetObject, SubState_D, Command_CLOSE, 0}    };PRIVATE TargetObject_t Service_targetObject = {"Service", 0, 0, 0, Service_stateTokens, raysize(Service_stateTokens), CSMRTC_SERVICE};PRIVATE StateToken_t Icon_stateTokens[] = {     /* A: read value */     {"enter", SubState_N,    Punct_ALL, 0,          0, 0, 0, &Icon_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     {"value", SubState_A, Punct_RPAREN, &Icon_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState}    };PRIVATE TargetObject_t Icon_targetObject = {"Icon", 0, 0, 0, Icon_stateTokens, raysize(Icon_stateTokens), CSMRTC_ICON};PRIVATE StateToken_t Name_stateTokens[] = {     /* A: read value */     {"enter", SubState_N,    Punct_ALL, 0,          0, 0, 0, &Name_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     {"value", SubState_A, Punct_RPAREN, &Name_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState}    };PRIVATE TargetObject_t Name_targetObject = {"Name", 0, 0, 0, Name_stateTokens, raysize(Name_stateTokens), CSMSRC_NAME};PRIVATE StateToken_t Value_stateTokens[] = {     /* A: read value */     {"enter", SubState_N,    Punct_ALL, 0,          0, 0, 0, &Value_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     {"value", SubState_A, Punct_RPAREN, &Value_get, 0, 0, 0,  &Enum_targetObject, SubState_G, Command_CLOSE, 0}    };PRIVATE TargetObject_t Value_targetObject = {"Name", 0, 0, 0, Value_stateTokens, raysize(Value_stateTokens), CSMSRC_VALUE};PRIVATE StateToken_t Description_stateTokens[] = {     /* A: read value */     {"enter", SubState_N,    Punct_ALL, 0,          0, 0, 0, &Description_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     {"value", SubState_A, Punct_RPAREN, &Description_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState}    };PRIVATE TargetObject_t Description_targetObject = {"Description", 0, 0, 0, Description_stateTokens, raysize(Description_stateTokens), CSMSRC_DESC};PRIVATE StateToken_t Default_stateTokens[] = {     /* A: need an open	   B: need option */     {  "enter", SubState_N, Punct_ALL, 0,          0, 0, 0, &Default_targetObject, SubState_B, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     {   "open", SubState_A,             Punct_LPAREN, 0,            0, 0, 0, &Default_targetObject, SubState_B, 0, 0},     {  "close", SubState_A,             Punct_RPAREN, 0,            0, 0, 0, &MachRead_targetObject, SubState_D, Command_CLOSE, 0},     {    "min", SubState_B,              Punct_WHITE, 0,        "min", 0, 0, &Min_targetObject, SubState_N, 0, 0},     {    "max", SubState_B,              Punct_WHITE, 0,        "max", 0, 0, &Max_targetObject, SubState_N, 0, 0},     {  "multi", SubState_B, Punct_WHITE|Punct_RPAREN, 0, "multivalue", 0, 0, &Multi_targetObject, SubState_N, Command_CHAIN, 0},     {  "unord", SubState_B, Punct_WHITE|Punct_RPAREN, 0,  "unordered", 0, 0, &Unord_targetObject, SubState_N, Command_CHAIN, 0},     {"integer", SubState_B, Punct_WHITE|Punct_RPAREN, 0,    "integer", 0, 0, &Integer_targetObject, SubState_N, Command_CHAIN, 0},     {"labeled", SubState_B, Punct_WHITE|Punct_RPAREN, 0, "label-only", 0, 0, &Labeled_targetObject, SubState_N, Command_CHAIN, 0},    };PRIVATE TargetObject_t Default_targetObject = {"Default", &Default_open, &Default_close, &Default_destroy, Default_stateTokens, raysize(Default_stateTokens), CSMRTC_DEF};PRIVATE StateToken_t Min_stateTokens[] = {     /* A: read value */     {"enter", SubState_N,    Punct_ALL,        0, 0, 0, 0, &Min_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     {"value", SubState_A, Punct_RPAREN, &Min_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState}    };PRIVATE TargetObject_t Min_targetObject = {"Min", 0, 0, 0, Min_stateTokens, raysize(Min_stateTokens), CSMRTC_MIN};PRIVATE StateToken_t Max_stateTokens[] = {     /* A: read value */     {"enter", SubState_N,    Punct_ALL,        0, 0, 0, 0, &Max_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     {"value", SubState_A, Punct_RPAREN, &Max_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState}    };PRIVATE TargetObject_t Max_targetObject = {"Max", 0, 0, 0, Max_stateTokens, raysize(Max_stateTokens), CSMRTC_MAX};PRIVATE StateToken_t Multi_stateTokens[] = {     /* A: chained text with optional close paren	   B: value */     { "enter", SubState_N,    Punct_ALL, 0,            0, 0, 0, &Multi_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     {"binary", SubState_A,  Punct_WHITE, 0, "multivalue", 0, 0, &Multi_targetObject, SubState_B, 0, 0},     { "unary", SubState_A, Punct_RPAREN, 0, "multivalue", 0, 0, 0, SubState_X, Command_CLOSE, &Multi_setTrue},     { "value", SubState_B, Punct_RPAREN, &Multi_get,   0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState}    };PRIVATE TargetObject_t Multi_targetObject = {"Multi", 0, 0, 0, Multi_stateTokens, raysize(Multi_stateTokens), CSMRTC_MULTI};PRIVATE StateToken_t Unord_stateTokens[] = {     /* A: chained text with optional close paren	   B: value */     { "enter", SubState_N,    Punct_ALL, 0,           0, 0, 0, &Unord_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     {"binary", SubState_A,  Punct_WHITE, 0, "unordered", 0, 0, &Unord_targetObject, SubState_B, 0, 0},     { "unary", SubState_A, Punct_RPAREN, 0, "unordered", 0, 0, 0, SubState_X, Command_CLOSE, &Unord_setTrue},     { "value", SubState_B, Punct_RPAREN, &Unord_get,  0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState}    };PRIVATE TargetObject_t Unord_targetObject = {"Unord", 0, 0, 0, Unord_stateTokens, raysize(Unord_stateTokens), CSMRTC_UNORD};PRIVATE StateToken_t Integer_stateTokens[] = {     /* A: chained text with optional close paren	   B: value */     { "enter", SubState_N,    Punct_ALL,    0,       0, 0, 0, &Integer_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     {"binary", SubState_A,  Punct_WHITE,    0, "integer", 0, 0, &Integer_targetObject, SubState_B, 0, 0},     { "unary", SubState_A, Punct_RPAREN,    0, "integer", 0, 0, 0, SubState_X, Command_CLOSE, &Integer_setTrue},     { "value", SubState_B, Punct_RPAREN, &Integer_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState}    };PRIVATE TargetObject_t Integer_targetObject = {"Integer", 0, 0, 0, Integer_stateTokens, raysize(Integer_stateTokens), CSMRTC_INT};PRIVATE StateToken_t Labeled_stateTokens[] = {     /* A: chained text with optional close paren	   B: value */     { "enter", SubState_N,    Punct_ALL,    0,       0, 0, 0, &Labeled_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     {"binary", SubState_A,  Punct_WHITE, 0, "label-only", 0, 0, &Labeled_targetObject, SubState_B, 0, 0},     { "unary", SubState_A, Punct_RPAREN, 0, "label-only", 0, 0, 0, SubState_X, Command_CLOSE, &Labeled_setTrue},     { "value", SubState_B, Punct_RPAREN, &Labeled_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState}    };PRIVATE TargetObject_t Labeled_targetObject = {"Labeled", 0, 0, 0, Labeled_stateTokens, raysize(Labeled_stateTokens), CSMRTC_LABL};PRIVATE StateToken_t Category_stateTokens[] = {     /* A: 1st we need a transmit-as       B: an open paren       C: could be icondef - enum, category       D: back from enum so need open or close       E: enum or category       F: back from category so need open or close       G: category */     {           "enter", SubState_N,       Punct_ALL, 0,       0, 0, 0, &Transmit_as_targetObject, SubState_N, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     {"need options set", SubState_B,    Punct_LPAREN, 0,             0, 0, 0, &Category_targetObject, SubState_C, 0, 0},     {             "end", SubState_B,    Punct_RPAREN, 0,             0, 0, 0, 0, SubState_X, Command_CLOSE, &Category_next},     {            "icon", SubState_C,     Punct_WHITE, 0,        "icon", 0, 0, &Icon_targetObject, SubState_N, 0, 0},     {            "name", SubState_C,     Punct_WHITE, 0,        "name", 0, 0, &Name_targetObject, SubState_N, 0, 0},     {     "description", SubState_C,     Punct_WHITE, 0, "description", 0, 0, &Description_targetObject, SubState_N, 0, 0},     {             "min", SubState_C,     Punct_WHITE, 0,         "min", 0, 0, &Min_targetObject, SubState_N, 0, 0},     {             "max", SubState_C,     Punct_WHITE, 0,         "max", 0, 0, &Max_targetObject, SubState_N, 0, 0},     {  "multi", SubState_C, Punct_WHITE|Punct_RPAREN, 0,  "multivalue", 0, 0, &Multi_targetObject, SubState_N, Command_CHAIN, 0},     {  "unord", SubState_C, Punct_WHITE|Punct_RPAREN, 0,   "unordered", 0, 0, &Unord_targetObject, SubState_N, Command_CHAIN, 0},     {"integer", SubState_C, Punct_WHITE|Punct_RPAREN, 0,     "integer", 0, 0, &Integer_targetObject, SubState_N, Command_CHAIN, 0},     {"labeled", SubState_C, Punct_WHITE|Punct_RPAREN, 0,  "label-only", 0, 0, &Labeled_targetObject, SubState_N, Command_CHAIN, 0},     {            "enum", SubState_C,    Punct_LPAREN, 0,       "label", 0, 0, &Enum_targetObject, SubState_N, 0, 0},     {        "category", SubState_C,    Punct_LPAREN, 0,    "category", 0, 0, &Category_targetObject, SubState_N, 0, 0},     {"open enum or cat", SubState_D,    Punct_LPAREN, 0,             0, 0, 0, &Category_targetObject, SubState_E, 0, 0},     {             "end", SubState_D,    Punct_RPAREN, 0,             0, 0, 0, 0, SubState_X, Command_CLOSE, &Category_next},     {            "enum", SubState_E,    Punct_LPAREN, 0,       "label", 0, 0, &Enum_targetObject, SubState_N, 0, 0},     {        "category", SubState_E,    Punct_LPAREN, 0,    "category", 0, 0, &Category_targetObject, SubState_N, 0, 0},     {             "end", SubState_E,    Punct_RPAREN, 0,             0, 0, 0, 0, SubState_X, Command_CLOSE, &Category_next},     {     "open or cat", SubState_F,    Punct_LPAREN, 0,             0, 0, 0, &Category_targetObject, SubState_G, 0, 0},     {             "end", SubState_F,    Punct_RPAREN, 0,             0, 0, 0, 0, SubState_X, Command_CLOSE, &Category_next},     {        "category", SubState_G,    Punct_LPAREN, 0,    "category", 0, 0, &Category_targetObject, SubState_N, 0, 0},     {     "to MachRead", SubState_H,       Punct_ALL, 0,             0, 0, 0, &MachRead_targetObject, SubState_F, Command_CHAIN, 0}    };PRIVATE TargetObject_t Category_targetObject = {"Category", &Category_open, &Category_close, &Category_destroy, Category_stateTokens, raysize(Category_stateTokens), CSMRTC_CAT};PRIVATE StateToken_t Transmit_as_stateTokens[] = {     /* A: fresh Service       B: read value */     {"enter", SubState_N,    Punct_ALL,    0,             0, 0, 0, &Transmit_as_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     { "text", SubState_A,  Punct_WHITE,    0, "transmit-as", 0, 0, &Transmit_as_targetObject, SubState_B, 0, 0},     {"value", SubState_B, Punct_RPAREN, &Transmit_as_get, 0, 0, 0, &Category_targetObject, SubState_B, Command_CLOSE, 0}    };PRIVATE TargetObject_t Transmit_as_targetObject = {"Transmit_as", 0, 0, 0, Transmit_as_stateTokens, raysize(Transmit_as_stateTokens), CSMRTC_TRANS};PRIVATE StateToken_t Enum_stateTokens[] = {     /* A: 'label'(	   B: 'name' -> C	   C: (	   D: 'description' -> E	   D: 'value' -> G	   E: (	   F: 'value' -> G	   G: ( - expect an icon	   G: ) close	   H: 'icon' -> I	   I: close */     {      "enter", SubState_N,    Punct_ALL, 0,             0, 0, 0, &Enum_targetObject, SubState_B, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0},     {       "name", SubState_B,  Punct_WHITE, 0,        "name", 0, 0, &Name_targetObject, SubState_N, 0, 0},     {       "open", SubState_C, Punct_LPAREN, 0,             0, 0, 0, &Enum_targetObject, SubState_D, 0, 0},     {"description", SubState_D,  Punct_WHITE, 0, "description", 0, 0, &Description_targetObject, SubState_N, 0, 0},     {      "value", SubState_D,  Punct_WHITE, 0,       "value", 0, 0, &Value_targetObject, SubState_N, 0, 0},     {       "open", SubState_E, Punct_LPAREN, 0,             0, 0, 0, &Enum_targetObject, SubState_F, 0, 0},     {      "value", SubState_F,  Punct_WHITE, 0,       "value", 0, 0, &Value_targetObject, SubState_N, 0, 0},     {       "open", SubState_G, Punct_LPAREN, 0,             0, 0, 0, &Enum_targetObject, SubState_H, 0, 0},     {      "close", SubState_G, Punct_RPAREN, 0,             0, 0, 0, &Category_targetObject, SubState_B, Command_CLOSE, 0},     {       "icon", SubState_H,  Punct_WHITE, 0,        "icon", 0, 0, &Icon_targetObject, SubState_N, 0, 0},     {      "close", SubState_I, Punct_RPAREN, 0,             0, 0, 0, &Category_targetObject, SubState_B, Command_CLOSE, 0}    };

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -