blob: 5ac5057e2338fc9f36f31a49c5e4a29332b0fab3 [file] [log] [blame]
Patrick Georgi7e8c9aa2010-04-08 11:37:43 +00001%{
Patrick Georgiea063cb2020-05-08 19:28:13 +02002/* sconfig, coreboot device tree compiler */
Patrick Georgi7333a112020-05-08 20:48:04 +02003/* SPDX-License-Identifier: GPL-2.0-only */
Patrick Georgi7e8c9aa2010-04-08 11:37:43 +00004
5#include "sconfig.tab.h"
6
7int linenum = 0;
8%}
9%option nodebug
10%%
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020011[ \t]+ {}
12#.*\n {linenum++;}
13\r?\n {linenum++;}
14chip {return(CHIP);}
15device {return(DEVICE);}
16register {return(REGISTER);}
17on {yylval.number=1; return(BOOL);}
18off {yylval.number=0; return(BOOL);}
Ronald G. Minnich466ca2c2019-10-22 02:02:24 +000019hidden {yylval.number=3; return(STATUS);}
20mandatory {yylval.number=5; return(STATUS);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020021pci {yylval.number=PCI; return(BUS);}
22ioapic {yylval.number=IOAPIC; return(BUS);}
23pnp {yylval.number=PNP; return(BUS);}
24i2c {yylval.number=I2C; return(BUS);}
25lapic {yylval.number=APIC; return(BUS);}
26cpu_cluster {yylval.number=CPU_CLUSTER; return(BUS);}
27cpu {yylval.number=CPU; return(BUS);}
28domain {yylval.number=DOMAIN; return(BUS);}
29generic {yylval.number=GENERIC; return(BUS);}
30mmio {yylval.number=MMIO; return(BUS);}
31spi {yylval.number=SPI; return(BUS);}
32usb {yylval.number=USB; return(BUS);}
Raul E Rangel3f3f53c2020-05-06 11:47:04 -060033lpc {yylval.number=LPC; return(BUS);}
34espi {yylval.number=ESPI; return(BUS);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020035irq {yylval.number=IRQ; return(RESOURCE);}
36drq {yylval.number=DRQ; return(RESOURCE);}
37io {yylval.number=IO; return(RESOURCE);}
38ioapic_irq {return(IOAPIC_IRQ);}
39inherit {return(INHERIT);}
40subsystemid {return(SUBSYSTEMID);}
41end {return(END);}
42smbios_slot_desc {return(SLOT_DESC);}
43= {return(EQUALS);}
440x[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
45[0-9.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
46[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
47INT[A-D] {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(PCIINT);}
48\"\"[^\"]+\"\" {yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
49\"[^\"]+\" {yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
50[^ \n\t]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(STRING);}
Patrick Georgi7e8c9aa2010-04-08 11:37:43 +000051%%