1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /*
- * Copyright t lefering
- *
- * 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 3 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, see <http://www.gnu.org/licenses/>.
- *
- * These are the four essential freedoms with GNU GPL software:
- * 1: freedom to run the program, for any purpose
- * 2: freedom to study how the program works, and change it to make it do what you wish
- * 3: freedom to redistribute copies to help your Free Software friends
- * 4: freedom to distribute copies of your modified versions to your Free Software friends
- * , ,
- * / \
- * ((__-^^-,-^^-__))
- * `-_---' `---_-'
- * `--|o` 'o|--'
- * \ ` /
- * ): :(
- * :o_o:
- * "-"
- *
- * SPDX-License-Identifier: GPL-3.0+
- * License-Filename: LICENSE
- */
- file = _ head _ id _ list _
- head = (pair)*
- list = "[" _ some_items* _ "]" _
- some_items = id list2 / pair
- list2 = _ "[" _ some_items* _ "]" _
- pair = (id string) / (id id) / (id fpnum) / (id digit)
- digit = (("-"[0-9]+ _ ) / ("+"[0-9]+ _ ) / ([0-9]+ _ ))
- fpnum = (("-"[0-9]*["."][0-9]* _ ) / ("+"[0-9]*["."][0-9]* _ ) / ([0-9]*["."][0-9]* _ ))
- id = [a-zA-Z_]+[a-zA-Z_0-9]* _
- string = '"' char* '"' _
- char =
- "\\" "\""
- / "\\" "\\"
- / "\\" "b"
- / "\\" "f"
- / "\\" "n"
- / "\\" "r"
- / "\\" "t"
- / (!"\"" .)
- _ = (space / comment / endofline)*
- space = (" " / "\t" / endofline)
- comment = "#" (!endofline .)*
- endofline = ( "\r\n" / "\n" / "\r" / "\n\r" )
|