proton
0
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
proton-c
include
proton
scanner.h
Go to the documentation of this file.
1
#ifndef PROTON_SCANNER_H
2
#define PROTON_SCANNER_H 1
3
4
/*
5
*
6
* Licensed to the Apache Software Foundation (ASF) under one
7
* or more contributor license agreements. See the NOTICE file
8
* distributed with this work for additional information
9
* regarding copyright ownership. The ASF licenses this file
10
* to you under the Apache License, Version 2.0 (the
11
* "License"); you may not use this file except in compliance
12
* with the License. You may obtain a copy of the License at
13
*
14
* http://www.apache.org/licenses/LICENSE-2.0
15
*
16
* Unless required by applicable law or agreed to in writing,
17
* software distributed under the License is distributed on an
18
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19
* KIND, either express or implied. See the License for the
20
* specific language governing permissions and limitations
21
* under the License.
22
*
23
*/
24
25
#include <
proton/import_export.h
>
26
#include <sys/types.h>
27
#include <stdarg.h>
28
29
#ifdef __cplusplus
30
extern
"C"
{
31
#endif
32
33
typedef
enum
{
34
PN_TOK_LBRACE
,
35
PN_TOK_RBRACE
,
36
PN_TOK_LBRACKET
,
37
PN_TOK_RBRACKET
,
38
PN_TOK_EQUAL
,
39
PN_TOK_COMMA
,
40
PN_TOK_POS
,
41
PN_TOK_NEG
,
42
PN_TOK_DOT
,
43
PN_TOK_AT
,
44
PN_TOK_DOLLAR
,
45
PN_TOK_BINARY
,
46
PN_TOK_STRING
,
47
PN_TOK_SYMBOL
,
48
PN_TOK_ID
,
49
PN_TOK_FLOAT
,
50
PN_TOK_INT
,
51
PN_TOK_TRUE
,
52
PN_TOK_FALSE
,
53
PN_TOK_NULL
,
54
PN_TOK_EOS
,
55
PN_TOK_ERR
56
}
pn_token_type_t
;
57
58
typedef
struct
pn_scanner_t
pn_scanner_t
;
59
60
typedef
struct
{
61
pn_token_type_t
type
;
62
const
char
*
start
;
63
size_t
size
;
64
}
pn_token_t
;
65
66
PN_EXTERN
pn_scanner_t
*
pn_scanner
(
void
);
67
PN_EXTERN
void
pn_scanner_free
(
pn_scanner_t
*scanner);
68
PN_EXTERN
pn_token_t
pn_scanner_token
(
pn_scanner_t
*scanner);
69
PN_EXTERN
int
pn_scanner_err
(
pn_scanner_t
*scanner,
int
code,
const
char
*fmt, ...);
70
PN_EXTERN
int
pn_scanner_verr
(
pn_scanner_t
*scanner,
int
code,
const
char
*fmt, va_list ap);
71
PN_EXTERN
void
pn_scanner_line_info
(
pn_scanner_t
*scanner,
int
*line,
int
*col);
72
PN_EXTERN
int
pn_scanner_errno
(
pn_scanner_t
*scanner);
73
PN_EXTERN
const
char
*
pn_scanner_error
(
pn_scanner_t
*scanner);
74
PN_EXTERN
int
pn_scanner_start
(
pn_scanner_t
*scanner,
const
char
*input);
75
PN_EXTERN
int
pn_scanner_scan
(
pn_scanner_t
*scanner);
76
PN_EXTERN
int
pn_scanner_shift
(
pn_scanner_t
*scanner);
77
78
#ifdef __cplusplus
79
}
80
#endif
81
82
#endif
/* scanner.h */
Generated on Mon Jun 2 2014 22:59:05 for proton by
1.8.1.2