blob: 0997ff64442a0a8f8413496cf04a78a9210cdab0 [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);}
17use {return(REFERENCE);}
Duncan Lauriee335c2e2020-07-29 16:28:43 -070018ref {return(REFERENCE);}
Nico Huber8e1ea522020-06-03 10:20:07 -070019as {return(ASSOCIATION);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020020register {return(REGISTER);}
Duncan Laurie47b7b342020-05-15 15:39:08 -070021fw_config {return(FW_CONFIG_TABLE);}
22field {return(FW_CONFIG_FIELD);}
23option {return(FW_CONFIG_OPTION);}
24probe {return(FW_CONFIG_PROBE);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020025on {yylval.number=1; return(BOOL);}
26off {yylval.number=0; return(BOOL);}
Ronald G. Minnich466ca2c2019-10-22 02:02:24 +000027hidden {yylval.number=3; return(STATUS);}
28mandatory {yylval.number=5; return(STATUS);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020029pci {yylval.number=PCI; return(BUS);}
30ioapic {yylval.number=IOAPIC; return(BUS);}
31pnp {yylval.number=PNP; return(BUS);}
32i2c {yylval.number=I2C; return(BUS);}
33lapic {yylval.number=APIC; return(BUS);}
34cpu_cluster {yylval.number=CPU_CLUSTER; return(BUS);}
35cpu {yylval.number=CPU; return(BUS);}
36domain {yylval.number=DOMAIN; return(BUS);}
37generic {yylval.number=GENERIC; return(BUS);}
38mmio {yylval.number=MMIO; return(BUS);}
39spi {yylval.number=SPI; return(BUS);}
40usb {yylval.number=USB; return(BUS);}
Michael Niewöhnerdbb667a2020-12-11 21:26:02 +010041gpio {yylval.number=GPIO; return(BUS);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020042irq {yylval.number=IRQ; return(RESOURCE);}
43drq {yylval.number=DRQ; return(RESOURCE);}
44io {yylval.number=IO; return(RESOURCE);}
45ioapic_irq {return(IOAPIC_IRQ);}
46inherit {return(INHERIT);}
47subsystemid {return(SUBSYSTEMID);}
48end {return(END);}
49smbios_slot_desc {return(SLOT_DESC);}
Angel Pons437da712021-09-03 16:51:40 +020050smbios_dev_info {return(SMBIOS_DEV_INFO);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020051= {return(EQUALS);}
Tim Wawrzynczak13e240c2021-04-28 14:03:07 -060052\| {return(PIPE);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +0200530x[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
54[0-9.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
55[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
56INT[A-D] {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(PCIINT);}
57\"\"[^\"]+\"\" {yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
58\"[^\"]+\" {yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
59[^ \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 +000060%%