blob: 4b880cf78e237cc184eb5fa93f925a9f41b69ba8 [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);}
Nico Huber8e1ea522020-06-03 10:20:07 -070016alias {return(ALIAS);}
Nico Huberc0fc38e2022-08-06 19:02:59 +020017ops {return(OPS);}
Nico Huber8e1ea522020-06-03 10:20:07 -070018use {return(REFERENCE);}
Duncan Lauriee335c2e2020-07-29 16:28:43 -070019ref {return(REFERENCE);}
Nico Huber8e1ea522020-06-03 10:20:07 -070020as {return(ASSOCIATION);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020021register {return(REGISTER);}
Duncan Laurie47b7b342020-05-15 15:39:08 -070022fw_config {return(FW_CONFIG_TABLE);}
23field {return(FW_CONFIG_FIELD);}
24option {return(FW_CONFIG_OPTION);}
25probe {return(FW_CONFIG_PROBE);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020026on {yylval.number=1; return(BOOL);}
27off {yylval.number=0; return(BOOL);}
Ronald G. Minnich466ca2c2019-10-22 02:02:24 +000028hidden {yylval.number=3; return(STATUS);}
29mandatory {yylval.number=5; return(STATUS);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020030pci {yylval.number=PCI; return(BUS);}
31ioapic {yylval.number=IOAPIC; return(BUS);}
32pnp {yylval.number=PNP; return(BUS);}
33i2c {yylval.number=I2C; return(BUS);}
34lapic {yylval.number=APIC; return(BUS);}
35cpu_cluster {yylval.number=CPU_CLUSTER; return(BUS);}
36cpu {yylval.number=CPU; return(BUS);}
37domain {yylval.number=DOMAIN; return(BUS);}
38generic {yylval.number=GENERIC; return(BUS);}
39mmio {yylval.number=MMIO; return(BUS);}
40spi {yylval.number=SPI; return(BUS);}
41usb {yylval.number=USB; return(BUS);}
Michael Niewöhnerdbb667a2020-12-11 21:26:02 +010042gpio {yylval.number=GPIO; return(BUS);}
Mario Scheithauer67f63e72022-11-02 15:57:10 +010043mdio {yylval.number=MDIO; return(BUS);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020044irq {yylval.number=IRQ; return(RESOURCE);}
45drq {yylval.number=DRQ; return(RESOURCE);}
46io {yylval.number=IO; return(RESOURCE);}
47ioapic_irq {return(IOAPIC_IRQ);}
48inherit {return(INHERIT);}
49subsystemid {return(SUBSYSTEMID);}
50end {return(END);}
51smbios_slot_desc {return(SLOT_DESC);}
Angel Pons437da712021-09-03 16:51:40 +020052smbios_dev_info {return(SMBIOS_DEV_INFO);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020053= {return(EQUALS);}
Tim Wawrzynczak13e240c2021-04-28 14:03:07 -060054\| {return(PIPE);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +0200550x[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
56[0-9.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
57[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
58INT[A-D] {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(PCIINT);}
59\"\"[^\"]+\"\" {yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
60\"[^\"]+\" {yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
61[^ \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 +000062%%