From 11f2f2e329ef404d0e9c022cb2f9fbbb45bae285 Mon Sep 17 00:00:00 2001
From: nancy.liao <huihui.liao@greentest.com.cn>
Date: 周日, 27 4月 2025 17:33:31 +0800
Subject: [PATCH] 完成了SCPI命令语法分析器的完整规则

---
 libscpi/src/parser.c |   19 +++++++++++--------
 1 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/libscpi/src/parser.c b/libscpi/src/parser.c
index ce17163..a6376cf 100644
--- a/libscpi/src/parser.c
+++ b/libscpi/src/parser.c
@@ -37,6 +37,7 @@
 
 #include <ctype.h>
 #include <string.h>
+#include "scpi/externinterface.h"
 
 #include "scpi/config.h"
 #include "scpi/parser.h"
@@ -45,7 +46,7 @@
 #include "scpi/error.h"
 #include "scpi/constants.h"
 #include "scpi/utils.h"
-
+#include "scpi/externinterface.h"
 /**
  * Write data to SCPI output
  * @param context
@@ -180,14 +181,14 @@
  * @param context
  * @result TRUE if context->paramlist is filled with correct values
  */
-static scpi_bool_t findCommandHeader(scpi_t * context, const char * header, int len) {
-    int32_t i;
-    const scpi_command_t * cmd;
+scpi_bool_t findCommandHeader(scpi_t * context, const char * header, int len)
+{
 
-    for (i = 0; context->cmdlist[i].pattern != NULL; i++) {
-        cmd = &context->cmdlist[i];
-        if (matchCommand(cmd->pattern, header, len, NULL, 0, 0)) {
-            context->param_list.cmd = cmd;
+    for(int i=0;i<get_pattern_count();i++)
+    {
+        if( match_segments_global(header,i) )
+        {
+            context->param_list.cmd = &context->cmdlist[i];
             return TRUE;
         }
     }
@@ -316,6 +317,8 @@
     context->buffer.data = input_buffer;
     context->buffer.length = input_buffer_length;
     context->buffer.position = 0;
+
+
     SCPI_ErrorInit(context, error_queue_data, error_queue_size);
 }
 

--
Gitblit v1.9.1