blob: f18fb0e63796f1d79d363cb98c0bc497b212fea7 [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);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020034cpu_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);}
Mario Scheithauer67f63e72022-11-02 15:57:10 +010042mdio {yylval.number=MDIO; return(BUS);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020043irq {yylval.number=IRQ; return(RESOURCE);}
44drq {yylval.number=DRQ; return(RESOURCE);}
45io {yylval.number=IO; return(RESOURCE);}
46ioapic_irq {return(IOAPIC_IRQ);}
47inherit {return(INHERIT);}
48subsystemid {return(SUBSYSTEMID);}
49end {return(END);}
50smbios_slot_desc {return(SLOT_DESC);}
Angel Pons437da712021-09-03 16:51:40 +020051smbios_dev_info {return(SMBIOS_DEV_INFO);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020052= {return(EQUALS);}
Tim Wawrzynczak13e240c2021-04-28 14:03:07 -060053\| {return(PIPE);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +0200540x[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
55[0-9.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
56[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
57INT[A-D] {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(PCIINT);}
58\"\"[^\"]+\"\" {yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
59\"[^\"]+\" {yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
60[^ \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 +000061%%