Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3307990
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 17, 20262026-05-17T21:28:13+00:00 2026-05-17T21:28:13+00:00

I’m trying to create ANTLR parser for Lua. So i took grammar produced by

  • 0

I’m trying to create ANTLR parser for Lua. So i took grammar produced by Nicolai Mainero(available at ANTLR’s site, Lua 5.1 grammar) and begin to work.

Grammar is good. One thing not working: LONG STRINGS.

Lua specification rule: Literal

strings can also be defined using a
long format enclosed by long brackets.
We define an opening long bracket of
level n as an opening square bracket
followed by n equal signs followed by
another opening square bracket. So, an
opening long bracket of level 0 is
written as [[, an opening long bracket
of level 1 is written as [=[, and so
on. A closing long bracket is defined
similarly; for instance, a closing
long bracket of level 4 is written as
]====]. A long string starts with an
opening long bracket of any level and
ends at the first closing long bracket
of the same level. Literals in this
bracketed form can run for several
lines, do not interpret any escape
sequences, and ignore long brackets of
any other level. They can contain
anything except a closing bracket of
the proper level.the proper level.

My question is close by meaning to this but tools are different.

Some little example of LONGSTRING:

local a = [==[ Some interesting string [=[ sub string in string ]=] [hello indexes] [[And some line strings]] ]==] - its correct string. 
local f = [==[ Not interesting string ]=] - incorrect string

Here my rule for LONGSTRING with out ‘=’ symbol:

LONGSTRING: '[[' (~(']') | ']'(~(']')))* ']]';

Can somebody help me? Thanks!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-17T21:28:13+00:00Added an answer on May 17, 2026 at 9:28 pm

    I once wrote a Lua grammar according the specs and solved it like this:

    grammar Lua;
    
    // ... options ...
    
    // ... tokens ...
    
    @lexer::members {
        public boolean noCloseAhead(int numEqSigns) {
            if(input.LA(1) != ']') return true;
            for(int i = 2; i < numEqSigns+2; i++) {
                if(input.LA(i) != '=') return true;
            }
            return input.LA(numEqSigns+2) != ']';
        }
    
        public void matchClose(int numEqSigns) throws MismatchedTokenException {
            StringBuilder eqSigns = new StringBuilder();
            for(int i = 0; i < numEqSigns; i++) {
                eqSigns.append('=');
            }
            match("]"+eqSigns+"]");
        }
    }
    
    // ... parser rules ...
    
    String
      :  '"'  (~('"'  | '\\') | EscapeSequence)* '"'
      |  '\'' (~('\'' | '\\') | EscapeSequence)* '\''
      |  LongBracket
      ;
    
    Comment
      :  (BlockComment | LineComment) {skip();}
      ;
    
    fragment
    BlockComment
      :  '--' LongBracket 
      ;
    
    fragment
    LineComment
      :  '--' ~('\r' | '\n')* ('\r'? '\n' | EOF) 
      ;
    
    fragment
    LongBracket
    @init {int openEq = 0;}
      :  '[' ('=' {openEq++;})* '[' ({noCloseAhead(openEq)}?=> .)* {matchClose(openEq);}
      ;
    
    // ... more lexer rules ...
    

    Be careful with what you find on the ANTLR Wiki! As the name suggests: it’s a Wiki and one can post stuff fairly easy. The Lua grammar you mention is a nice start, but has quite a bit of errors in it (binary or hex literals are incorrect as well, at least, at the time I looked at it…).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Basically, what I'm trying to create is a page of div tags, each has
I am trying to understand how to use SyndicationItem to display feed which is
I'm trying to decode HTML entries from here NYTimes.com and I cannot figure out
link Im having trouble converting the html entites into html characters, (&# 8217;) i
I am trying to loop through a bunch of documents I have to put
I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this
I have this code: - (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock { NSString *someString = [[NSString
I'm new to using the Perl treebuilder module for HTML parsing and can't figure
Seemingly simple, but I cannot find anything relevant on the web. What is the
Does anyone know how can I replace this 2 symbol below from the string

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.