From f65ded7a5945cdaf245502c6fa4cdd96fc9a8a53 Mon Sep 17 00:00:00 2001
From: Jan Breuer <jan.breuer@jaybee.cz>
Date: 摹曛, 10 9月 2015 07:32:53 +0800
Subject: [PATCH] mend

---
 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