Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: libscpi/src/scpi.g
- Revision:
- 0:be95bfb06686
diff -r 000000000000 -r be95bfb06686 libscpi/src/scpi.g
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/libscpi/src/scpi.g Mon Jan 17 13:20:09 2022 +0000
@@ -0,0 +1,142 @@
+grammar scpi;
+
+terminatedProgramMessage
+ : programMessage NL? EOF
+ ;
+
+programMessage
+ : programMessageUnit (SEMICOLON programMessageUnit)*
+ ;
+
+
+programMessageUnit
+ : WS* programHeader (WS programData (COMMA programData)*)?
+ ;
+
+programHeader
+ : compoundProgramHeader
+ | commonProgramHeader
+ ;
+
+compoundProgramHeader
+ : COLON? PROGRAM_MNEMONIC (COLON PROGRAM_MNEMONIC)* QUESTION?
+ ;
+
+commonProgramHeader
+ : STAR PROGRAM_MNEMONIC QUESTION?
+ ;
+
+programDataSeparator
+ : WS*
+ ;
+
+programData
+ : WS* programDataType WS*
+ ;
+
+programDataType
+ : nondecimalNumericProgramData
+ | characterProgramData
+ | decimalNumericProgramData
+ | stringProgramData
+ | arbitraryBlockProgramData
+ | expressionProgramData
+// | suffixProgramData
+ ;
+
+nondecimalNumericProgramData
+ : HEXNUM
+ | OCTNUM
+ | BINNUM
+ ;
+
+characterProgramData
+ : PROGRAM_MNEMONIC
+ ;
+
+decimalNumericProgramData
+ : DECIMAL_NUMERIC_PROGRAM_DATA_WITH_SUFFIX
+ ;
+
+//suffixProgramData
+// : PROGRAM_MNEMONIC//SUFFIX_PROGRAM_DATA
+// ;
+
+stringProgramData
+ : SINGLE_QUOTE_PROGRAM_DATA
+ | DOUBLE_QUOTE_PROGRAM_DATA
+ ;
+
+expressionProgramData
+ : PROGRAM_EXPRESSION
+ ;
+
+// support only nonzero prefix
+arbitraryBlockProgramData
+ : SHARP NONZERO_DIGIT NUMBER .*
+ ;
+
+PROGRAM_MNEMONIC : ALPHA (ALPHA | DIGIT | UNDERSCORE)*;
+HEXNUM : SHARP H HEXDIGIT*;
+BINNUM : SHARP Q OCTDIGIT*;
+OCTNUM : SHARP B BINDIGIT*;
+UNDERSCORE : '_';
+SEMICOLON : ';';
+QUESTION : '?';
+COLON : ':';
+COMMA : ',';
+STAR : '*';
+NL : '\r'? '\n' ;
+WS : (SPACE | TAB);
+
+DECIMAL_NUMERIC_PROGRAM_DATA_WITH_SUFFIX : DECIMAL_NUMERIC_PROGRAM_DATA WS* (SUFFIX_PROGRAM_DATA)?;
+fragment DECIMAL_NUMERIC_PROGRAM_DATA : MANTISA WS* (EXPONENT)?;
+SINGLE_QUOTE_PROGRAM_DATA : SINGLE_QUOTE ( (NON_SINGLE_QUOTE) | (SINGLE_QUOTE SINGLE_QUOTE))* SINGLE_QUOTE;
+DOUBLE_QUOTE_PROGRAM_DATA : DOUBLE_QUOTE ( (NON_DOUBLE_QUOTE) | (DOUBLE_QUOTE DOUBLE_QUOTE))* DOUBLE_QUOTE;
+//SUFFIX_PROGRAM_DATA : SLASH? (ALPHA+ (MINUS? DIGIT)?) ((SLASH | DOT) (ALPHA+ (MINUS? DIGIT)?))*;
+fragment SUFFIX_PROGRAM_DATA : SLASH? ALPHA+ ((SLASH | DOT) ALPHA+)*;
+//fragment SUFFIX_PROGRAM_DATA : ALPHA+;
+
+fragment PROGRAM_EXPRESSION_CHARACTER : (SPACE | '!' | '$'..'&' | '*'..':' | '<' ..'~');
+PROGRAM_EXPRESSION : LBRACKET PROGRAM_EXPRESSION_CHARACTER RBRACKET;
+
+fragment PLUSMN : (PLUS | MINUS);
+fragment MANTISA : PLUSMN? ( (NUMBER) | (NUMBER DOT NUMBER?) | (DOT NUMBER));
+
+//fragment EXPONENT : WS* E WS* PLUSMN? NUMBER;
+fragment EXPONENT : E WS* PLUSMN? NUMBER;
+
+fragment NUMBER : DIGIT+;
+
+fragment LBRACKET : '(';
+fragment RBRACKET : ')';
+
+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');
+
+fragment SHARP : '#';
+
+fragment E : ('E'|'e');
+fragment H : ('H'|'h');
+fragment Q : ('Q'|'q');
+fragment B : ('B'|'b');
+
+fragment SPACE : ' ';
+fragment TAB : '\t';
+
+fragment PLUS : '+';
+fragment MINUS : '-';
+fragment DOT : '.';
+fragment SLASH : '/';
+fragment SINGLE_QUOTE : '\'';
+fragment DOUBLE_QUOTE : '"';
+fragment NON_SINGLE_QUOTE : ~SINGLE_QUOTE;
+fragment NON_DOUBLE_QUOTE : ~DOUBLE_QUOTE;
+
+
+
