From ed07df16da675c4c123e02a996822daf13d69c63 Mon Sep 17 00:00:00 2001
From: lhoerl <coder@lolux.de>
Date: 周一, 03 8月 2015 22:42:07 +0800
Subject: [PATCH] added full SCPI error messages added list for device dependent error messages some minor changes to get rid of compiler warnings added support for Keil ARM compiler added support for National Instruments CVI compiler removed bug if(c = '\0')...

---
 libscpi/src/scpi.g |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/libscpi/src/scpi.g b/libscpi/src/scpi.g
index 3d44bcf..a3993ff 100644
--- a/libscpi/src/scpi.g
+++ b/libscpi/src/scpi.g
@@ -10,7 +10,7 @@
 	
 	
 programMessageUnit 
-	:	WS* programHeader QUESTION? (WS programData (COMMA programData)*)?
+	:	WS* programHeader (WS programData (COMMA programData)*)?
 	;
 
 programHeader
@@ -19,11 +19,11 @@
 	;
 
 compoundProgramHeader
-	:	COLON? PROGRAM_MNEMONIC (COLON PROGRAM_MNEMONIC)*
+	:	COLON? PROGRAM_MNEMONIC (COLON PROGRAM_MNEMONIC)* QUESTION?
 	;
 	
 commonProgramHeader 
-	:	STAR PROGRAM_MNEMONIC
+	:	STAR PROGRAM_MNEMONIC QUESTION?
 	;
 	
 programDataSeparator 
@@ -39,7 +39,7 @@
 	|	characterProgramData
 	|	decimalNumericProgramData
 	|	stringProgramData
-//	|	arbitraryBlockProgramData
+	|	arbitraryBlockProgramData
 	|	expressionProgramData
 //	|	suffixProgramData
 	;
@@ -69,7 +69,12 @@
 
 expressionProgramData
 	: 	PROGRAM_EXPRESSION
-	;	
+	;
+
+// support only nonzero prefix
+arbitraryBlockProgramData
+	:	SHARP NONZERO_DIGIT NUMBER .*
+	;
 		
 PROGRAM_MNEMONIC	: 	ALPHA (ALPHA | DIGIT | UNDERSCORE)*;
 HEXNUM			:	SHARP H HEXDIGIT*;
@@ -108,6 +113,8 @@
 
 fragment ALPHA		:	('a'..'z'|'A'..'Z');
 fragment DIGIT		:	('0'..'9');
+fragment NONZERO_DIGIT	:	('1'..'9');
+
 fragment HEXDIGIT	:	(DIGIT | 'a'..'f' | 'A'..'F');
 fragment OCTDIGIT	:	('0'..'7');
 fragment BINDIGIT	:	('0' | '1');

--
Gitblit v1.9.1