Skip to content

Latest commit

 

History

History
47 lines (32 loc) · 972 Bytes

chars.md

File metadata and controls

47 lines (32 loc) · 972 Bytes
layout title
default
Character classes

Character classes

Character classes work just like their counterparts from regular expressions, in fact they literally get compiled into identical regexes in the parser.

For example, this grammar matches a single alphanumeric character:

alphanum.peg
grammar Alphanum
  root  <-  [A-Za-z0-9]

This will parse any character matched by the class, and no others:

require('./alphanum').parse('a')
   == { text: 'a', offset: 0, elements: [] }

require('./alphanum').parse('7')
   == { text: '7', offset: 0, elements: [] }

require('./alphanum').parse('!')
SyntaxError: Line 1: expected one of:

    - [A-Za-z0-9] from Alphanum::root

     1 | !
         ^

There is a special character class denoted by . (period). This matches any character.

anything.peg
grammar Anything
  root  <-  .
require('./anything').parse('a')
   == { text: 'a', offset: 0, elements: [] }