GithubHelp home page GithubHelp logo

laurence6 / peg.go Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 40 KB

Parser generator using Parsing Expression Grammar

License: GNU General Public License v3.0

Go 100.00%
parser parser-generator parsing-expression-grammar peg

peg.go's Introduction

PEG.go

A parser generator written in Go.

Use Parsing Expression Grammar.

Installation

$ go get github.com/laurence6/PEG.go

Usage

Example

# 1.peg

Generating a Parser

// main.go
package main

import (
	"io"
	"os"
)

import "github.com/laurence6/PEG.go"

func main() {
	var in io.Reader = os.Stdin
	var out io.Writer = os.Stdout

	peg.GenerateParser(in, out)
}
$ go run main.go < 1.peg > 1.go

Using the Parser

Syntax

  • package xxx

    Like package declaration in Go

  • import " "

    import . " "

    import " " " "

    Like import declaration in Go

  • "a \n b"

    Literal string

  • [_a-z0-9]

    Character class

  • .

    Any character

  • (e)

    Grouping

  • e?

    Zero or One

  • e*

    Zero or More

  • e+

    One or More

  • &e

    And-predicate

  • !e

    Not-predicate

  • e1 e2

    Sequence

  • e1 / e2

    Prioritized choice

License

Copyright (C) 2016-2019 Laurence Liu [email protected]

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/.

peg.go's People

Contributors

laurence6 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.