AMU Library 3.0
C/C++ library for communicating with AMU (Aerospace Measurement Unit) devices
Loading...
Searching...
No Matches
lexer.c File Reference

SCPI Lexer. More...

#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include "lexer_private.h"
#include "error.h"

Go to the source code of this file.

Macros

#define SKIP_NONE   0
#define SKIP_OK   1
#define SKIP_INCOMPLETE   -1

Functions

static int isws (int c)
static int isbdigit (int c)
static int isqdigit (int c)
static int iseos (lex_state_t *state)
int scpiLex_IsEos (lex_state_t *state)
static int ischr (lex_state_t *state, char chr)
static int isplusmn (int c)
static int isH (int c)
static int isB (int c)
static int isQ (int c)
static int isE (int c)
static int skipWs (lex_state_t *state)
static int skipDigit (lex_state_t *state)
static int skipNumbers (lex_state_t *state)
static int skipPlusmn (lex_state_t *state)
static int skipAlpha (lex_state_t *state)
static int skipChr (lex_state_t *state, char chr)
static int skipSlashDot (lex_state_t *state)
static int skipStar (lex_state_t *state)
static int skipColon (lex_state_t *state)
static int skipProgramMnemonic (lex_state_t *state)
int scpiLex_WhiteSpace (lex_state_t *state, scpi_token_t *token)
static int skipCommonProgramHeader (lex_state_t *state)
static int skipCompoundProgramHeader (lex_state_t *state)
int scpiLex_ProgramHeader (lex_state_t *state, scpi_token_t *token)
int scpiLex_CharacterProgramData (lex_state_t *state, scpi_token_t *token)
static int skipMantisa (lex_state_t *state)
static int skipExponent (lex_state_t *state)
int scpiLex_DecimalNumericProgramData (lex_state_t *state, scpi_token_t *token)
int scpiLex_SuffixProgramData (lex_state_t *state, scpi_token_t *token)
static int skipHexNum (lex_state_t *state)
static int skipOctNum (lex_state_t *state)
static int skipBinNum (lex_state_t *state)
int scpiLex_NondecimalNumericData (lex_state_t *state, scpi_token_t *token)
static int isascii7bit (int c)
static void skipQuoteProgramData (lex_state_t *state, char quote)
static void skipDoubleQuoteProgramData (lex_state_t *state)
static void skipSingleQuoteProgramData (lex_state_t *state)
int scpiLex_StringProgramData (lex_state_t *state, scpi_token_t *token)
static int isNonzeroDigit (int c)
int scpiLex_ArbitraryBlockProgramData (lex_state_t *state, scpi_token_t *token)
static int isProgramExpression (int c)
static void skipProgramExpression (lex_state_t *state)
int scpiLex_ProgramExpression (lex_state_t *state, scpi_token_t *token)
int scpiLex_Comma (lex_state_t *state, scpi_token_t *token)
int scpiLex_Semicolon (lex_state_t *state, scpi_token_t *token)
int scpiLex_Colon (lex_state_t *state, scpi_token_t *token)
int scpiLex_SpecificCharacter (lex_state_t *state, scpi_token_t *token, char chr)
int scpiLex_NewLine (lex_state_t *state, scpi_token_t *token)

Detailed Description

SCPI Lexer.

Date
Wed Mar 20 19:35:19 UTC 2013

Definition in file lexer.c.

Macro Definition Documentation

◆ SKIP_INCOMPLETE

#define SKIP_INCOMPLETE   -1

Definition at line 159 of file lexer.c.

◆ SKIP_NONE

#define SKIP_NONE   0

Definition at line 157 of file lexer.c.

◆ SKIP_OK

#define SKIP_OK   1

Definition at line 158 of file lexer.c.

Function Documentation

◆ isascii7bit()

int isascii7bit ( int c)
static

Definition at line 629 of file lexer.c.

◆ isB()

int isB ( int c)
static

Is letter B

Parameters
c
Returns

Definition at line 135 of file lexer.c.

◆ isbdigit()

int isbdigit ( int c)
static

Is binary digit

Parameters
c
Returns

Definition at line 61 of file lexer.c.

◆ ischr()

int ischr ( lex_state_t * state,
char chr )
static

Test current character

Parameters
state
chr
Returns

Definition at line 108 of file lexer.c.

◆ isE()

int isE ( int c)
static

Is letter E

Parameters
c
Returns

Definition at line 153 of file lexer.c.

◆ iseos()

int iseos ( lex_state_t * state)
static

Is end of string

Parameters
state
Returns

Definition at line 85 of file lexer.c.

◆ isH()

int isH ( int c)
static

Is letter H

Parameters
c
Returns

Definition at line 126 of file lexer.c.

◆ isNonzeroDigit()

int isNonzeroDigit ( int c)
static

Definition at line 707 of file lexer.c.

◆ isplusmn()

int isplusmn ( int c)
static

Is plus or minus

Parameters
c
Returns

Definition at line 117 of file lexer.c.

◆ isProgramExpression()

int isProgramExpression ( int c)
static

Definition at line 776 of file lexer.c.

◆ isQ()

int isQ ( int c)
static

Is letter Q

Parameters
c
Returns

Definition at line 144 of file lexer.c.

◆ isqdigit()

int isqdigit ( int c)
static

Is hexadecimal digit

Parameters
c
Returns

Definition at line 73 of file lexer.c.

◆ isws()

int isws ( int c)
static

Is white space

Parameters
c
Returns

Definition at line 49 of file lexer.c.

◆ scpiLex_ArbitraryBlockProgramData()

int scpiLex_ArbitraryBlockProgramData ( lex_state_t * state,
scpi_token_t * token )

Detect token Block Data

Parameters
state
token
Returns

Definition at line 717 of file lexer.c.

◆ scpiLex_CharacterProgramData()

int scpiLex_CharacterProgramData ( lex_state_t * state,
scpi_token_t * token )

Detect token "Character program data"

Parameters
state
token
Returns

Definition at line 451 of file lexer.c.

◆ scpiLex_Colon()

int scpiLex_Colon ( lex_state_t * state,
scpi_token_t * token )

Detect token colon

Parameters
state
token
Returns

Definition at line 877 of file lexer.c.

◆ scpiLex_Comma()

int scpiLex_Comma ( lex_state_t * state,
scpi_token_t * token )

Detect token comma

Parameters
state
token
Returns

Definition at line 837 of file lexer.c.

◆ scpiLex_DecimalNumericProgramData()

int scpiLex_DecimalNumericProgramData ( lex_state_t * state,
scpi_token_t * token )

Detect token Decimal number

Parameters
state
token
Returns

Definition at line 508 of file lexer.c.

◆ scpiLex_IsEos()

int scpiLex_IsEos ( lex_state_t * state)

Private export of iseos

Parameters
state
Returns

Definition at line 98 of file lexer.c.

◆ scpiLex_NewLine()

int scpiLex_NewLine ( lex_state_t * state,
scpi_token_t * token )

Detect token New line

Parameters
state
token
Returns

Definition at line 917 of file lexer.c.

◆ scpiLex_NondecimalNumericData()

int scpiLex_NondecimalNumericData ( lex_state_t * state,
scpi_token_t * token )

Detect token nondecimal number

Parameters
state
token
Returns

Definition at line 596 of file lexer.c.

◆ scpiLex_ProgramExpression()

int scpiLex_ProgramExpression ( lex_state_t * state,
scpi_token_t * token )

Detect token Expression

Parameters
state
token
Returns

Definition at line 805 of file lexer.c.

◆ scpiLex_ProgramHeader()

int scpiLex_ProgramHeader ( lex_state_t * state,
scpi_token_t * token )

Detect token command or compound program header

Parameters
state
token
Returns

Definition at line 405 of file lexer.c.

◆ scpiLex_Semicolon()

int scpiLex_Semicolon ( lex_state_t * state,
scpi_token_t * token )

Detect token semicolon

Parameters
state
token
Returns

Definition at line 857 of file lexer.c.

◆ scpiLex_SpecificCharacter()

int scpiLex_SpecificCharacter ( lex_state_t * state,
scpi_token_t * token,
char chr )

Detect specified character

Parameters
state
token
Returns

Definition at line 897 of file lexer.c.

◆ scpiLex_StringProgramData()

int scpiLex_StringProgramData ( lex_state_t * state,
scpi_token_t * token )

Detect token String data

Parameters
state
token
Returns

Definition at line 665 of file lexer.c.

◆ scpiLex_SuffixProgramData()

int scpiLex_SuffixProgramData ( lex_state_t * state,
scpi_token_t * token )

Definition at line 533 of file lexer.c.

◆ scpiLex_WhiteSpace()

int scpiLex_WhiteSpace ( lex_state_t * state,
scpi_token_t * token )

Detect token white space

Parameters
state
token
Returns

Definition at line 330 of file lexer.c.

◆ skipAlpha()

int skipAlpha ( lex_state_t * state)
static

Skip any character from 'a'-'Z'

Parameters
state
Returns

Definition at line 233 of file lexer.c.

◆ skipBinNum()

int skipBinNum ( lex_state_t * state)
static

Definition at line 581 of file lexer.c.

◆ skipChr()

int skipChr ( lex_state_t * state,
char chr )
static

Skip exact character chr or nothing

Parameters
state
chr
Returns

Definition at line 248 of file lexer.c.

◆ skipColon()

int skipColon ( lex_state_t * state)
static

Skip colon

Parameters
state
Returns

Definition at line 290 of file lexer.c.

◆ skipCommonProgramHeader()

int skipCommonProgramHeader ( lex_state_t * state)
static

Skip command program header *<PROGRAM MNEMONIC>

Parameters
state
Returns

Definition at line 353 of file lexer.c.

◆ skipCompoundProgramHeader()

int skipCompoundProgramHeader ( lex_state_t * state)
static

Skip compound program header :<PROGRAM MNEMONIC>:<PROGRAM MNEMONIC>...

Parameters
state
Returns

Definition at line 375 of file lexer.c.

◆ skipDigit()

int skipDigit ( lex_state_t * state)
static

Skip decimal digit

Parameters
state
Returns

Definition at line 191 of file lexer.c.

◆ skipDoubleQuoteProgramData()

void skipDoubleQuoteProgramData ( lex_state_t * state)
static

Definition at line 651 of file lexer.c.

◆ skipExponent()

int skipExponent ( lex_state_t * state)
static

Definition at line 486 of file lexer.c.

◆ skipHexNum()

int skipHexNum ( lex_state_t * state)
static

Definition at line 563 of file lexer.c.

◆ skipMantisa()

int skipMantisa ( lex_state_t * state)
static

Definition at line 472 of file lexer.c.

◆ skipNumbers()

int skipNumbers ( lex_state_t * state)
static

Skip multiple decimal digits

Parameters
state
Returns

Definition at line 205 of file lexer.c.

◆ skipOctNum()

int skipOctNum ( lex_state_t * state)
static

Definition at line 572 of file lexer.c.

◆ skipPlusmn()

int skipPlusmn ( lex_state_t * state)
static

Skip plus or minus

Parameters
state
Returns

Definition at line 219 of file lexer.c.

◆ skipProgramExpression()

void skipProgramExpression ( lex_state_t * state)
static

Definition at line 791 of file lexer.c.

◆ skipProgramMnemonic()

int skipProgramMnemonic ( lex_state_t * state)
static

Skip program mnemonic [a-z][a-z0-9_]*

Parameters
state
Returns

Definition at line 306 of file lexer.c.

◆ skipQuoteProgramData()

void skipQuoteProgramData ( lex_state_t * state,
char quote )
static

Definition at line 633 of file lexer.c.

◆ skipSingleQuoteProgramData()

void skipSingleQuoteProgramData ( lex_state_t * state)
static

Definition at line 655 of file lexer.c.

◆ skipSlashDot()

int skipSlashDot ( lex_state_t * state)
static

Skip slash or dot

Parameters
state
Returns

Definition at line 262 of file lexer.c.

◆ skipStar()

int skipStar ( lex_state_t * state)
static

Skip star

Parameters
state
Returns

Definition at line 276 of file lexer.c.

◆ skipWs()

int skipWs ( lex_state_t * state)
static

Skip all whitespaces

Parameters
state
Returns

Definition at line 170 of file lexer.c.