File: const_lex.ul

package info (click to toggle)
pcb-rnd 3.0.6-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 29,624 kB
  • sloc: ansic: 197,571; yacc: 6,153; sh: 5,808; awk: 2,708; makefile: 2,139; lex: 1,107; python: 519; xml: 261; lisp: 169; tcl: 67; perl: 34; javascript: 6; ruby: 5
file content (86 lines) | stat: -rw-r--r-- 2,464 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
prefix pcb_ordc
by_score

top_code
	/*
	 *                            COPYRIGHT
	 *
	 *  pcb-rnd, interactive printed circuit board design
	 *
	 *  order plugin - constraint language lexer
	 *  pcb-rnd Copyright (C) 2022 Tibor 'Igor2' Palinkas
	 *
	 *  This program is free software; you can redistribute it and/or modify
	 *  it under the terms of the GNU General Public License as published by
	 *  the Free Software Foundation; either version 2 of the License, or
	 *  (at your option) any later version.
	 *
	 *  This program is distributed in the hope that it will be useful,
	 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
	 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	 *  GNU General Public License for more details.
	 *
	 *  You should have received a copy of the GNU General Public License
	 *  along with this program; if not, write to the Free Software
	 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
	 *
	 *  Contact:
	 *    Project page: http://repo.hu/projects/pcb-rnd
	 *    lead developer: http://repo.hu/projects/pcb-rnd/contact.html
	 *    mailing list: pcb-rnd (at) list.repo.hu (send "subscribe")
	 */
	#include <stdlib.h>
	#include <string.h>
	#include <librnd/core/compat_misc.h>
	#include "../src_plugins/order/const_gram.h"
	#define lval  ((pcb_ordc_STYPE *)(user_ctx))

rule integer
regex [-]?[0-9]+
code
	lval->un.i = atoi(ULX_BUF);
	return T_CINT;

rule real
regex [-]?[0-9]*[.][0-9Ee+-]*
code
	lval->un.d = strtod(ULX_BUF, NULL);
	return T_CFLOAT;

rule id
regex [a-zA-Z][a-zA-Z0-9_-]*
code
	lval->un.s = rnd_strdup(ULX_BUF);
	return T_ID;

rule quoted string
regex "\([^"]*\)"
code
	lval->un.s = rnd_strndup(ULX_TAGP(1), ULX_TAGL(1));
	return T_QSTR;

rule chars
regex [(){}$,*/+%;-]
code
	return *ULX_BUF;

rule blank
regex [ \t\n\r]+
code
	ULX_IGNORE;

rulestring ==                return T_EQ;
rulestring !=                return T_NEQ;
rulestring >=                return T_GE;
rulestring <=                return T_LE;
rulestring >                 return T_GT;
rulestring <                 return T_LT;
rulestring !                 return T_NOT;
rulestring &&                return T_AND;
rulestring ||                return T_OR;

rulestring if                return T_IF;
rulestring error             return T_ERROR;
rulestring string            return T_STRING;
rulestring int               return T_INT;
rulestring float             return T_FLOAT;